jam-cloud/ruby/spec/jam_ruby/models/musician_search_model_spec.rb

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