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

132 lines
3.2 KiB
Ruby

require 'spec_helper'
describe "Band Search" do
let(:user) { FactoryGirl.create(:user) }
let(:band) { FactoryGirl.create(:band, name: "Example Band") }
let(:band_params) {
{
name: "The Band",
biography: "Biography",
city: 'Austin',
state: 'TX',
country: 'US',
genres: ['country']
}
}
before(:all) do
Recording.delete_all
Band.delete_all
end
before(:each) do
@user = FactoryGirl.create(:user)
band.touch
end
it "should allow search of one band with an exact match" do
ws = Search.band_search("Example Band").results
ws.length.should == 1
band_result = ws[0]
band_result.name.should == band.name
band_result.id.should == band.id
band_result.location.should == band.location
end
it "should allow search of one band with partial matches" do
ws = Search.band_search("Ex").results
ws.length.should == 1
ws[0].id.should == band.id
ws = Search.band_search("Exa").results
ws.length.should == 1
ws[0].id.should == band.id
ws = Search.band_search("Exam").results
ws.length.should == 1
ws[0].id.should == band.id
ws = Search.band_search("Examp").results
ws.length.should == 1
ws[0].id.should == band.id
ws = Search.band_search("Exampl").results
ws.length.should == 1
ws[0].id.should == band.id
ws = Search.band_search("Example").results
ws.length.should == 1
ws[0].id.should == band.id
ws = Search.band_search("Ba").results
ws.length.should == 1
ws[0].id.should == band.id
ws = Search.band_search("Ban").results
ws.length.should == 1
ws[0].id.should == band.id
end
it "should not match mid-word searchs" do
ws = Search.band_search("xa").results
ws.length.should == 0
ws = Search.band_search("le").results
ws.length.should == 0
end
it "should delete band" do
ws = Search.band_search("Example Band").results
ws.length.should == 1
band_result = ws[0]
band_result.id.should == band.id
band.destroy # delete doesn't work; you have to use destroy.
ws = Search.band_search("Example Band").results
ws.length.should == 0
end
it "should update band" do
ws = Search.band_search("Example Band").results
ws.length.should == 1
band_result = ws[0]
band_result.id.should == band.id
band.name = "bonus-stuff"
band.save
ws = Search.band_search("Example Band").results
ws.length.should == 0
ws = Search.band_search("Bonus").results
ws.length.should == 1
band_result = ws[0]
band_result.id.should == band.id
band_result.name.should == "bonus-stuff"
end
it "should tokenize correctly" do
band2 = FactoryGirl.create(:band, name: 'Peach pit')
ws = Search.band_search("pea").results
ws.length.should == 1
user_result = ws[0]
user_result.id.should == band2.id
end
it "should not return anything with a 1 character search" do
band2 = FactoryGirl.create(:band, name: 'Peach pit')
ws = Search.band_search("pe").results
ws.length.should == 1
user_result = ws[0]
user_result.id.should == band2.id
ws = Search.band_search("p").results
ws.length.should == 0
end
end