From f4e7251642a8e51b4dabb9a9ebb8767a297d2587 Mon Sep 17 00:00:00 2001 From: Miguel de los Reyes Date: Sat, 26 Jul 2025 17:17:34 -0400 Subject: [PATCH 1/3] Fix decklist filtering error --- app/controllers/decklists_controller.rb | 2 +- .../resources/decklist_resource_reads_spec.rb | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/controllers/decklists_controller.rb b/app/controllers/decklists_controller.rb index 6c6dc59..d47b22e 100644 --- a/app/controllers/decklists_controller.rb +++ b/app/controllers/decklists_controller.rb @@ -4,7 +4,7 @@ class DecklistsController < ApplicationController def index add_total_stat(params) - base_scope = Decklist.includes(:identity_card, :cards) + base_scope = Decklist.preload(:identity_card, :cards) decklists = DecklistResource.all(params, base_scope) respond_with(decklists) end diff --git a/spec/resources/decklist_resource_reads_spec.rb b/spec/resources/decklist_resource_reads_spec.rb index bbf115f..2b5ee9a 100644 --- a/spec/resources/decklist_resource_reads_spec.rb +++ b/spec/resources/decklist_resource_reads_spec.rb @@ -43,6 +43,26 @@ end end + context 'with card_id and faction_id combined' do + it 'returns a result with matching card_id and faction_id' do + params[:filter] = { card_id: { eq: 'pennyshaver' }, faction_id: { eq: 'criminal' } } + render + expect(d.size).to eq(1) + end + + it 'returns no results when card_id does not match' do + params[:filter] = { card_id: { eq: 'pennyshaver' }, faction_id: { eq: 'shaper' } } + render + expect(d.size).to eq(0) + end + + it 'returns a result with matching exclude_card_id and faction_id' do + params[:filter] = { exclude_card_id: { eq: 'pennyshaver' }, faction_id: { eq: 'shaper' } } + render + expect(d.size).to eq(1) + end + end + context 'with exclude_card_id' do let!(:corp_decklist) { Decklist.find('11111111-1111-1111-1111-111111111111') } let!(:runner_decklist) { Decklist.find('22222222-2222-2222-2222-222222222222') } @@ -76,7 +96,6 @@ expect(decklist_ids).to include(runner_decklist.id) end end - end describe 'sideloading' do def check_included_for_id(decklist_id, include_value, resource_type, id) From b87e4d914cb7894a94e4efbbb85d192383ab6ec2 Mon Sep 17 00:00:00 2001 From: Miguel de los Reyes Date: Sat, 26 Jul 2025 17:20:49 -0400 Subject: [PATCH 2/3] Re-add missing end --- spec/resources/decklist_resource_reads_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/resources/decklist_resource_reads_spec.rb b/spec/resources/decklist_resource_reads_spec.rb index 2b5ee9a..61fa1ec 100644 --- a/spec/resources/decklist_resource_reads_spec.rb +++ b/spec/resources/decklist_resource_reads_spec.rb @@ -96,6 +96,7 @@ expect(decklist_ids).to include(runner_decklist.id) end end + end describe 'sideloading' do def check_included_for_id(decklist_id, include_value, resource_type, id) From bcee2727f79ee2643140b2c92330638014886da3 Mon Sep 17 00:00:00 2001 From: Miguel de los Reyes Date: Sat, 26 Jul 2025 17:23:38 -0400 Subject: [PATCH 3/3] Fix tests --- spec/resources/decklist_resource_reads_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/resources/decklist_resource_reads_spec.rb b/spec/resources/decklist_resource_reads_spec.rb index 61fa1ec..53fd0c7 100644 --- a/spec/resources/decklist_resource_reads_spec.rb +++ b/spec/resources/decklist_resource_reads_spec.rb @@ -50,14 +50,14 @@ expect(d.size).to eq(1) end - it 'returns no results when card_id does not match' do + it 'returns no results when faction_id does not match' do params[:filter] = { card_id: { eq: 'pennyshaver' }, faction_id: { eq: 'shaper' } } render expect(d.size).to eq(0) end it 'returns a result with matching exclude_card_id and faction_id' do - params[:filter] = { exclude_card_id: { eq: 'pennyshaver' }, faction_id: { eq: 'shaper' } } + params[:filter] = { exclude_card_id: { eq: 'hermes' }, faction_id: { eq: 'criminal' } } render expect(d.size).to eq(1) end