2013-10-28 14:22:06 +00:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
|
|
describe User do
|
|
|
|
|
|
|
|
|
|
before(:each) do
|
2013-11-03 08:25:41 +00:00
|
|
|
@geocode1 = FactoryGirl.create(:geocoder)
|
|
|
|
|
@geocode2 = FactoryGirl.create(:geocoder)
|
2013-10-28 14:22:06 +00:00
|
|
|
params = {
|
|
|
|
|
first_name: "Example",
|
|
|
|
|
last_name: "User",
|
|
|
|
|
email: "user1@example.com",
|
|
|
|
|
password: "foobar",
|
|
|
|
|
password_confirmation: "foobar",
|
|
|
|
|
musician: true,
|
|
|
|
|
email_confirmed: true,
|
|
|
|
|
city: "Apex",
|
|
|
|
|
state: "NC",
|
2013-11-03 07:49:51 +00:00
|
|
|
country: "US"
|
2013-10-28 14:22:06 +00:00
|
|
|
}
|
2013-10-28 17:03:58 +00:00
|
|
|
@users = []
|
|
|
|
|
@users << @user1 = FactoryGirl.create(:user, params)
|
2013-10-28 14:22:06 +00:00
|
|
|
params[:email] = "user2@example.com"
|
2013-10-28 17:03:58 +00:00
|
|
|
@users << @user2 = FactoryGirl.create(:user, params)
|
|
|
|
|
params[:email] = "user3@example.com"
|
|
|
|
|
@users << @user3 = FactoryGirl.create(:user, params)
|
|
|
|
|
params[:email] = "user4@example.com"
|
|
|
|
|
@users << @user4 = FactoryGirl.create(:user, params)
|
2013-10-28 14:22:06 +00:00
|
|
|
end
|
|
|
|
|
|
2013-10-28 17:03:58 +00:00
|
|
|
it "should find all musicians sorted by followers with pagination" do
|
|
|
|
|
# establish sorting order
|
|
|
|
|
@user4.followers.concat([@user2, @user3, @user4])
|
|
|
|
|
@user3.followers.concat([@user3, @user4])
|
|
|
|
|
@user2.followers.concat([@user1])
|
|
|
|
|
@user4.followers.count.should == 3
|
|
|
|
|
|
|
|
|
|
UserFollower.count.should == 6
|
|
|
|
|
|
|
|
|
|
# get all the users in correct order
|
|
|
|
|
params = { :per_page => @users.size }
|
|
|
|
|
results = User.musician_search(params)
|
|
|
|
|
results.all.count.should == @users.size
|
|
|
|
|
|
|
|
|
|
results.each_with_index do |uu, idx|
|
|
|
|
|
uu.id.should == @users.reverse[idx].id
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# refresh the order to ensure it works right
|
|
|
|
|
@user2.followers.concat([@user3, @user4, @user2])
|
|
|
|
|
results = User.musician_search(params)
|
|
|
|
|
results[0].id.should == @user2.id
|
|
|
|
|
|
|
|
|
|
# make sure pagination works right
|
|
|
|
|
params = { :per_page => 2, :page => 1 }
|
|
|
|
|
results = User.musician_search(params)
|
|
|
|
|
results.all.count.should == 2
|
2013-10-28 14:22:06 +00:00
|
|
|
end
|
|
|
|
|
|
2013-10-28 22:19:36 +00:00
|
|
|
it "should find all musicians sorted by plays " do
|
2013-10-28 18:44:56 +00:00
|
|
|
pending
|
2013-10-28 14:22:06 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "should find all musicians sorted by now playing" do
|
|
|
|
|
pending
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "should find musicians with an instrument" do
|
2013-11-03 07:49:51 +00:00
|
|
|
minst = FactoryGirl.create(:musician_instrument, {
|
|
|
|
|
:user => @user1,
|
|
|
|
|
:instrument => Instrument.find('tuba') })
|
|
|
|
|
@user1.musician_instruments << minst
|
|
|
|
|
@user1.reload
|
2013-10-28 22:19:36 +00:00
|
|
|
ii = @user1.instruments.detect { |inst| inst.id == 'tuba' }
|
|
|
|
|
ii.should_not be_nil
|
|
|
|
|
params = { :instrument => ii.id }
|
|
|
|
|
results = User.musician_search(params)
|
2013-11-03 07:49:51 +00:00
|
|
|
results.all.each do |rr|
|
|
|
|
|
rr.instruments.detect { |inst| inst.id=='tuba' }.id.should == ii.id
|
|
|
|
|
end
|
2013-10-28 22:19:36 +00:00
|
|
|
results.all.count.should == 1
|
2013-10-28 14:22:06 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "should find musicians within a given distance of location" do
|
2013-11-03 07:49:51 +00:00
|
|
|
@user1.lat.should_not == nil
|
2013-11-03 08:25:41 +00:00
|
|
|
params = { :distance => 10, :city => 'San Francisco' }
|
2013-11-03 07:49:51 +00:00
|
|
|
results = User.musician_search(params)
|
|
|
|
|
results.all.count.should == 0
|
2013-11-03 08:25:41 +00:00
|
|
|
|
|
|
|
|
params = { :distance => 10, :city => 'Apex' }
|
|
|
|
|
results = User.musician_search(params)
|
|
|
|
|
results.all.count.should == User.count
|
|
|
|
|
|
|
|
|
|
params = { :distance => 10 }
|
|
|
|
|
results = User.musician_search(params)
|
|
|
|
|
results.all.count.should == User.count
|
2013-10-28 14:22:06 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|