VRFS-3036 tuning band search filter spec

This commit is contained in:
Jonathan Kolyer 2015-05-27 05:08:56 +00:00
parent f66cf79cf2
commit 8480f582ad
2 changed files with 25 additions and 10 deletions

View File

@ -10,7 +10,7 @@ module JamRuby
KEY_BAND_STATUS = 'band_status'
KEY_PLAY_COMMIT = 'play_commitment'
KEY_TOUR_OPTION = 'touring_option'
KEY_PERF_SAMPLES = 'perform_samples'
KEY_PERF_SAMPLES = 'performance_samples'
KEY_HIRE_MAX_COST = 'max_cost'
KEY_HIRE_FREE = 'free_gigs'
@ -162,8 +162,15 @@ module JamRuby
end
end
def _perform_samples(rel, filter)
rel
def _performance_samples(rel, filter)
case filter[KEY_PERF_SAMPLES]
when VAL_YES
rel.joins("LEFT OUTER JOIN performance_samples AS ps ON ps.player_id = bands.id AND player_type = '#{self.class.name}'").where(["ps.id IS NOT NULL"])
when VAL_NO
rel.joins("LEFT OUTER JOIN performance_samples AS ps ON ps.player_id = bands.id AND player_type = '#{self.class.name}'").where(["ps.id IS NULL"])
else
rel
end
end
def _max_cost(rel, filter)

View File

@ -55,8 +55,10 @@ describe 'Band Search Model' do
let!(:band) { Band.first }
context 'all search keys' do
let!(:filter) { to_join }
it "filters by gigs" do
filter = to_join
band.update_attribute(:concert_count, BandSearch::GIG_COUNTS[2])
filter[BandSearch::KEY_GIGS] = BandSearch::GIG_COUNTS[2]
search.search_results_page(BandSearch::TO_JOIN, filter)
@ -64,7 +66,6 @@ describe 'Band Search Model' do
expect(search.results[0].id).to eq(band.id)
end
it "filters by genre" do
filter = to_join
band_id = band.id
filter[BandSearch::KEY_GENRES] = [band_id]
search.search_results_page(BandSearch::TO_JOIN, filter)
@ -72,7 +73,6 @@ describe 'Band Search Model' do
end
it "filters by skill level" do
filter = to_join
band.update_attribute(:band_type, BandSearch::SKILL_VAL_STRS[1])
filter[BandSearch::KEY_SKILL] = BandSearch::SKILL_VAL_STRS[1]
search.search_results_page(BandSearch::TO_JOIN, filter)
@ -81,7 +81,6 @@ describe 'Band Search Model' do
end
it "filters by instruments" do
filter = to_join
minst = FactoryGirl.create(:musician_instrument)
band.musician_instruments << minst
band.save
@ -125,7 +124,7 @@ describe 'Band Search Model' do
it "filters by free gigs" do
band.update_attribute(BandSearch::KEY_HIRE_FREE, true)
filter[BandSearch::KEY_HIRE_FREE] = BandSearch::VAL_YES
search.search_results_page(BandSearch::TO_JOIN, filter)
search.search_results_page(BandSearch::TO_HIRE, filter)
expect(search.results.count).to eq(1)
expect(search.results[0].id).to eq(band.id)
end
@ -133,14 +132,23 @@ describe 'Band Search Model' do
it "filters by max cost" do
band.update_attribute(:gig_minimum, 10)
filter[BandSearch::KEY_HIRE_MAX_COST] = 5
search.search_results_page(BandSearch::TO_JOIN, filter)
search.search_results_page(BandSearch::TO_HIRE, filter)
expect(search.results.count).to eq(0)
filter[BandSearch::KEY_HIRE_MAX_COST] = 15
search.search_results_page(BandSearch::TO_JOIN, filter)
search.search_results_page(BandSearch::TO_HIRE, filter)
expect(search.results.count).to eq(1)
end
it "filters by perform samples" do
pending
PerformanceSample.create(searcher, {player: band, service_type: 'youtube', service_id: 'abc123'})
filter[BandSearch::KEY_PERF_SAMPLES] = BandSearch::VAL_YES
search.search_results_page(BandSearch::TO_HIRE, filter)
expect(search.results.count).to eq(1)
expect(search.results[0].id).to eq(band.id)
end
end
end