spec/article_spec.rb in mongoid_rating-0.0.2 vs spec/article_spec.rb in mongoid_rating-0.1.0
- old
+ new
@@ -4,256 +4,278 @@
before(:each) do
@bob = User.create :name => "Bob"
@sally = User.create :name => "Sally"
@alice = User.create :name => "Alice"
- @article = Article.create :name => "Article"
- @article1 = Article.create :name => "Article 1"
- @article2 = Article.create :name => "Article 2"
end
- subject { @article }
- it { should respond_to :overall }
- it { should respond_to :overall! }
- it { should respond_to :unoverall! }
- it { should respond_to :did_overall? }
- it { should respond_to :overall_average }
- it { should respond_to :overall_data }
- it { should respond_to :overall_by }
-
- describe "#overall_values" do
- it "should be an array with overall values" do
- @article.overall_values.should be_an_instance_of Array
- @article.overall! 1, @bob
- @article.overall_values.should eq [1]
+ context 'basic' do
+ before(:each) do
+ @article = Article.create :name => "Article"
+ @article1 = Article.create :name => "Article 1"
+ @article2 = Article.create :name => "Article 2"
end
- end
- context "when overall" do
- before (:each) do
- @article.overall! 1, @bob
- end
+ subject { @article }
+ it { should respond_to :overall }
+ it { should respond_to :overall! }
+ it { should respond_to :unoverall! }
+ it { should respond_to :did_overall? }
+ it { should respond_to :overall_average }
+ it { should respond_to :overall_data }
+ it { should respond_to :overall_by }
- describe "#overall" do
- it "should track #overall properly" do
- @article.overall! 1, @sally
- @article.overall_count.should eql 2
- @article.overall.should eql 1.0
+ describe "#overall_values" do
+ it "should be an array with overall values" do
+ @article.overall_values.should be_an_instance_of Array
+ @article.overall! 1, @bob
+ @article.overall_values.should eq [1]
end
+ end
- it "should not mark fields as dirty" do
- @article.overall_count_changed?.should be_false
- @article.overall_sum_changed?.should be_false
- @article.overall_average_changed?.should be_false
+ context "when overall" do
+ before (:each) do
+ @article.overall! 1, @bob
end
- it "should limit #overalls by user properly" do
- @article.overall! 5, @bob
- @article.overall.should eql 5.0
- end
+ describe "#overall" do
+ it "should track #overall properly" do
+ @article.overall! 1, @sally
+ @article.overall_count.should eql 2
+ @article.overall.should eql 1.0
+ end
- context "when overall_value in rating range" do
- it { expect { @article.overall 1, @sally }.not_to raise_error }
- end
+ it "should not mark fields as dirty" do
+ @article.overall_count_changed?.should be_false
+ @article.overall_sum_changed?.should be_false
+ @article.overall_average_changed?.should be_false
+ end
- context "when overall_value not in rating range" do
- it { expect { @article.overall 17, @sally }.to raise_error() }
- it { expect { @article.overall -17, @sally }.to raise_error() }
- end
+ it "should limit #overalls by user properly" do
+ @article.overall! 5, @bob
+ @article.overall.should eql 5.0
+ end
- describe "when using positive values" do
- let(:num) { rand(1..5) }
- let(:exp) { ((num + 1) / 2.0) - 1 }
- it { expect { @article.overall num, @sally }.to change { @article.overall }.by(exp) }
- end
+ context "when overall_value in rating range" do
+ it { expect { @article.overall 1, @sally }.not_to raise_error }
+ end
- describe "when using negative values" do
- let(:num) { -rand(1..5) }
- let(:exp) { ((num + 1) / 2.0) - 1 }
- it { expect { @article.overall num, @sally }.to change { @article.overall }.by(exp) }
- end
- end
+ context "when overall_value not in rating range" do
+ it { expect { @article.overall 17, @sally }.to raise_error() }
+ it { expect { @article.overall -17, @sally }.to raise_error() }
+ end
- describe "#overall_by?" do
- describe "for Bob" do
- specify { @article.overall_by?(@bob).should be_true }
+ describe "when using positive values" do
+ let(:num) { rand(1..5) }
+ let(:exp) { ((num + 1) / 2.0) - 1 }
+ it { expect { @article.overall num, @sally }.to change { @article.overall }.by(exp) }
+ end
+
+ describe "when using negative values" do
+ let(:num) { -rand(1..5) }
+ let(:exp) { ((num + 1) / 2.0) - 1 }
+ it { expect { @article.overall num, @sally }.to change { @article.overall }.by(exp) }
+ end
end
- describe "for Bob" do
- specify { @article1.overall_by?(@bob).should be_false }
- specify { @article.overall_by?(@alice).should be_false }
- end
- describe "when overall by someone else" do
- before do
- @article.overall 1, @alice
+ describe "#overall_by?" do
+ describe "for Bob" do
+ specify { @article.overall_by?(@bob).should be_true }
end
+ describe "for Bob" do
+ specify { @article1.overall_by?(@bob).should be_false }
+ specify { @article.overall_by?(@alice).should be_false }
+ end
- describe "for Alice" do
- specify { @article.overall_by?(@alice).should be_true }
+ describe "when overall by someone else" do
+ before do
+ @article.overall 1, @alice
+ end
+
+ describe "for Alice" do
+ specify { @article.overall_by?(@alice).should be_true }
+ end
end
- end
- describe "when not overall by someone else" do
- describe "for Sally" do
- specify { @article.overall_by?(@sally).should be_false }
+ describe "when not overall by someone else" do
+ describe "for Sally" do
+ specify { @article.overall_by?(@sally).should be_false }
+ end
end
end
- end
- describe "#unoverall" do
- before { @article.unoverall @bob }
+ describe "#unoverall" do
+ before { @article.unoverall @bob }
- it "should have null #overall_count" do
- @article.overall_count.should eql 0
- end
+ it "should have null #overall_count" do
+ @article.overall_count.should eql 0
+ end
- it "should have null #overall" do
- @article.overall.should be_nil
+ it "should have null #overall" do
+ @article.overall.should be_nil
+ end
+
+ it "#overall_by?(@bob) should be false after unoverall" do
+ @article.overall_by?(@bob).should be_false
+ end
end
- it "#overall_by?(@bob) should be false after unoverall" do
- @article.overall_by?(@bob).should be_false
+ describe "#overall_count" do
+ it "should know how many overalls have been cast" do
+ @article.overall 1, @sally
+ @article.overall_count.should eql 2
+ end
end
- end
- describe "#overall_count" do
- it "should know how many overalls have been cast" do
- @article.overall 1, @sally
- @article.overall_count.should eql 2
+ describe "#rating" do
+ it "should calculate the average overall" do
+ @article.overall 4, @sally
+ @article.overall.should eq 2.5
+ end
+
+ it "should calculate the average overall if the result is zero" do
+ @article.overall -1, @sally
+ @article.overall.should eq 0.0
+ end
end
end
- describe "#rating" do
- it "should calculate the average overall" do
- @article.overall 4, @sally
- @article.overall.should eq 2.5
+ context "when not overall" do
+ describe "#overalls" do
+ specify { @article.overall_count.should eql 0 }
end
- it "should calculate the average overall if the result is zero" do
- @article.overall -1, @sally
- @article.overall.should eq 0.0
+ describe "#rating" do
+ specify { @article.overall.should be_nil }
end
- end
- end
- context "when not overall" do
- describe "#overalls" do
- specify { @article.overall_count.should eql 0 }
- end
+ describe "#unoverall" do
+ before do
+ @article.unoverall @sally
+ end
- describe "#rating" do
- specify { @article.overall.should be_nil }
- end
+ it "should have null #overall_count" do
+ @article.overall_count.should eql 0
+ end
- describe "#unoverall" do
- before do
- @article.unoverall @sally
+ it "should have null #overalls" do
+ @article.overall.should be_nil
+ end
end
+ end
- it "should have null #overall_count" do
- @article.overall_count.should eql 0
+ context "when saving the collection" do
+ before (:each) do
+ @article.overall 3, @bob
+ @article.overall -5, @sally
+ @article.save
+ @f_article = Article.where(:name => "Article").first
end
- it "should have null #overalls" do
- @article.overall.should be_nil
+ it "disallows incorrect rates" do
+ expect { @article.overall 8, @bob }.to raise_error
+ expect { @article.overall -10, @sally }.to raise_error
end
- end
- end
- context "when saving the collection" do
- before (:each) do
- @article.overall 3, @bob
- @article.overall -5, @sally
- @article.save
- @f_article = Article.where(:name => "Article").first
- end
+ describe "#overall_by?" do
+ describe "for Bob" do
+ specify { @f_article.overall_by?(@bob).should be_true }
+ specify { @f_article.overall_by(@bob).should eq 3 }
+ end
- it "disallows incorrect rates" do
- expect { @article.overall 8, @bob }.to raise_error
- expect { @article.overall -10, @sally }.to raise_error
- end
+ describe "for Sally" do
+ specify { @f_article.overall_by?(@sally).should be_true }
+ specify { @f_article.overall_by(@sally).should eq -5 }
+ end
- describe "#overall_by?" do
- describe "for Bob" do
- specify { @f_article.overall_by?(@bob).should be_true }
- specify { @f_article.overall_by(@bob).should eq 3 }
+ describe "for Alice" do
+ specify { @f_article.overall_by?(@alice).should be_false}
+ specify { @f_article.overall_by(@alice).should be_nil }
+ end
end
- describe "for Sally" do
- specify { @f_article.overall_by?(@sally).should be_true }
- specify { @f_article.overall_by(@sally).should eq -5 }
+ describe "#overall" do
+ specify { @f_article.overall.should eql -1.0 }
end
- describe "for Alice" do
- specify { @f_article.overall_by?(@alice).should be_false}
- specify { @f_article.overall_by(@alice).should be_nil }
+ describe "#overall_count" do
+ specify { @f_article.overall_count.should eql 2 }
end
end
-
- describe "#overall" do
- specify { @f_article.overall.should eql -1.0 }
- end
-
- describe "#overall_count" do
- specify { @f_article.overall_count.should eql 2 }
- end
end
describe "#scopes" do
- before (:each) do
- @article.delete
+ before :each do
@article1 = Article.create(:name => "Article 1")
@article2 = Article.create(:name => "Article 2")
@article3 = Article.create(:name => "Article 3")
@article4 = Article.create(:name => "Article 4")
@article5 = Article.create(:name => "Article 5")
- @article1.overall 5, @sally
- @article1.overall 3, @bob
- @article4.overall 1, @sally
end
describe "#overall_by" do
+ before :each do
+ @article1.overall 5, @sally
+ @article1.overall 3, @bob
+ @article4.overall 1, @sally
+ end
it "should return proper count of articles overall by Bob" do
Article.overall_by(@bob).size.should eql 1
end
it "should return proper count of articles overall by Sally" do
Article.overall_by(@sally).size.should eql 2
end
end
- describe "#overall_in" do
+ context 'rates' do
before (:each) do
@article1.overall 4, @alice
@article2.overall 2, @alice
@article3.overall 5, @alice
- @article4.overall 2, @alice
+ @article4.overall 1, @alice
end
+ describe "#overall_in" do
+ it "should return proper count of articles with rating 4..5" do
+ Article.overall_in(4..5).to_a.length.should eql 2
+ end
- it "should return proper count of articles with rating 4..5" do
- Article.overall_in(4..5).to_a.length.should eql 2
- end
+ it "should return proper count of articles with rating 0..2" do
+ Article.overall_in(0..2).to_a.length.should eql 2
+ end
- it "should return proper count of articles with rating 0..2" do
- Article.overall_in(0..2).to_a.length.should eql 2
+ it "should return proper count of articles with rating 0..5" do
+ Article.overall_in(0..5).to_a.length.should eql 4
+ end
end
- it "should return proper count of articles with rating 0..5" do
- Article.overall_in(0..5).to_a.length.should eql 4
- end
- end
+ describe "#highest_overall" do
+ it "should return proper count of articles" do
+ Article.highest_overall.limit(1).count(true).should eq 1
+ end
- describe "#highest_overall" do
- it "should return proper count of articles" do
- Article.highest_overall.limit(1).count(true).should eq 1
- end
+ it "should return proper count of articles" do
+ Article.highest_overall.limit(10).count(true).should eq 4
+ end
- it "should return proper count of articles" do
- Article.highest_overall.limit(10).count(true).should eq 2
+ it "should return proper document" do
+ Article.highest_overall.limit(1).first.name.should eql "Article 3"
+ end
+ it 'returns articles in proper order' do
+ Article.highest_overall.to_a.should eq [@article3, @article1, @article2, @article4]
+ end
end
- it "should return proper document" do
- Article.highest_overall.limit(1).first.name.should eql "Article 1"
+ describe '#by_overall' do
+ it "should return proper count of articles" do
+ Article.by_overall.limit(10).count(true).should eq 5
+ Article.by_overall.to_a.should eq [@article3, @article1, @article2, @article4, @article5]
+ end
+
+ it 'returns articles in proper order' do
+
+ end
end
end
+
end
end