ratings_helper_test.rb
3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
require File.expand_path(File.dirname(__FILE__)) + '/../../../../test/test_helper'
require 'ratings_helper'
class RatingsHelperTest < ActiveSupport::TestCase
include RatingsHelper
include ActionView::Helpers::TagHelper
def setup
@environment = Environment.default
@environment.enabled_plugins = ['OrganizationRatingsPlugin']
@environment.save
@person = create_user('testuser').person
@community = Community.create(:name => "TestCommunity")
@organization_ratings_config = OrganizationRatingsConfig.instance
@rating = fast_create(OrganizationRating, {:value => 1,
:person_id => @person.id,
:organization_id => @community.id,
:created_at => DateTime.now,
:updated_at => DateTime.now,
})
end
should "get the ratings of a community ordered by most recent ratings" do
ratings_array = []
first_rating = OrganizationRating.new
first_rating.organization = @community
first_rating.person = @person
first_rating.value = 3
first_rating.save
most_recent_rating = OrganizationRating.new
most_recent_rating.organization = @community
most_recent_rating.person = @person
most_recent_rating.value = 5
sleep 2
most_recent_rating.save
ratings_array << most_recent_rating
ratings_array << first_rating
ratings_array << @rating
assert_equal @organization_ratings_config.order, "recent"
assert_equal ratings_array, get_ratings(@community.id)
end
should "get the ratings of a community ordered by best ratings" do
ratings_array = []
@organization_ratings_config = "best"
@environment.save
first_rating = OrganizationRating.new
first_rating.organization = @community
first_rating.person = @person
first_rating.value = 3
first_rating.save
second_rating = OrganizationRating.new
second_rating.organization = @community
second_rating.person = @person
second_rating.value = 5
sleep 2
second_rating.save
ratings_array << second_rating
ratings_array << first_rating
ratings_array << @rating
assert_equal ratings_array, get_ratings(@community.id)
end
test "display report moderation message to community admin" do
@moderator = create_user('moderator').person
@community.add_admin(@moderator)
@rating.stubs(:task_status).returns(Task::Status::ACTIVE)
assert status_message_for(@moderator, @rating).include?("Report waiting for approval")
end
test "display report moderation message to owner" do
@rating.stubs(:task_status).returns(Task::Status::ACTIVE)
assert status_message_for(@person, @rating).include?("Report waiting for approval")
end
test "display report rejected message to owner" do
@rating.stubs(:task_status).returns(Task::Status::CANCELLED)
assert status_message_for(@person, @rating).include?("Report rejected")
end
test "do not display report moderation message to regular user" do
@regular_person = fast_create(Person)
@rating.stubs(:task_status).returns(Task::Status::ACTIVE)
assert_nil status_message_for(@regular_person, @rating)
end
test "return empty status message to not logged user" do
@rating.stubs(:task_status).returns(Task::Status::ACTIVE)
assert_nil status_message_for(nil, @rating)
end
test "do not display status message if report task is finished" do
@rating.stubs(:task_status).returns(Task::Status::FINISHED)
assert_nil status_message_for(@person, @rating)
end
end