Commit 8e1ebf5b8a87dc8a8ad3f976ebfdc33c8cb967d4
1 parent
f1587a22
Exists in
fix_sign_up_form
adding more unit tests for activities api endpoint
Showing
2 changed files
with
66 additions
and
13 deletions
Show diff stats
app/api/entities.rb
@@ -296,6 +296,8 @@ module Api | @@ -296,6 +296,8 @@ module Api | ||
296 | class Activity < Entity | 296 | class Activity < Entity |
297 | root 'activities', 'activity' | 297 | root 'activities', 'activity' |
298 | expose :id, :created_at, :updated_at | 298 | expose :id, :created_at, :updated_at |
299 | + expose :user, :using => Profile | ||
300 | + | ||
299 | expose :target do |activity, opts| | 301 | expose :target do |activity, opts| |
300 | type_map = {Profile => ::Profile, ArticleBase => ::Article}.find {|h| activity.target.kind_of?(h.last)} | 302 | type_map = {Profile => ::Profile, ArticleBase => ::Article}.find {|h| activity.target.kind_of?(h.last)} |
301 | type_map.first.represent(activity.target) unless type_map.nil? | 303 | type_map.first.represent(activity.target) unless type_map.nil? |
@@ -303,12 +305,9 @@ module Api | @@ -303,12 +305,9 @@ module Api | ||
303 | expose :params, :if => lambda { |activity, options| activity.kind_of?(ActionTracker::Record)} | 305 | expose :params, :if => lambda { |activity, options| activity.kind_of?(ActionTracker::Record)} |
304 | expose :content, :if => lambda { |activity, options| activity.kind_of?(Scrap)} | 306 | expose :content, :if => lambda { |activity, options| activity.kind_of?(Scrap)} |
305 | expose :verb do |activity, options| | 307 | expose :verb do |activity, options| |
306 | - activity.kind_of?(Scrap) ? 'scrap' : activity.verb | 308 | + activity.kind_of?(Scrap) ? 'leave_scrap' : activity.verb |
307 | end | 309 | end |
308 | 310 | ||
309 | - expose :user, :using => Profile# do |activity, opts| | ||
310 | -# activity.kind_of?(Scrap) ? activity.sender : activity.user | ||
311 | -# end | ||
312 | end | 311 | end |
313 | 312 | ||
314 | class Role < Entity | 313 | class Role < Entity |
test/api/activities_test.rb
@@ -8,7 +8,7 @@ class ActivitiesTest < ActiveSupport::TestCase | @@ -8,7 +8,7 @@ class ActivitiesTest < ActiveSupport::TestCase | ||
8 | end | 8 | end |
9 | 9 | ||
10 | should 'get own activities' do | 10 | should 'get own activities' do |
11 | - create_activity(person) | 11 | + create_activity(:target => person) |
12 | 12 | ||
13 | get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" | 13 | get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" |
14 | json = JSON.parse(last_response.body) | 14 | json = JSON.parse(last_response.body) |
@@ -19,7 +19,7 @@ class ActivitiesTest < ActiveSupport::TestCase | @@ -19,7 +19,7 @@ class ActivitiesTest < ActiveSupport::TestCase | ||
19 | 19 | ||
20 | should 'not get private community activities' do | 20 | should 'not get private community activities' do |
21 | community = fast_create(Community, :public_profile => false) | 21 | community = fast_create(Community, :public_profile => false) |
22 | - create_activity(community) | 22 | + create_activity(:target => community) |
23 | 23 | ||
24 | get "/api/v1/profiles/#{community.id}/activities?#{params.to_query}" | 24 | get "/api/v1/profiles/#{community.id}/activities?#{params.to_query}" |
25 | json = JSON.parse(last_response.body) | 25 | json = JSON.parse(last_response.body) |
@@ -40,7 +40,7 @@ class ActivitiesTest < ActiveSupport::TestCase | @@ -40,7 +40,7 @@ class ActivitiesTest < ActiveSupport::TestCase | ||
40 | 40 | ||
41 | should 'get community activities for member' do | 41 | should 'get community activities for member' do |
42 | community = fast_create(Community) | 42 | community = fast_create(Community) |
43 | - create_activity(community) | 43 | + create_activity(:target => community) |
44 | community.add_member(person) | 44 | community.add_member(person) |
45 | 45 | ||
46 | get "/api/v1/profiles/#{community.id}/activities?#{params.to_query}" | 46 | get "/api/v1/profiles/#{community.id}/activities?#{params.to_query}" |
@@ -50,7 +50,7 @@ class ActivitiesTest < ActiveSupport::TestCase | @@ -50,7 +50,7 @@ class ActivitiesTest < ActiveSupport::TestCase | ||
50 | 50 | ||
51 | should 'not get other person activities' do | 51 | should 'not get other person activities' do |
52 | other_person = fast_create(Person) | 52 | other_person = fast_create(Person) |
53 | - create_activity(other_person) | 53 | + create_activity(:target => other_person) |
54 | 54 | ||
55 | get "/api/v1/profiles/#{other_person.id}/activities?#{params.to_query}" | 55 | get "/api/v1/profiles/#{other_person.id}/activities?#{params.to_query}" |
56 | json = JSON.parse(last_response.body) | 56 | json = JSON.parse(last_response.body) |
@@ -61,7 +61,7 @@ class ActivitiesTest < ActiveSupport::TestCase | @@ -61,7 +61,7 @@ class ActivitiesTest < ActiveSupport::TestCase | ||
61 | should 'get friend activities' do | 61 | should 'get friend activities' do |
62 | other_person = fast_create(Person) | 62 | other_person = fast_create(Person) |
63 | other_person.add_friend(person) | 63 | other_person.add_friend(person) |
64 | - create_activity(other_person) | 64 | + create_activity(:target => other_person) |
65 | 65 | ||
66 | get "/api/v1/profiles/#{other_person.id}/activities?#{params.to_query}" | 66 | get "/api/v1/profiles/#{other_person.id}/activities?#{params.to_query}" |
67 | json = JSON.parse(last_response.body) | 67 | json = JSON.parse(last_response.body) |
@@ -70,16 +70,70 @@ class ActivitiesTest < ActiveSupport::TestCase | @@ -70,16 +70,70 @@ class ActivitiesTest < ActiveSupport::TestCase | ||
70 | 70 | ||
71 | should 'get activities for non logged user in a public community' do | 71 | should 'get activities for non logged user in a public community' do |
72 | community = fast_create(Community) | 72 | community = fast_create(Community) |
73 | - create_activity(community) | 73 | + create_activity(:target => community) |
74 | community.add_member(person) | 74 | community.add_member(person) |
75 | get "/api/v1/profiles/#{community.id}/activities?#{params.to_query}" | 75 | get "/api/v1/profiles/#{community.id}/activities?#{params.to_query}" |
76 | json = JSON.parse(last_response.body) | 76 | json = JSON.parse(last_response.body) |
77 | assert_equivalent community.activities.map(&:activity).map(&:id), json["activities"].map{|c| c["id"]} | 77 | assert_equivalent community.activities.map(&:activity).map(&:id), json["activities"].map{|c| c["id"]} |
78 | end | 78 | end |
79 | 79 | ||
80 | - def create_activity(target) | ||
81 | - activity = ActionTracker::Record.create! :verb => :leave_scrap, :user => person, :target => target | ||
82 | - ProfileActivity.create! profile_id: target.id, activity: activity | 80 | + should 'not crash api if an scrap activity is in the list' do |
81 | + create_activity(:target => person) | ||
82 | + create(Scrap, :sender_id => person.id, :receiver_id => person.id) | ||
83 | + | ||
84 | + assert_nothing_raised NoMethodError do | ||
85 | + get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" | ||
86 | + end | ||
87 | + end | ||
88 | + | ||
89 | + should 'scrap activity be returned in acitivities list' do | ||
90 | + create_activity(:target => person) | ||
91 | + create(Scrap, :sender_id => person.id, :receiver_id => person.id) | ||
92 | + | ||
93 | + get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" | ||
94 | + json = JSON.parse(last_response.body) | ||
95 | + | ||
96 | + assert_equivalent person.activities.map(&:activity).map(&:id), json["activities"].map{|c| c["id"]} | ||
97 | + end | ||
98 | + | ||
99 | + should 'always return the activity verb parameter' do | ||
100 | + ActionTracker::Record.destroy_all | ||
101 | + ProfileActivity.destroy_all | ||
102 | + create_activity(:target => person) | ||
103 | + get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" | ||
104 | + json = JSON.parse(last_response.body) | ||
105 | + assert_equal 'create_article', json["activities"].last['verb'] | ||
106 | + end | ||
107 | + | ||
108 | + should 'scrap activity return leave_scrap verb' do | ||
109 | + ActionTracker::Record.destroy_all | ||
110 | + create(TinyMceArticle, :name => 'Tracked Article 1', :profile_id => person.id) | ||
111 | + create(Scrap, :sender_id => person.id, :receiver_id => person.id) | ||
112 | + get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" | ||
113 | + json = JSON.parse(last_response.body) | ||
114 | + assert_equivalent ['create_article', 'leave_scrap'], json["activities"].map{|a|a['verb']} | ||
115 | + end | ||
116 | + | ||
117 | + should 'the content be returned in scrap activities' do | ||
118 | + ActionTracker::Record.destroy_all | ||
119 | + content = 'some content' | ||
120 | + create(Scrap, :sender_id => person.id, :receiver_id => person.id, :content => content) | ||
121 | + get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" | ||
122 | + json = JSON.parse(last_response.body) | ||
123 | + assert_equal content, json["activities"].last['content'] | ||
124 | + end | ||
125 | + | ||
126 | + should 'not return the content in other kind of activities except scrap' do | ||
127 | + ActionTracker::Record.destroy_all | ||
128 | + create_activity(:target => person) | ||
129 | + get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" | ||
130 | + json = JSON.parse(last_response.body) | ||
131 | + assert_nil json["activities"].last['content'] | ||
132 | + end | ||
133 | + | ||
134 | + def create_activity(params = {}) | ||
135 | + params[:verb] ||= 'create_article' | ||
136 | + ActionTracker::Record.create! :verb => params[:verb], :user => person, :target => params[:target] | ||
83 | end | 137 | end |
84 | 138 | ||
85 | end | 139 | end |