Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions spec/rails_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
abort('The Rails environment is running in production mode!') if Rails.env.production?
require 'rspec/rails'
# Add additional requires below this line. Rails is not loaded until this point!
require_relative 'support/api_helpers'

require 'simplecov'
require 'simplecov-cobertura'
Expand Down Expand Up @@ -67,6 +68,7 @@
config.include GraphitiSpecHelpers::RSpec
config.include GraphitiSpecHelpers::Sugar
config.include Graphiti::Rails::TestHelpers
config.include ApiHelpers, type: :request

# You can uncomment this line to turn off ActiveRecord support entirely.
# config.use_active_record = false
Expand All @@ -86,6 +88,17 @@
# https://relishapp.com/rspec/rspec-rails/docs
config.infer_spec_type_from_file_location!

config.before(:each, type: :request) do
original_env_config = Rails.application.method(:env_config)
allow(Rails.application).to receive(:env_config) do
original_env_config.call.merge(
'action_dispatch.show_exceptions' => :all,
'action_dispatch.show_detailed_exceptions' => false,
'consider_all_requests_local' => false
)
end
end

# Filter lines from Rails gems in backtraces.
config.filter_rails_from_backtrace!
# arbitrary gems may also be filtered via:
Expand Down
39 changes: 39 additions & 0 deletions spec/requests/api/v3/public/card_cycles_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Card Cycles' do
let!(:card_cycle) { CardCycle.find('borealis') }

describe 'GET /api/v3/public/card_cycles' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/card_cycles', CardCycle.count)
has_stats_total_count(json, CardCycle.count)
end
end

describe 'GET /api/v3/public/card_cycles/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/card_cycles/#{card_cycle.id}",
card_cycle.id,
name: card_cycle.name,
position: card_cycle.position
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/card_cycles/#{card_cycle.id}",
card_pools: '/api/v3/public/card_pools',
card_sets: '/api/v3/public/card_sets',
cards: '/api/v3/public/cards',
printings: '/api/v3/public/printings'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/card_cycles/non-existent')
end
end
end
41 changes: 41 additions & 0 deletions spec/requests/api/v3/public/card_pools_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Card Pools' do
let!(:card_pool) { CardPool.find('standard_02') }

describe 'GET /api/v3/public/card_pools' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/card_pools', CardPool.count)
has_stats_total_count(json, CardPool.count)
end
end

describe 'GET /api/v3/public/card_pools/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/card_pools/#{card_pool.id}",
card_pool.id,
name: card_pool.name,
format_id: card_pool.format_id
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/card_pools/#{card_pool.id}",
card_cycles: '/api/v3/public/card_cycles',
card_sets: '/api/v3/public/card_sets',
cards: '/api/v3/public/cards',
format: '/api/v3/public/formats',
printings: '/api/v3/public/printings',
snapshots: '/api/v3/public/snapshots'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/card_pools/non-existent')
end
end
end
36 changes: 36 additions & 0 deletions spec/requests/api/v3/public/card_set_types_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Card Set Types' do
let!(:card_set_type) { CardSetType.find('booster_pack') }

describe 'GET /api/v3/public/card_set_types' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/card_set_types', CardSetType.count)
has_stats_total_count(json, CardSetType.count)
end
end

describe 'GET /api/v3/public/card_set_types/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/card_set_types/#{card_set_type.id}",
card_set_type.id,
name: card_set_type.name,
description: card_set_type.description
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/card_set_types/#{card_set_type.id}",
card_sets: '/api/v3/public/card_sets'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/card_set_types/non-existent')
end
end
end
41 changes: 41 additions & 0 deletions spec/requests/api/v3/public/card_sets_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Card Sets' do
let!(:card_set) { CardSet.find('midnight_sun') }

describe 'GET /api/v3/public/card_sets' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/card_sets', CardSet.count)
has_stats_total_count(json, CardSet.count)
end
end

