Sha256: f101caa9890d23292e776f0f0c84188277580af63b11aa3c1ddb6edc1f4dfecd

Contents?: true

Size: 1.94 KB

Versions: 4

Compression:

Stored size: 1.94 KB

Contents

require 'helper'

class TestVoteable < Test::Unit::TestCase
  context "working with votes" do
    setup do
      User.delete_all
      @user = User.create!(:login => "foo", :email => "foo@bar.baz")
    end

    should "store the votes average" do
      @user.vote!(1, "voter_id1")
      @user.vote!(1, "voter_id2")
      @user.vote!(-1, "voter_id3")

      @user.reload
      @user.votes_average.should == 1
    end

    should "store the votes count" do
      @user.vote!(1, "voter_id1")
      @user.vote!(1, "voter_id2")
      @user.vote!(-1, "voter_id3")
      @user.vote!(-1, "voter_id4")

      @user.reload
      @user.votes_count.should == 4
    end

    should "only store one vote by voter_id" do
      @user.vote!(1, "voter_id1")
      @user.vote!(1, "voter_id1")
      @user.vote!(1, "voter_id1")
      @user.reload
      @user.votes_count.should == 1
    end

    should "allow to change the vote" do
      @user.vote!(1, "voter_id1")
      @user.vote!(-1, "voter_id1")

      @user.reload
      @user.votes_count.should == 1
      @user.votes_average.should == -1
    end

    should "count the votes" do
      @user.vote!(1, "voter_id1")
      @user.vote!(1, "voter_id2")
      @user.vote!(-1, "voter_id3")
      @user.vote!(-1, "voter_id4")
      @user.vote!(-1, "voter_id5")

      @user.reload
      @user.votes_average.should == -1
      @user.votes_up.should == 2
      @user.votes_down.should == 3
    end

    should "check if a voter_id already voted" do
      @user.vote!("1", "voter_id1")
      @user.vote!("1", "voter_id2")

      @user.voted?("voter_id1").should be_true
      @user.reload
      @user.voted?("voter_id1").should be_true
      @user.voted?("voter_id3").should be_false
    end

    should "check the voter id even if votes was not loaded" do
      @user.vote!("1", "voter_id1")
      @user = User.without(:votes).find(@user.id)
      @user.voted?("voter_id1").should be_true
      @user.voted?("voter_id2").should be_false
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mongoid_ext-0.9.0 test/test_voteable.rb
mongoid_ext-0.7.1 test/test_voteable.rb
mongoid_ext-0.6.2 test/test_voteable.rb
mongoid_ext-0.6.1 test/test_voteable.rb