Commit 70f901d4685b58463325017dadf98ebd41931a98
1 parent
5aa38f73
Exists in
master
and in
29 other branches
Fixing tests
Showing
11 changed files
with
108 additions
and
191 deletions
Show diff stats
app/models/scrap.rb
... | ... | @@ -11,7 +11,7 @@ class Scrap < ActiveRecord::Base |
11 | 11 | |
12 | 12 | named_scope :not_replies, :conditions => {:scrap_id => nil} |
13 | 13 | |
14 | - track_actions :leave_scrap, :after_create, :keep_params => ['sender.name', 'content', 'receiver.name', 'receiver.url'], :if => Proc.new{|s| s.receiver != s.sender} | |
14 | + track_actions :leave_scrap, :after_create, :keep_params => ['sender.name', 'content', 'receiver.name', 'receiver.url'], :if => Proc.new{|s| s.receiver != s.sender}, :custom_target => :action_tracker_target | |
15 | 15 | track_actions :leave_scrap_to_self, :after_create, :keep_params => ['sender.name', 'content'], :if => Proc.new{|s| s.receiver == s.sender} |
16 | 16 | |
17 | 17 | after_create do |scrap| | ... | ... |
lib/notify_activity_to_profiles_job.rb
... | ... | @@ -19,7 +19,7 @@ class NotifyActivityToProfilesJob < Struct.new(:tracked_action_id) |
19 | 19 | |
20 | 20 | ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) select f.friend_id, #{tracked_action.id} from friendships as f where person_id=#{tracked_action.user.id} and f.friend_id not in (select atn.profile_id from action_tracker_notifications as atn where atn.action_tracker_id = #{tracked_action.id})") |
21 | 21 | |
22 | - if target.is_a?(Community) | |
22 | + if target.is_a?(Community) || (target.is_a?(Article) && target.profile.is_a?(Community)) | |
23 | 23 | ActionTrackerNotification.connection.execute("insert into action_tracker_notifications(profile_id, action_tracker_id) select distinct profiles.id, #{tracked_action.id} from role_assignments, profiles where profiles.type = 'Person' and profiles.id = role_assignments.accessor_id and profiles.id != #{tracked_action.user.id} and role_assignments.resource_type = 'Profile' and role_assignments.resource_id = #{target.id}") |
24 | 24 | |
25 | 25 | ActionTrackerNotification.create(:profile_id => target.id, :action_tracker_id => tracked_action.id) unless NOT_NOTIFY_COMMUNITY.include?(tracked_action.verb) | ... | ... |
test/unit/action_tracker_notification_test.rb
... | ... | @@ -77,11 +77,27 @@ class ActionTrackerNotificationTest < ActiveSupport::TestCase |
77 | 77 | end |
78 | 78 | |
79 | 79 | should "have comments through action_tracker" do |
80 | - action = fast_create(ActionTracker::Record) | |
81 | - notification = fast_create(ActionTrackerNotification, :action_tracker_id => action.id, :profile_id => 1) | |
80 | + person = fast_create(Person) | |
81 | + community = fast_create(Community) | |
82 | + community.add_member(person) | |
83 | + activity = ActionTracker::Record.last | |
84 | + process_delayed_job_queue | |
85 | + notification = ActionTrackerNotification.last | |
86 | + | |
87 | + comment = create(Comment, :source => activity, :author => person) | |
88 | + | |
89 | + assert_equal activity.comments, notification.comments | |
90 | + end | |
91 | + | |
92 | + should "have comments through article action_tracker" do | |
93 | + person = fast_create(Person) | |
94 | + article = create(TextileArticle, :profile_id => person.id) | |
95 | + process_delayed_job_queue | |
96 | + notification = ActionTrackerNotification.last | |
97 | + | |
98 | + comment = create(Comment, :source => article, :author => person) | |
82 | 99 | |
83 | - comment = fast_create(Comment, :source_id => action.id) | |
84 | - assert_equal action.comments, notification.comments | |
100 | + assert_equal article.activity.comments, notification.comments | |
85 | 101 | end |
86 | 102 | |
87 | 103 | end | ... | ... |
test/unit/approve_article_test.rb
... | ... | @@ -250,7 +250,7 @@ class ApproveArticleTest < ActiveSupport::TestCase |
250 | 250 | assert_equal 1, ActionTracker::Record.count |
251 | 251 | end |
252 | 252 | |
253 | - should 'notify with different trackers activity create with different targets' do | |
253 | + should 'not group trackers activity of article\'s creation' do | |
254 | 254 | ActionTracker::Record.delete_all |
255 | 255 | |
256 | 256 | article = fast_create(TextileArticle) |
... | ... | @@ -260,28 +260,29 @@ class ApproveArticleTest < ActiveSupport::TestCase |
260 | 260 | article = fast_create(TextileArticle) |
261 | 261 | a = ApproveArticle.create!(:name => 'another bar', :article => article, :target => community, :requestor => profile) |
262 | 262 | a.finish |
263 | - assert_equal 1, ActionTracker::Record.count | |
264 | 263 | |
265 | 264 | article = fast_create(TextileArticle) |
266 | 265 | other_community = fast_create(Community) |
267 | 266 | a = ApproveArticle.create!(:name => 'another bar', :article => article, :target => other_community, :requestor => profile) |
268 | 267 | a.finish |
269 | - assert_equal 2, ActionTracker::Record.count | |
268 | + assert_equal 3, ActionTracker::Record.count | |
270 | 269 | end |
271 | 270 | |
272 | - should 'notify activity on update' do | |
271 | + should 'update activity on update of an article' do | |
273 | 272 | ActionTracker::Record.delete_all |
274 | 273 | a = ApproveArticle.create!(:name => 'bar', :article => article, :target => community, :requestor => profile) |
275 | 274 | a.finish |
276 | - assert_equal 1, ActionTracker::Record.count | |
277 | - | |
278 | - published = article.class.last | |
279 | - published.name = 'foo' | |
280 | - published.save! | |
281 | - assert_equal 2, ActionTracker::Record.count | |
275 | + published = community.articles.find_by_name(a.name) | |
276 | + time = published.activity.updated_at | |
277 | + Time.stubs(:now).returns(time + 1.day) | |
278 | + assert_no_difference ActionTracker::Record, :count do | |
279 | + published.name = 'foo' | |
280 | + published.save! | |
281 | + end | |
282 | + assert_equal time + 1.day, published.activity.updated_at | |
282 | 283 | end |
283 | 284 | |
284 | - should 'notify with different trackers activity update with different targets' do | |
285 | + should 'not create trackers activity when updating articles' do | |
285 | 286 | ActionTracker::Record.delete_all |
286 | 287 | article1 = fast_create(TextileArticle) |
287 | 288 | a = ApproveArticle.create!(:name => 'bar', :article => article1, :target => community, :requestor => profile) |
... | ... | @@ -293,16 +294,16 @@ class ApproveArticleTest < ActiveSupport::TestCase |
293 | 294 | a.finish |
294 | 295 | assert_equal 2, ActionTracker::Record.count |
295 | 296 | |
296 | - published = article1.class.last | |
297 | - published.name = 'foo';published.save! | |
298 | - assert_equal 3, ActionTracker::Record.count | |
299 | - | |
300 | - published = article2.class.last | |
301 | - published.name = 'another foo';published.save! | |
302 | - assert_equal 4, ActionTracker::Record.count | |
297 | + assert_no_difference ActionTracker::Record, :count do | |
298 | + published = article1.class.last | |
299 | + published.name = 'foo';published.save! | |
300 | + | |
301 | + published = article2.class.last | |
302 | + published.name = 'another foo';published.save! | |
303 | + end | |
303 | 304 | end |
304 | 305 | |
305 | - should "the tracker action target be defined as Community by custom_target method on articles'creation in communities" do | |
306 | + should "the tracker action target be defined as the article on articles'creation in communities" do | |
306 | 307 | ActionTracker::Record.delete_all |
307 | 308 | person = fast_create(Person) |
308 | 309 | community.add_member(person) |
... | ... | @@ -310,17 +311,21 @@ class ApproveArticleTest < ActiveSupport::TestCase |
310 | 311 | a = ApproveArticle.create!(:article => article, :target => community, :requestor => profile) |
311 | 312 | a.finish |
312 | 313 | |
313 | - assert_equal Community, ActionTracker::Record.last.target.class | |
314 | + approved_article = community.articles.find_by_name(article.name) | |
315 | + | |
316 | + assert_equal approved_article, ActionTracker::Record.last.target | |
314 | 317 | end |
315 | 318 | |
316 | - should "the tracker action target be defined as person by custom_target method on articles'creation in profile" do | |
319 | + should "the tracker action target be defined as the article on articles'creation in profile" do | |
317 | 320 | ActionTracker::Record.delete_all |
318 | 321 | person = fast_create(Person) |
319 | 322 | |
320 | 323 | a = ApproveArticle.create!(:article => article, :target => person, :requestor => profile) |
321 | 324 | a.finish |
322 | 325 | |
323 | - assert_equal Person, ActionTracker::Record.last.target.class | |
326 | + approved_article = person.articles.find_by_name(article.name) | |
327 | + | |
328 | + assert_equal approved_article, ActionTracker::Record.last.target | |
324 | 329 | end |
325 | 330 | |
326 | 331 | should "have the same is_trackable method as original article" do | ... | ... |
test/unit/article_test.rb
... | ... | @@ -934,66 +934,31 @@ class ArticleTest < ActiveSupport::TestCase |
934 | 934 | end |
935 | 935 | |
936 | 936 | should 'track action when a published article is created outside a community' do |
937 | - article = TinyMceArticle.create! :name => 'Tracked Article', :profile_id => profile.id | |
938 | - assert article.published? | |
939 | - assert_kind_of Person, article.profile | |
940 | - ta = ActionTracker::Record.last | |
941 | - assert_equal 'Tracked Article', ta.get_name.last | |
942 | - assert_equal article.url, ta.get_url.last | |
943 | - assert_kind_of Person, ta.user | |
944 | - ta.created_at = Time.now.ago(26.hours); ta.save! | |
945 | - article = TinyMceArticle.create! :name => 'Another Tracked Article', :profile_id => profile.id | |
946 | - ta = ActionTracker::Record.last | |
947 | - assert_equal ['Another Tracked Article'], ta.get_name | |
948 | - assert_equal [article.url], ta.get_url | |
937 | + article = create(TinyMceArticle, :profile_id => profile.id) | |
938 | + ta = article.activity | |
939 | + assert_equal article.name, ta.get_name | |
940 | + assert_equal article.url, ta.get_url | |
949 | 941 | end |
950 | 942 | |
951 | 943 | should 'track action when a published article is created in a community' do |
952 | 944 | community = fast_create(Community) |
953 | - p1 = ActionTracker::Record.current_user_from_model | |
945 | + p1 = fast_create(Person) | |
954 | 946 | p2 = fast_create(Person) |
955 | 947 | p3 = fast_create(Person) |
956 | 948 | community.add_member(p1) |
957 | 949 | community.add_member(p2) |
958 | - assert p1.is_member_of?(community) | |
959 | - assert p2.is_member_of?(community) | |
960 | - assert !p3.is_member_of?(community) | |
961 | 950 | Article.destroy_all |
962 | 951 | ActionTracker::Record.destroy_all |
963 | - article = TinyMceArticle.create! :name => 'Tracked Article', :profile_id => community.id | |
964 | - assert article.published? | |
965 | - assert_kind_of Community, article.profile | |
966 | - ta = ActionTracker::Record.last | |
967 | - assert_equal 'Tracked Article', ta.get_name.last | |
968 | - assert_equal article.url, ta.get_url.last | |
969 | - assert_kind_of Person, ta.user | |
952 | + UserStampSweeper.any_instance.expects(:current_user).returns(p1).at_least_once | |
953 | + article = create(TinyMceArticle, :profile_id => community.id) | |
954 | + | |
970 | 955 | process_delayed_job_queue |
971 | - assert_equal 3, ActionTrackerNotification.count | |
956 | + assert_equal 3, ActionTrackerNotification.all | |
972 | 957 | ActionTrackerNotification.all.map{|a|a.profile}.map do |profile| |
973 | 958 | assert [p1,p2,community].include?(profile) |
974 | 959 | end |
975 | 960 | end |
976 | 961 | |
977 | - should 'track action when a published article is updated' do | |
978 | - a = TinyMceArticle.create! :name => 'a', :profile_id => profile.id | |
979 | - a.update_attributes! :name => 'b' | |
980 | - ta = ActionTracker::Record.last | |
981 | - assert_equal ['b'], ta.get_name | |
982 | - assert_equal [a.reload.url], ta.get_url | |
983 | - a.update_attributes! :name => 'c' | |
984 | - ta = ActionTracker::Record.last | |
985 | - assert_equal ['b','c'], ta.get_name | |
986 | - assert_equal [a.url,a.reload.url], ta.get_url | |
987 | - a.update_attributes! :body => 'test' | |
988 | - ta = ActionTracker::Record.last | |
989 | - assert_equal ['b','c','c'], ta.get_name | |
990 | - assert_equal [a.url,a.reload.url,a.reload.url], ta.get_url | |
991 | - a.update_attributes! :hits => 50 | |
992 | - ta = ActionTracker::Record.last | |
993 | - assert_equal ['b','c','c'], ta.get_name | |
994 | - assert_equal [a.url,a.reload.url,a.reload.url], ta.get_url | |
995 | - end | |
996 | - | |
997 | 962 | should 'track action when a published article is removed' do |
998 | 963 | a = TinyMceArticle.create! :name => 'a', :profile_id => profile.id |
999 | 964 | a.destroy |
... | ... | @@ -1022,13 +987,13 @@ class ArticleTest < ActiveSupport::TestCase |
1022 | 987 | |
1023 | 988 | should 'update action when comment is created' do |
1024 | 989 | article = create(TinyMceArticle, :profile => profile) |
1025 | - action = ActionTracker::Record.last | |
990 | + action = article.activity | |
1026 | 991 | time = action.updated_at |
1027 | 992 | |
1028 | 993 | Time.stubs(:now).returns(time + 1.day) |
1029 | 994 | |
1030 | - article.comments << Comment.create(:name => 'Guest', :email => 'guest@example.com', :title => 'test comment', :body => 'hello!') | |
1031 | - assert_not_equal time, ActionTracker::Record.last.updated_at | |
995 | + comment = create(Comment, :source => article, :author => profile) | |
996 | + assert_equal time + 1.day, article.activity.updated_at | |
1032 | 997 | end |
1033 | 998 | |
1034 | 999 | should 'notifiable is false by default' do |
... | ... | @@ -1162,36 +1127,17 @@ class ArticleTest < ActiveSupport::TestCase |
1162 | 1127 | assert_equal 6, ActionTrackerNotification.count |
1163 | 1128 | end |
1164 | 1129 | |
1165 | - should 'not create more than one notification track action to friends when update more than one artile' do | |
1166 | - p1 = Person.first || fast_create(Person) | |
1130 | + should 'create notifications to friends when creating an article' do | |
1167 | 1131 | friend = fast_create(Person) |
1168 | - p1.add_friend(friend) | |
1132 | + profile.add_friend(friend) | |
1169 | 1133 | Article.destroy_all |
1170 | 1134 | ActionTracker::Record.destroy_all |
1171 | 1135 | ActionTrackerNotification.destroy_all |
1172 | - article = TinyMceArticle.create! :name => 'Tracked Article 1', :profile_id => p1.id | |
1173 | - assert article.published? | |
1174 | - assert_kind_of Person, article.profile | |
1175 | - assert_equal 1, ActionTracker::Record.count | |
1176 | - ta = ActionTracker::Record.last | |
1177 | - assert_equal 'Tracked Article 1', ta.get_name.last | |
1178 | - assert_equal article.url, ta.get_url.last | |
1179 | - assert p1, ta.user | |
1180 | - assert p1, ta.target | |
1181 | - process_delayed_job_queue | |
1182 | - assert_equal 2, ActionTrackerNotification.count | |
1136 | + UserStampSweeper.any_instance.expects(:current_user).returns(profile).at_least_once | |
1137 | + article = create(TinyMceArticle, :profile_id => profile.id) | |
1183 | 1138 | |
1184 | - article = TinyMceArticle.create! :name => 'Tracked Article 2', :profile_id => p1.id | |
1185 | - assert article.published? | |
1186 | - assert_kind_of Person, article.profile | |
1187 | - assert_equal 1, ActionTracker::Record.count | |
1188 | - ta = ActionTracker::Record.last | |
1189 | - assert_equal 'Tracked Article 2', ta.get_name.last | |
1190 | - assert_equal article.url, ta.get_url.last | |
1191 | - assert_equal p1, ta.user | |
1192 | - assert_equal p1, ta.target | |
1193 | 1139 | process_delayed_job_queue |
1194 | - assert_equal 2, ActionTrackerNotification.count | |
1140 | + assert_equal friend, ActionTrackerNotification.last.profile | |
1195 | 1141 | end |
1196 | 1142 | |
1197 | 1143 | should 'create the notification to the friend when one friend has the notification and the other no' do |
... | ... | @@ -1582,7 +1528,7 @@ class ArticleTest < ActiveSupport::TestCase |
1582 | 1528 | should 'survive to a invalid src attribute while looking for images in body' do |
1583 | 1529 | article = Article.new(:body => "An article with invalid src in img tag <img src='path with spaces.png' />", :profile => @profile) |
1584 | 1530 | assert_nothing_raised URI::InvalidURIError do |
1585 | - assert_equal ['http://localhost/path%20with%20spaces.png'], article.body_images_paths | |
1531 | + assert_equal ["http://#{profile.environment.default_hostname}/path%20with%20spaces.png"], article.body_images_paths | |
1586 | 1532 | end |
1587 | 1533 | end |
1588 | 1534 | ... | ... |
test/unit/comment_test.rb
... | ... | @@ -74,11 +74,13 @@ class CommentTest < ActiveSupport::TestCase |
74 | 74 | assert_equal cc + 1, Article.find(art.id).comments_count |
75 | 75 | end |
76 | 76 | |
77 | - should 'update counter cache in activity' do | |
78 | - action = fast_create(ActionTracker::Record) | |
79 | - cc = action.comments_count | |
80 | - comment = fast_create(Comment, :source_id => action.id) | |
77 | + should 'update counter cache in article activity' do | |
78 | + owner = create_user('testuser').person | |
79 | + article = create(TextileArticle, :profile_id => owner.id) | |
81 | 80 | |
81 | + action = article.activity | |
82 | + cc = action.comments_count | |
83 | + comment = create(Comment, :source => action, :author_id => owner.id) | |
82 | 84 | assert_equal cc + 1, ActionTracker::Record.find(action.id).comments_count |
83 | 85 | end |
84 | 86 | ... | ... |
test/unit/community_test.rb
... | ... | @@ -345,7 +345,7 @@ class CommunityTest < ActiveSupport::TestCase |
345 | 345 | scrap = Scrap.create!(defaults_for_scrap(:sender => person, :receiver => community, :content => 'A scrap')) |
346 | 346 | activity = ActionTracker::Record.last |
347 | 347 | |
348 | - assert_equal [scrap], community.activities.map { |a| a.klass.constantize.find(a.id) } | |
348 | + assert_equal [activity,scrap], community.activities.map { |a| a.klass.constantize.find(a.id) } | |
349 | 349 | end |
350 | 350 | |
351 | 351 | should 'return tracked_actions of community as activities' do | ... | ... |
test/unit/notify_activity_to_profiles_job_test.rb
... | ... | @@ -24,28 +24,6 @@ class NotifyActivityToProfilesJobTest < ActiveSupport::TestCase |
24 | 24 | end |
25 | 25 | end |
26 | 26 | |
27 | - should 'notify just the community in tracker with remove_member_in_community verb' do | |
28 | - person = fast_create(Person) | |
29 | - community = fast_create(Community) | |
30 | - action_tracker = fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => person.id, :target_type => 'Profile', :target_id => community.id, :verb => 'remove_member_in_community') | |
31 | - assert NotifyActivityToProfilesJob::NOTIFY_ONLY_COMMUNITY.include?(action_tracker.verb) | |
32 | - p1, p2, m1, m2 = fast_create(Person), fast_create(Person), fast_create(Person), fast_create(Person) | |
33 | - fast_create(Friendship, :person_id => person.id, :friend_id => p1.id) | |
34 | - fast_create(Friendship, :person_id => person.id, :friend_id => p2.id) | |
35 | - fast_create(RoleAssignment, :accessor_id => m1.id, :role_id => 3, :resource_id => community.id) | |
36 | - fast_create(RoleAssignment, :accessor_id => m2.id, :role_id => 3, :resource_id => community.id) | |
37 | - ActionTrackerNotification.delete_all | |
38 | - job = NotifyActivityToProfilesJob.new(action_tracker.id) | |
39 | - job.perform | |
40 | - process_delayed_job_queue | |
41 | - | |
42 | - assert_equal 1, ActionTrackerNotification.count | |
43 | - [community].each do |profile| | |
44 | - notification = ActionTrackerNotification.find_by_profile_id profile.id | |
45 | - assert_equal action_tracker, notification.action_tracker | |
46 | - end | |
47 | - end | |
48 | - | |
49 | 27 | should 'notify just the users and his friends tracking user actions' do |
50 | 28 | person = fast_create(Person) |
51 | 29 | community = fast_create(Community) |
... | ... | @@ -132,36 +110,14 @@ class NotifyActivityToProfilesJobTest < ActiveSupport::TestCase |
132 | 110 | end |
133 | 111 | end |
134 | 112 | |
135 | - should 'not notify the community tracking leave_community verb' do | |
136 | - person = fast_create(Person) | |
137 | - community = fast_create(Community) | |
138 | - action_tracker = fast_create(ActionTracker::Record, :user_type => 'Profile', :user_id => person.id, :target_type => 'Profile', :target_id => community.id, :verb => 'leave_community') | |
139 | - assert !NotifyActivityToProfilesJob::NOTIFY_ONLY_COMMUNITY.include?(action_tracker.verb) | |
140 | - p1, p2, m1, m2 = fast_create(Person), fast_create(Person), fast_create(Person), fast_create(Person) | |
141 | - fast_create(Friendship, :person_id => person.id, :friend_id => p1.id) | |
142 | - fast_create(Friendship, :person_id => person.id, :friend_id => p2.id) | |
143 | - fast_create(RoleAssignment, :accessor_id => m1.id, :role_id => 3, :resource_id => community.id) | |
144 | - fast_create(RoleAssignment, :accessor_id => m2.id, :role_id => 3, :resource_id => community.id) | |
145 | - ActionTrackerNotification.delete_all | |
146 | - job = NotifyActivityToProfilesJob.new(action_tracker.id) | |
147 | - job.perform | |
148 | - process_delayed_job_queue | |
149 | - | |
150 | - assert_equal 5, ActionTrackerNotification.count | |
151 | - [person, p1, p2, m1, m2].each do |profile| | |
152 | - notification = ActionTrackerNotification.find_by_profile_id profile.id | |
153 | - assert_equal action_tracker, notification.action_tracker | |
154 | - end | |
155 | - end | |
156 | - | |
157 | 113 | should "the NOTIFY_ONLY_COMMUNITY constant has all the verbs tested" do |
158 | - notify_community_verbs = ['add_member_in_community', 'remove_member_in_community'] | |
114 | + notify_community_verbs = ['add_member_in_community'] | |
159 | 115 | assert_equal [], notify_community_verbs - NotifyActivityToProfilesJob::NOTIFY_ONLY_COMMUNITY |
160 | 116 | assert_equal [], NotifyActivityToProfilesJob::NOTIFY_ONLY_COMMUNITY - notify_community_verbs |
161 | 117 | end |
162 | 118 | |
163 | 119 | should "the NOT_NOTIFY_COMMUNITY constant has all the verbs tested" do |
164 | - not_notify_community_verbs = ['join_community', 'leave_community'] | |
120 | + not_notify_community_verbs = ['join_community'] | |
165 | 121 | assert_equal [], not_notify_community_verbs - NotifyActivityToProfilesJob::NOT_NOTIFY_COMMUNITY |
166 | 122 | assert_equal [], NotifyActivityToProfilesJob::NOT_NOTIFY_COMMUNITY - not_notify_community_verbs |
167 | 123 | end | ... | ... |
test/unit/textile_article_test.rb
... | ... | @@ -38,80 +38,72 @@ class TextileArticleTest < ActiveSupport::TestCase |
38 | 38 | assert_equal 1, ActionTracker::Record.count |
39 | 39 | end |
40 | 40 | |
41 | - should 'notify with different trackers activity create with different targets' do | |
41 | + should 'not group trackers activity of article\'s creation' do | |
42 | 42 | ActionTracker::Record.delete_all |
43 | 43 | profile = fast_create(Profile) |
44 | 44 | TextileArticle.create! :name => 'bar', :profile_id => profile.id, :published => true |
45 | 45 | TextileArticle.create! :name => 'another bar', :profile_id => profile.id, :published => true |
46 | - assert_equal 1, ActionTracker::Record.count | |
47 | 46 | TextileArticle.create! :name => 'another bar', :profile_id => fast_create(Profile).id, :published => true |
48 | - assert_equal 2, ActionTracker::Record.count | |
47 | + assert_equal 3, ActionTracker::Record.count | |
49 | 48 | end |
50 | 49 | |
51 | - should 'notify activity on update' do | |
50 | + should 'update activity on update of an article' do | |
52 | 51 | ActionTracker::Record.delete_all |
53 | - a = TextileArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true | |
54 | - assert_equal 1, ActionTracker::Record.count | |
55 | - a.name = 'foo' | |
56 | - a.save! | |
57 | - assert_equal 2, ActionTracker::Record.count | |
52 | + profile = fast_create(Profile) | |
53 | + article = create(TextileArticle, :profile_id => profile.id) | |
54 | + time = article.activity.updated_at | |
55 | + Time.stubs(:now).returns(time + 1.day) | |
56 | + assert_no_difference ActionTracker::Record, :count do | |
57 | + article.name = 'foo' | |
58 | + article.save! | |
59 | + end | |
60 | + assert_equal time + 1.day, article.activity.updated_at | |
58 | 61 | end |
59 | 62 | |
60 | - should 'notify with different trackers activity update with different targets' do | |
63 | + should 'not create trackers activity when updating articles' do | |
61 | 64 | ActionTracker::Record.delete_all |
62 | 65 | a1 = TextileArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true |
63 | 66 | a2 = TextileArticle.create! :name => 'another bar', :profile_id => fast_create(Profile).id, :published => true |
64 | - assert_equal 2, ActionTracker::Record.count | |
65 | - a1.name = 'foo' | |
66 | - a1.save! | |
67 | - assert_equal 3, ActionTracker::Record.count | |
68 | - a2.name = 'another foo' | |
69 | - a2.save! | |
70 | - assert_equal 4, ActionTracker::Record.count | |
67 | + assert_no_difference ActionTracker::Record, :count do | |
68 | + a1.name = 'foo';a1.save! | |
69 | + a2.name = 'another foo';a2.save! | |
70 | + end | |
71 | 71 | end |
72 | 72 | |
73 | - should 'notify activity on destroy' do | |
73 | + should 'not notify activity on destroy' do | |
74 | 74 | ActionTracker::Record.delete_all |
75 | 75 | a = TextileArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true |
76 | - assert_equal 1, ActionTracker::Record.count | |
77 | - a.destroy | |
78 | - assert_equal 2, ActionTracker::Record.count | |
76 | + assert_no_difference ActionTracker::Record, :count do | |
77 | + a.destroy | |
78 | + end | |
79 | 79 | end |
80 | 80 | |
81 | - should 'notify different activities when destroy articles with diferrents targets' do | |
81 | + should 'not notify when an article is destroyed' do | |
82 | 82 | ActionTracker::Record.delete_all |
83 | 83 | a1 = TextileArticle.create! :name => 'bar', :profile_id => fast_create(Profile).id, :published => true |
84 | 84 | a2 = TextileArticle.create! :name => 'another bar', :profile_id => fast_create(Profile).id, :published => true |
85 | 85 | assert_equal 2, ActionTracker::Record.count |
86 | - a1.destroy | |
87 | - assert_equal 3, ActionTracker::Record.count | |
88 | - a2.destroy | |
89 | - assert_equal 4, ActionTracker::Record.count | |
86 | + assert_no_difference ActionTracker::Record, :count do | |
87 | + a1.destroy | |
88 | + a2.destroy | |
89 | + end | |
90 | 90 | end |
91 | 91 | |
92 | - should "the tracker action target be defined as Community by custom_target method on articles'creation in communities" do | |
92 | + should "the tracker action target be defined as the article on articles'creation in communities" do | |
93 | 93 | ActionTracker::Record.delete_all |
94 | 94 | community = fast_create(Community) |
95 | 95 | p1 = Person.first |
96 | 96 | community.add_member(p1) |
97 | 97 | assert p1.is_member_of?(community) |
98 | 98 | article = TextileArticle.create! :name => 'test', :profile_id => community.id |
99 | - assert_equal true, article.published? | |
100 | - assert_equal true, article.notifiable? | |
101 | - assert_equal false, article.image? | |
102 | - assert_equal Community, article.profile.class | |
103 | - assert_equal Community, ActionTracker::Record.last.target.class | |
99 | + assert_equal article, ActionTracker::Record.last.target | |
104 | 100 | end |
105 | 101 | |
106 | - should "the tracker action target be defined as person by custom_target method on articles'creation in profile" do | |
102 | + should "the tracker action target be defined as the article on articles'creation in profile" do | |
107 | 103 | ActionTracker::Record.delete_all |
108 | 104 | person = Person.first |
109 | 105 | article = TextileArticle.create! :name => 'test', :profile_id => person.id |
110 | - assert_equal true, article.published? | |
111 | - assert_equal true, article.notifiable? | |
112 | - assert_equal false, article.image? | |
113 | - assert_equal Person, article.profile.class | |
114 | - assert_equal person, ActionTracker::Record.last.target | |
106 | + assert_equal article, ActionTracker::Record.last.target | |
115 | 107 | end |
116 | 108 | |
117 | 109 | should 'not notify activity if the article is not advertise' do | ... | ... |
test/unit/tiny_mce_article_test.rb
... | ... | @@ -147,7 +147,7 @@ class TinyMceArticleTest < ActiveSupport::TestCase |
147 | 147 | should 'update activity on update of an article' do |
148 | 148 | ActionTracker::Record.delete_all |
149 | 149 | profile = fast_create(Profile) |
150 | - article = create(TextileArticle, :profile_id => profile.id) | |
150 | + article = create(TinyMceArticle, :profile_id => profile.id) | |
151 | 151 | time = article.activity.updated_at |
152 | 152 | Time.stubs(:now).returns(time + 1.day) |
153 | 153 | assert_no_difference ActionTracker::Record, :count do | ... | ... |
vendor/plugins/action_tracker_has_comments/init.rb
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | |
3 | 3 | ActionTracker::Record.module_eval do |
4 | 4 | |
5 | - has_many :comments, :class_name => 'Comment', :dependent => :destroy, :finder_sql => 'SELECT * FROM comments WHERE #{conditions_for_comments} ORDER BY created_at ASC' | |
5 | + has_many :comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :finder_sql => 'SELECT * FROM comments WHERE #{conditions_for_comments} ORDER BY created_at ASC' | |
6 | 6 | |
7 | 7 | def conditions_for_comments |
8 | 8 | type, id = (self.target_type == 'Article' ? ['Article', self.target_id] : [self.class.to_s, self.id]) | ... | ... |