describe 'GET /api/v3/public/card_sets/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/card_sets/#{card_set.id}",
card_set.id,
name: card_set.name,
card_cycle_id: card_set.card_cycle_id,
card_set_type_id: card_set.card_set_type_id
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/card_sets/#{card_set.id}",
card_cycle: '/api/v3/public/card_cycles',
card_pools: '/api/v3/public/card_pools',
card_set_type: '/api/v3/public/card_set_types',
cards: '/api/v3/public/cards',
printings: '/api/v3/public/printings'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/card_sets/non-existent')
end
end
end
36 changes: 36 additions & 0 deletions spec/requests/api/v3/public/card_subtypes_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Card Subtypes' do
let!(:card_subtype) { CardSubtype.find('advertisement') }

describe 'GET /api/v3/public/card_subtypes' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/card_subtypes', CardSubtype.count)
has_stats_total_count(json, CardSubtype.count)
end
end

describe 'GET /api/v3/public/card_subtypes/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/card_subtypes/#{card_subtype.id}",
card_subtype.id,
name: card_subtype.name
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/card_subtypes/#{card_subtype.id}",
cards: '/api/v3/public/cards',
printings: '/api/v3/public/printings'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/card_subtypes/non-existent')
end
end
end
37 changes: 37 additions & 0 deletions spec/requests/api/v3/public/card_types_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Card Types' do
let!(:card_type) { CardType.find('agenda') }

describe 'GET /api/v3/public/card_types' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/card_types', CardType.count)
has_stats_total_count(json, CardType.count)
end
end

describe 'GET /api/v3/public/card_types/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/card_types/#{card_type.id}",
card_type.id,
name: card_type.name
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/card_types/#{card_type.id}",
cards: '/api/v3/public/cards',
printings: '/api/v3/public/printings',
side: '/api/v3/public/sides'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/card_types/non-existent')
end
end
end
47 changes: 47 additions & 0 deletions spec/requests/api/v3/public/cards_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Cards' do
let!(:card) { Card.find('legwork') }

describe 'GET /api/v3/public/cards' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/cards', Card.count)
has_stats_total_count(json, Card.count)
end
end

describe 'GET /api/v3/public/cards/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/cards/#{card.id}",
card.id,
title: card.title,
side_id: card.side_id,
faction_id: card.faction_id
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/cards/#{card.id}",
card_cycles: '/api/v3/public/card_cycles',
card_pools: '/api/v3/public/card_pools',
card_sets: '/api/v3/public/card_sets',
card_subtypes: '/api/v3/public/card_subtypes',
card_type: '/api/v3/public/card_types',
decklists: '/api/v3/public/decklists',
faction: '/api/v3/public/factions',
printings: '/api/v3/public/printings',
reviews: '/api/v3/public/reviews',
rulings: '/api/v3/public/rulings',
side: '/api/v3/public/sides'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/cards/non-existent')
end
end
end
38 changes: 38 additions & 0 deletions spec/requests/api/v3/public/decklists_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Decklists' do
let!(:decklist) { Decklist.find('11111111-1111-1111-1111-111111111111') }

describe 'GET /api/v3/public/decklists' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/decklists', Decklist.count)
has_stats_total_count(json, Decklist.count)
end
end

describe 'GET /api/v3/public/decklists/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/decklists/#{decklist.id}",
decklist.id,
name: decklist.name,
side_id: decklist.side_id
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/decklists/#{decklist.id}",
cards: '/api/v3/public/cards',
faction: '/api/v3/public/factions',
side: '/api/v3/public/sides'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/decklists/00000000-0000-0000-0000-000000000000')
end
end
end
39 changes: 39 additions & 0 deletions spec/requests/api/v3/public/factions_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe 'Public API Factions' do
let!(:faction) { Faction.find('haas_bioroid') }

describe 'GET /api/v3/public/factions' do
it 'returns a successful 200 response with correct count' do
json = api_num_results('/api/v3/public/factions', Faction.count)
has_stats_total_count(json, Faction.count)
end
end

describe 'GET /api/v3/public/factions/:id' do
it 'matches existing record' do
matches_record(
"/api/v3/public/factions/#{faction.id}",
faction.id,
name: faction.name,
side_id: faction.side_id
)
end

it 'has expected relationships' do
has_relationships(
"/api/v3/public/factions/#{faction.id}",
cards: '/api/v3/public/cards',
decklists: '/api/v3/public/decklists',
printings: '/api/v3/public/printings',
side: '/api/v3/public/sides'
)
end

it 'does not match missing record' do
missing_record('/api/v3/public/factions/non-existent')
end
end
end
Loading
Loading