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

141 lines
5.4 KiB
Ruby

require 'spec_helper'
describe PerformanceSample do
let(:user1) { FactoryGirl.create(:user) }
let(:user2) { FactoryGirl.create(:user) }
let(:claimed_recording) { FactoryGirl.create(:claimed_recording) }
describe "index" do
before(:all) do
@user1_sample1 = PerformanceSample.new(:user_id => user1.id, :service_type => "jamkazam", :claimed_recording_id => claimed_recording.id)
@user1_sample1.save!
@user1_sample2 = PerformanceSample.new(:user_id => user1.id, :service_type => "youtube", :service_id => "12345")
@user1_sample2.save!
@user2_sample1 = PerformanceSample.new(:user_id => user2.id, :service_type => "soundcloud", :service_id => "67890")
@user2_sample1.save!
end
context "when request is valid" do
it "should return all records for user" do
sample = PerformanceSample.index({:id => user1.id})
sample.count.should == 2
sample = PerformanceSample.index({:id => user2.id})
sample.count.should == 1
end
end
context "when request is invalid" do
it "should raise error when options are missing" do
lambda{PerformanceSample.index}.should raise_error(JamArgumentError)
end
it "should raise error when user id is missing" do
lambda{PerformanceSample.index({:id => ""})}.should raise_error(JamArgumentError)
end
end
end
describe "create" do
context "when request is valid" do
it "should save successfully" do
PerformanceSample.create(user1, {:user_id => user1.id, :service_type => "youtube", :service_id => "12345"})
# make sure we can save a second PerformanceSample for same user and type
PerformanceSample.create(user1, {:user_id => user1.id, :service_type => "youtube", :service_id => "67890"})
end
end
context "when request is not valid" do
it "should raise PermissionError if requester id does not match id in request" do
lambda{PerformanceSample.create(user1, {:user_id => user2.id, :service_type => "soundcloud", :username => "soundclouduser2"})}.should raise_error(PermissionError)
end
it "should raise error if service type is missing" do
lambda{PerformanceSample.create(user1, {:user_id => user1.id, :username => "soundclouduser2"})}.should raise_error(StateError)
end
end
end
# describe "update" do
# before(:all) do
# @user_sample = PerformanceSample.new(:user_id => user1.id, :service_type => "soundcloud", :username => "soundclouduser1")
# @user_sample.save!
# end
# context "when request is valid" do
# it "should save successfully" do
# up_list = PerformanceSample.index({:id => user1.id})
# up_list.count.should == 1
# up_list.first.service_type.should == "soundcloud"
# up_list.first.username.should == "soundclouduser1"
# PerformanceSample.update(user1, {:id => @user_sample.id, :user_id => user1.id, :service_type => "soundcloud", :username => "soundclouduser2"})
# up_list = PerformanceSample.index({:id => user1.id})
# up_list.count.should == 1
# up_list.first.service_type.should == "soundcloud"
# up_list.first.username.should == "soundclouduser2"
# end
# end
# context "when request is not valid" do
# it "should raise PermissionError if requester id does not match id in request" do
# lambda{PerformanceSample.update(user1, {:user_id => user2.id, :id => @user_sample.id, :service_type => "soundcloud", :username => "soundclouduser2"})}.should raise_error(PermissionError)
# end
# it "should raise error if type is missing" do
# lambda{PerformanceSample.update(user1, {:user_id => user1.id, :id => @user_sample.id, :username => "soundclouduser2"})}.should raise_error(StateError)
# end
# it "should raise error if username is missing" do
# lambda{PerformanceSample.update(user1, {:user_id => user1.id, :id => @user_sample.id, :service_type => "soundcloud"})}.should raise_error(StateError)
# end
# it "should raise error if user sample id is missing" do
# lambda{PerformanceSample.update(user1, {:user_id => user1.id, :username => "soundclouduser2", :service_type => "soundcloud"})}.should raise_error(StateError)
# end
# end
# end
# describe "destroy" do
# before(:all) do
# @user_sample = PerformanceSample.new(:user_id => user1.id, :service_type => "soundcloud", :username => "soundclouduser1")
# @user_sample.save!
# end
# context "when request is valid" do
# it "should destroy successfully" do
# up_list = PerformanceSample.index({:id => user1.id})
# up_list.count.should == 1
# up_list.first.service_type.should == "soundcloud"
# up_list.first.username.should == "soundclouduser1"
# PerformanceSample.delete(user1, {:user_id => user1.id, :id => @user_sample.id})
# up_list = PerformanceSample.index({:id => user1.id})
# up_list.count.should == 0
# end
# end
# context "when request is not valid" do
# it "should raise PermissionError if requester id does not match id in request" do
# lambda{PerformanceSample.delete(user2, {:user_id => user1.id, :id => @user_sample.id})}.should raise_error(PermissionError)
# end
# it "should raise error if user sample id is missing" do
# lambda{PerformanceSample.delete(user1, {:user_id => user1.id})}.should raise_error(StateError)
# end
# end
# end
end