VRFS-3036 tuning band search filter spec
This commit is contained in:
parent
f66cf79cf2
commit
8480f582ad
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue