86 lines
2.3 KiB
Ruby
86 lines
2.3 KiB
Ruby
require 'spec_helper'
|
|
require 'time_difference'
|
|
require 'byebug'
|
|
|
|
describe 'Musician Search Model' do
|
|
let!(:searcher) { FactoryGirl.create(:austin_user) }
|
|
let!(:search) { MusicianSearch.create_search(searcher) }
|
|
|
|
before(:all) do
|
|
User.delete_all
|
|
@users = []
|
|
today = Date.today
|
|
MusicianSearch::AGE_COUNTS.each_with_index do |age, idx|
|
|
age = 0==idx ? MusicianSearch::AGE_COUNTS[1] : age
|
|
dd = today - age.years - 1.day
|
|
@users << FactoryGirl.create(:austin_user, :birth_date => dd)
|
|
@users << FactoryGirl.create(:dallas_user, :birth_date => dd)
|
|
@users << FactoryGirl.create(:miami_user, :birth_date => dd)
|
|
@users << FactoryGirl.create(:seattle_user, :birth_date => dd)
|
|
end
|
|
end
|
|
|
|
describe "creates search obj" do
|
|
it "associates to user" do
|
|
expect(search.user).to eq(searcher)
|
|
searcher.reload
|
|
expect(searcher.musician_search).to eq(search)
|
|
end
|
|
|
|
it "sets json" do
|
|
search.update_json_value(MusicianSearch::KEY_GIG, MusicianSearch::GIG_COUNTS[1])
|
|
expect(search.json[MusicianSearch::KEY_GIG]).to eq(MusicianSearch::GIG_COUNTS[1])
|
|
end
|
|
end
|
|
|
|
describe "filtering criteria" do
|
|
|
|
it "filters musicians" do
|
|
expect(search.do_search(per_page: User.musicians.count).count).to eq(User.musicians.count)
|
|
end
|
|
|
|
it "filters ages" do
|
|
age = MusicianSearch::AGE_COUNTS[1]
|
|
search.update_json_value(MusicianSearch::KEY_AGES, [age])
|
|
today = Date.today.to_time
|
|
search.do_search.all.each do |uu|
|
|
diff = TimeDifference.between(uu.birth_date.to_time, today).in_years
|
|
expect(diff).to be >= age
|
|
expect(diff).to be < MusicianSearch::AGE_COUNTS[2]
|
|
end
|
|
search.update_json_value(MusicianSearch::KEY_AGES, [0])
|
|
search.do_search.to_sql =~ /(birth_date)/
|
|
expect($1).to eq(nil)
|
|
end
|
|
|
|
it "filters genres" do
|
|
end
|
|
it "filters studio sessions" do
|
|
end
|
|
it "filters gigs" do
|
|
end
|
|
it "filters skills" do
|
|
end
|
|
it "filters instruments" do
|
|
end
|
|
it "filters interests" do
|
|
end
|
|
it "filters combinations" do
|
|
end
|
|
end
|
|
|
|
describe "pagination" do
|
|
it "first page results" do
|
|
end
|
|
it "second page results" do
|
|
end
|
|
end
|
|
|
|
describe "sort order" do
|
|
before(:each) do
|
|
create_phony_database
|
|
end
|
|
|
|
end
|
|
end
|