muck-friends 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. data/README.rdoc +9 -2
  2. data/Rakefile +3 -27
  3. data/VERSION +1 -1
  4. data/app/controllers/muck/friends_controller.rb +28 -11
  5. data/app/helpers/muck_friends_helper.rb +110 -48
  6. data/app/views/activity_templates/_follow.html.erb +3 -0
  7. data/app/views/activity_templates/_friends_with.html.erb +3 -0
  8. data/app/views/friends/_all_friends.html.erb +1 -1
  9. data/app/views/friends/_friend_icon.html.erb +1 -0
  10. data/config/muck_friends_routes.rb +3 -1
  11. data/lib/active_record/acts/muck_friend.rb +14 -22
  12. data/lib/active_record/acts/muck_friend_user.rb +7 -2
  13. data/locales/en.yml +14 -7
  14. data/muck-friends.gemspec +41 -5
  15. data/test/rails_root/Rakefile +15 -0
  16. data/test/rails_root/app/views/default/friend_link.html.erb +1 -0
  17. data/test/rails_root/config/database.yml +4 -1
  18. data/test/rails_root/config/environments/cucumber.rb +22 -0
  19. data/test/rails_root/config/global_config.yml +1 -1
  20. data/test/rails_root/db/migrate/20090402234137_create_languages.rb +18 -0
  21. data/test/rails_root/db/migrate/20090426041056_create_countries.rb +15 -0
  22. data/test/rails_root/db/migrate/20090426041103_create_states.rb +18 -0
  23. data/test/rails_root/db/migrate/20090730044139_add_comment_cache.rb +9 -0
  24. data/test/rails_root/features/step_definitions/webrat_steps.rb +57 -23
  25. data/test/rails_root/features/support/env.rb +14 -3
  26. data/test/rails_root/features/support/paths.rb +27 -0
  27. data/test/rails_root/lib/tasks/cucumber.rake +32 -0
  28. data/test/rails_root/public/images/fancybox/fancy_closebox.png +0 -0
  29. data/test/rails_root/public/images/fancybox/fancy_left.png +0 -0
  30. data/test/rails_root/public/images/fancybox/fancy_progress.png +0 -0
  31. data/test/rails_root/public/images/fancybox/fancy_right.png +0 -0
  32. data/test/rails_root/public/images/fancybox/fancy_shadow_e.png +0 -0
  33. data/test/rails_root/public/images/fancybox/fancy_shadow_n.png +0 -0
  34. data/test/rails_root/public/images/fancybox/fancy_shadow_ne.png +0 -0
  35. data/test/rails_root/public/images/fancybox/fancy_shadow_nw.png +0 -0
  36. data/test/rails_root/public/images/fancybox/fancy_shadow_s.png +0 -0
  37. data/test/rails_root/public/images/fancybox/fancy_shadow_se.png +0 -0
  38. data/test/rails_root/public/images/fancybox/fancy_shadow_sw.png +0 -0
  39. data/test/rails_root/public/images/fancybox/fancy_shadow_w.png +0 -0
  40. data/test/rails_root/public/images/fancybox/fancy_title_left.png +0 -0
  41. data/test/rails_root/public/images/fancybox/fancy_title_main.png +0 -0
  42. data/test/rails_root/public/images/fancybox/fancy_title_right.png +0 -0
  43. data/test/rails_root/public/images/nothing.png +0 -0
  44. data/test/rails_root/public/javascripts/jquery/jquery.easing.js +1 -0
  45. data/test/rails_root/public/javascripts/jquery/jquery.fancybox.js +9 -0
  46. data/test/rails_root/public/javascripts/muck.js +7 -3
  47. data/test/rails_root/public/javascripts/muck_activities.js +1 -1
  48. data/test/rails_root/public/stylesheets/jquery/jquery.fancybox.css +44 -0
  49. data/test/rails_root/public/stylesheets/styles.css +8 -3
  50. data/test/rails_root/script/cucumber +5 -3
  51. data/test/rails_root/test/functional/default_controller_test.rb +177 -4
  52. data/test/rails_root/test/functional/friends_controller_test.rb +8 -8
  53. data/test/rails_root/test/unit/user_test.rb +164 -127
  54. metadata +38 -5
  55. data/app/views/activity_templates/follow.html.erb +0 -1
  56. data/app/views/activity_templates/friends_with.html.erb +0 -1
  57. data/test/rails_root/db/schema.rb +0 -153
@@ -44,6 +44,179 @@ class Muck::DefaultControllerTest < ActionController::TestCase
44
44
  @controller.stubs(:other_user).returns(@quentin)
45
45
  end
46
46
 
47
+ context "friend link" do
48
+ setup do
49
+ @enable_following = GlobalConfig.enable_following
50
+ @enable_friending = GlobalConfig.enable_friending
51
+ end
52
+ teardown do
53
+ # Reset global config
54
+ GlobalConfig.enable_following = @enable_following
55
+ GlobalConfig.enable_friending = @enable_friending
56
+ end
57
+
58
+ context "enable_following is true and enable_friending is true" do
59
+ setup do
60
+ GlobalConfig.enable_following = true
61
+ GlobalConfig.enable_friending = true
62
+ end
63
+ context "no current user" do
64
+ setup do
65
+ @controller.stubs(:current_user).returns(nil)
66
+ get :friend_link
67
+ end
68
+ should_respond_with :success
69
+ should_render_template :friend_link
70
+ should "have login/signup in the body" do
71
+ assert @response.body.include?(I18n.t("muck.friends.muck.friends.login_or_sign_up_to_follow"), :login => link_to(I18n.t('muck.friends.login'), login_path), :signup => link_to(I18n.t('muck.friends.signup'), signup_path))
72
+ end
73
+ end
74
+ context "current user is not friends with other user" do
75
+ setup do
76
+ @other_user = Factory(:user)
77
+ @controller.stubs(:other_user).returns(@other_user)
78
+ get :friend_link
79
+ end
80
+ should_respond_with :success
81
+ should_render_template :friend_link
82
+ should "have 'follow' in the body" do
83
+ assert @response.body.include?(I18n.t('muck.friends.start_following', :user => @other_user.display_name))
84
+ end
85
+ end
86
+ context "current user is friends with other user" do
87
+ setup do
88
+ @controller.stubs(:other_user).returns(@friend1)
89
+ get :friend_link
90
+ end
91
+ should_respond_with :success
92
+ should_render_template :friend_link
93
+ should "have 'stop being friends' in the body" do
94
+ assert @response.body.include?(I18n.t('muck.friends.stop_being_friends_with', :user => @friend1.display_name))
95
+ end
96
+ end
97
+ context "current user is not friend with other user, but other user follows current user" do
98
+ setup do
99
+ @controller.stubs(:other_user).returns(@follower1)
100
+ get :friend_link
101
+ end
102
+ should_respond_with :success
103
+ should_render_template :friend_link
104
+ should "have 'accept friend request' in the body" do
105
+ assert @response.body.include?(I18n.t('muck.friends.acccept_friend_request', :user => @follower1.display_name))
106
+ end
107
+ end
108
+ end
109
+
110
+ context "enable_following is true and enable_friending is false" do
111
+ setup do
112
+ GlobalConfig.enable_following = true
113
+ GlobalConfig.enable_friending = false
114
+ end
115
+ context "no current user" do
116
+ setup do
117
+ @controller.stubs(:current_user).returns(nil)
118
+ get :friend_link
119
+ end
120
+ should_respond_with :success
121
+ should_render_template :friend_link
122
+ should "have login/signup in the body" do
123
+ assert @response.body.include?(I18n.t("muck.friends.muck.friends.login_or_sign_up_to_follow"), :login => link_to(I18n.t('muck.friends.login'), login_path), :signup => link_to(I18n.t('muck.friends.signup'), signup_path))
124
+ end
125
+ end
126
+ context "current user is not following other user" do
127
+ setup do
128
+ @other_user = Factory(:user)
129
+ @controller.stubs(:other_user).returns(@other_user)
130
+ get :friend_link
131
+ end
132
+ should_respond_with :success
133
+ should_render_template :friend_link
134
+ should "have 'follow' in the body" do
135
+ assert @response.body.include?(I18n.t('muck.friends.start_following', :user => @other_user.display_name))
136
+ end
137
+ end
138
+ context "current user is following the other user" do
139
+ setup do
140
+ @being_followed = Factory(:user)
141
+ @aaron.follow(@being_followed)
142
+ @controller.stubs(:other_user).returns(@being_followed)
143
+ get :friend_link
144
+ end
145
+ should_respond_with :success
146
+ should_render_template :friend_link
147
+ should "have 'stop following' in the body" do
148
+ assert @response.body.include?(I18n.t('muck.friends.stop_following', :user => @being_followed.display_name))
149
+ end
150
+ end
151
+ context "current user is not friend with other user, but other user follows current user" do
152
+ setup do
153
+ @controller.stubs(:other_user).returns(@follower1)
154
+ get :friend_link
155
+ end
156
+ should_respond_with :success
157
+ should_render_template :friend_link
158
+ should "have 'follow' in the body" do
159
+ assert @response.body.include?(I18n.t('muck.friends.start_following', :user => @follower1.display_name))
160
+ end
161
+ end
162
+ end
163
+
164
+ context "enable_following is false and enable_friending is true" do
165
+ setup do
166
+ GlobalConfig.enable_following = false
167
+ GlobalConfig.enable_friending = true
168
+ end
169
+ context "no current user" do
170
+ setup do
171
+ @controller.stubs(:current_user).returns(nil)
172
+ get :friend_link
173
+ end
174
+ should_respond_with :success
175
+ should_render_template :friend_link
176
+ should "have login/signup in the body" do
177
+ assert @response.body.include?(I18n.t("muck.friends.muck.friends.login_or_sign_up_to_friend"), :login => link_to(I18n.t('muck.friends.login'), login_path), :signup => link_to(I18n.t('muck.friends.signup'), signup_path))
178
+ end
179
+ end
180
+ context "current user is not friends with the other user" do
181
+ setup do
182
+ @other_user = Factory(:user)
183
+ @controller.stubs(:other_user).returns(@other_user)
184
+ get :friend_link
185
+ end
186
+ should_respond_with :success
187
+ should_render_template :friend_link
188
+ should "have 'friend request' in the body" do
189
+ assert @response.body.include?(I18n.t('muck.friends.friend_request_prompt', :user => @other_user.display_name))
190
+ end
191
+ end
192
+ context "current user has sent a friend request to the other user" do
193
+ setup do
194
+ @being_followed = Factory(:user)
195
+ @aaron.follow(@being_followed)
196
+ @controller.stubs(:other_user).returns(@being_followed)
197
+ get :friend_link
198
+ end
199
+ should_respond_with :success
200
+ should_render_template :friend_link
201
+ should "have 'friend request pending' in the body" do
202
+ assert @response.body.include?(I18n.t('muck.friends.friend_request_pending', :link => ''))
203
+ end
204
+ end
205
+ context "current user is not friend with other user, but other user has sent a friend request" do
206
+ setup do
207
+ @controller.stubs(:other_user).returns(@follower1)
208
+ get :friend_link
209
+ end
210
+ should_respond_with :success
211
+ should_render_template :friend_link
212
+ should "have 'accept friend request' in the body" do
213
+ assert @response.body.include?(I18n.t('muck.friends.acccept_friend_request', :user => @follower1.display_name))
214
+ end
215
+ end
216
+ end
217
+
218
+ end
219
+
47
220
  context 'all friends' do
48
221
  setup do
49
222
  get :all_friends
@@ -51,7 +224,7 @@ class Muck::DefaultControllerTest < ActionController::TestCase
51
224
  should_respond_with :success
52
225
  should_render_template :all_friends
53
226
  end
54
-
227
+
55
228
  context 'mutual friends' do
56
229
  setup do
57
230
  get :mutual_friends
@@ -86,12 +259,12 @@ class Muck::DefaultControllerTest < ActionController::TestCase
86
259
 
87
260
  context 'friend requests' do
88
261
  setup do
89
- @allow_following = GlobalConfig.allow_following
90
- GlobalConfig.allow_following = false
262
+ @enable_following = GlobalConfig.enable_following
263
+ GlobalConfig.enable_following = false
91
264
  get :friend_requests
92
265
  end
93
266
  teardown do
94
- GlobalConfig.allow_following = @allow_following
267
+ GlobalConfig.enable_following = @enable_following
95
268
  end
96
269
  should_respond_with :success
97
270
  should_render_template :friend_requests
@@ -107,16 +107,16 @@ class Muck::FriendsControllerTest < ActionController::TestCase
107
107
 
108
108
  context "Following allowed" do
109
109
  setup do
110
- @temp_allow_following = GlobalConfig.allow_following
111
- GlobalConfig.allow_following = true
110
+ @temp_enable_following = GlobalConfig.enable_following
111
+ GlobalConfig.enable_following = true
112
112
  Friend.destroy_all
113
113
  @aaron.follow(@quentin)
114
114
  @quentin.become_friends_with(@aaron)
115
115
  end
116
116
  teardown do
117
- GlobalConfig.allow_following = @temp_allow_following
117
+ GlobalConfig.enable_following = @temp_enable_following
118
118
  end
119
- context 'js request' do
119
+ context 'DELETE to destroy js request' do
120
120
  setup do
121
121
  delete :destroy, { :user_id => @quentin.to_param, :id => @aaron.to_param, :format => 'js'}
122
122
  end
@@ -129,7 +129,7 @@ class Muck::FriendsControllerTest < ActionController::TestCase
129
129
  assert @quentin.followed_by?(@aaron)
130
130
  end
131
131
  end
132
- context 'html request' do
132
+ context 'DELETE to destroy html request' do
133
133
  setup do
134
134
  delete :destroy, { :user_id => @quentin.to_param, :id => @aaron.to_param}
135
135
  end
@@ -139,14 +139,14 @@ class Muck::FriendsControllerTest < ActionController::TestCase
139
139
 
140
140
  context 'Following not allowed' do
141
141
  setup do
142
- @temp_allow_following = GlobalConfig.allow_following
143
- GlobalConfig.allow_following = false
142
+ @temp_enable_following = GlobalConfig.enable_following
143
+ GlobalConfig.enable_following = false
144
144
  Friend.destroy_all
145
145
  @aaron.follow(@quentin)
146
146
  @quentin.become_friends_with(@aaron)
147
147
  end
148
148
  teardown do
149
- GlobalConfig.allow_following = @temp_allow_following
149
+ GlobalConfig.enable_following = @temp_enable_following
150
150
  end
151
151
  context 'js request' do
152
152
  setup do
@@ -32,139 +32,176 @@ class UserTest < ActiveSupport::TestCase
32
32
  @follower_guy = Factory(:user)
33
33
  end
34
34
 
35
- should "become friends" do
36
- assert @aaron.follow(@quentin)
37
- assert @quentin.become_friends_with(@aaron)
38
- debugger
39
-
40
- end
41
-
42
- should "have friends" do
43
- @aaron.follow(@quentin)
44
- @quentin.become_friends_with(@aaron)
45
- @friend_guy.follow(@quentin)
46
- @quentin.become_friends_with(@friend_guy)
47
- @quentin.reload
48
- @aaron.reload
49
- @friend_guy.reload
50
- assert @quentin.friends.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
51
- assert @aaron.friends.any?{|f| f.id == @quentin.id}
52
- assert @friend_guy.friends.any?{|f| f.id == @quentin.id}
53
- end
54
-
55
- should "not have follower as friend" do
56
- @follower_guy.follow(@quentin)
57
- assert !@quentin.friends.any?{|f| f.id == @follower_guy.id}
35
+ context "following disabled" do
36
+ setup do
37
+ @temp_enable_following = GlobalConfig.enable_following
38
+ GlobalConfig.enable_following = false
39
+ end
40
+ teardown do
41
+ GlobalConfig.enable_following = @temp_enable_following
42
+ end
43
+ should "stop being friends" do
44
+ assert @quentin.follow(@aaron)
45
+ assert @aaron.become_friends_with(@quentin)
46
+ assert @quentin.drop_friend(@aaron)
47
+ @quentin.reload
48
+ @aaron.reload
49
+ assert !@quentin.friend_of?(@aaron)
50
+ assert !@quentin.following?(@aaron)
51
+ assert !@quentin.followed_by?(@aaron)
52
+ assert !@aaron.friend_of?(@quentin)
53
+ assert !@aaron.following?(@quentin)
54
+ assert !@aaron.followed_by?(@quentin)
55
+ end
56
+ context "drop_friend following not enabled" do
57
+ setup do
58
+ assert @quentin.follow(@aaron)
59
+ assert @aaron.become_friends_with(@quentin)
60
+ assert @quentin.drop_friend(@aaron)
61
+ end
62
+ should "stop being friends with the user and don't retain follow" do
63
+ assert !@quentin.followings.any?{|f| f.id == @aaron.id}
64
+ assert !@aaron.followings.any?{|f| f.id == @quentin.id}
65
+ end
66
+ end
58
67
  end
59
68
 
60
- should "have followers" do
61
- @follower_guy.follow(@quentin)
62
- assert @quentin.followers.any?{|f| f.id == @follower_guy.id}
63
- end
64
-
65
- should "have people user follows (followings)" do
66
- @follower_guy.follow(@quentin)
67
- assert @follower_guy.followings.any?{|f| f.id == @quentin.id}
68
- end
69
-
70
- should "be a friend" do
71
- @quentin.follow(@aaron)
72
- @quentin.follow(@friend_guy)
73
- @aaron.become_friends_with(@quentin)
74
- @friend_guy.become_friends_with(@quentin)
75
- assert_equal @quentin.occurances_as_friend.count, 2
76
- end
77
-
78
- should "find friendships initiated by me" do
79
- @quentin.follow(@aaron)
80
- @quentin.follow(@friend_guy)
81
- assert_equal 2, @quentin.friendships_initiated_by_me.count
82
- assert @quentin.friendships_initiated_by_me.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
83
- end
84
-
85
- should "find friendships not initiated by me" do
86
- @aaron.follow(@quentin)
87
- @friend_guy.follow(@quentin)
88
- assert_equal 2, @quentin.friendships_not_initiated_by_me.count
89
- assert @quentin.friendships_not_initiated_by_me.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
90
- end
91
-
92
- should "follow the user" do
93
- @quentin.follow(@aaron)
94
- assert @quentin.followings.any?{|f| f.id == @aaron.id}
95
- end
96
-
97
- should "stop following the user" do
98
- @quentin.follow(@aaron)
99
- @quentin.stop_following(@aaron)
100
- assert !@quentin.followings.any?{|f| f.id == @aaron.id}
101
- end
102
-
103
- should "become friends" do
104
- @quentin.follow(@aaron)
105
- @aaron.become_friends_with(@quentin)
106
- @quentin.reload
107
- @aaron.reload
108
- assert @aaron.friends.any?{|f| f.id == @quentin.id}
109
- assert @quentin.friends.any?{|f| f.id == @aaron.id}
110
- end
69
+ context "following enabled" do
70
+ setup do
71
+ @temp_enable_following = GlobalConfig.enable_following
72
+ GlobalConfig.enable_following = true
73
+ end
74
+ teardown do
75
+ GlobalConfig.enable_following = @temp_enable_following
76
+ end
77
+ should "stop being friends but still allow follow" do
78
+ assert @quentin.follow(@aaron)
79
+ assert @aaron.become_friends_with(@quentin)
80
+ assert @quentin.drop_friend(@aaron)
81
+ @quentin.reload
82
+ @aaron.reload
83
+ assert !@quentin.friend_of?(@aaron)
84
+ assert !@quentin.following?(@aaron)
85
+ assert @quentin.followed_by?(@aaron)
86
+ assert !@aaron.friend_of?(@quentin)
87
+ assert @aaron.following?(@quentin)
88
+ assert !@aaron.followed_by?(@quentin)
89
+ end
90
+ context "drop_friend" do
91
+ setup do
92
+ assert @quentin.follow(@aaron)
93
+ end
94
+ should "stop following the user" do
95
+ assert @aaron.become_friends_with(@quentin)
96
+ assert @quentin.drop_friend(@aaron)
97
+ assert !@quentin.followings.any?{|f| f.id == @aaron.id}
98
+ assert @aaron.followings.any?{|f| f.id == @quentin.id}
99
+ end
100
+ should "stop being friends with the user but retain follow" do
101
+ assert @quentin.drop_friend(@aaron)
102
+ assert !@quentin.followings.any?{|f| f.id == @aaron.id}
103
+ end
104
+ end
105
+ should "become friends" do
106
+ assert @aaron.follow(@quentin)
107
+ assert @quentin.become_friends_with(@aaron)
108
+ end
111
109
 
112
- should "stop being friends" do
113
- @temp_allow_following = GlobalConfig.allow_following
114
- GlobalConfig.allow_following = false
115
- @quentin.follow(@aaron)
116
- @aaron.become_friends_with(@quentin)
117
- @quentin.drop_friend(@aaron)
118
- assert !@quentin.friend_of?(@aaron)
119
- assert !@quentin.following?(@aaron)
120
- assert !@quentin.followed_by?(@aaron)
121
- assert !@aaron.friend_of?(@quentin)
122
- assert !@aaron.following?(@quentin)
123
- assert !@aaron.followed_by?(@quentin)
124
- GlobalConfig.allow_following = @temp_allow_following
125
- end
110
+ should "have friends" do
111
+ assert @aaron.follow(@quentin)
112
+ assert @quentin.become_friends_with(@aaron)
113
+ assert @friend_guy.follow(@quentin)
114
+ assert @quentin.become_friends_with(@friend_guy)
115
+ @quentin.reload
116
+ @aaron.reload
117
+ @friend_guy.reload
118
+ assert @quentin.friends.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
119
+ assert @aaron.friends.any?{|f| f.id == @quentin.id}
120
+ assert @friend_guy.friends.any?{|f| f.id == @quentin.id}
121
+ end
126
122
 
127
- should "stop being friends but still allow follow" do
128
- @temp_allow_following = GlobalConfig.allow_following
129
- GlobalConfig.allow_following = true
130
- @quentin.follow(@aaron)
131
- @aaron.become_friends_with(@quentin)
132
- @quentin.drop_friend(@aaron)
133
- @quentin.reload
134
- @aaron.reload
135
- assert !@quentin.friend_of?(@aaron)
136
- assert !@quentin.following?(@aaron)
137
- assert @quentin.followed_by?(@aaron)
138
- assert !@aaron.friend_of?(@quentin)
139
- assert @aaron.following?(@quentin)
140
- assert !@aaron.followed_by?(@quentin)
141
- GlobalConfig.allow_following = @temp_allow_following
142
- end
143
-
144
- should "not have a network" do
145
- assert !@quentin.has_network?
146
- end
147
-
148
- should "have a network" do
149
- @quentin.follow(@aaron)
150
- assert @quentin.has_network?
151
- end
152
-
153
- should "block user" do
154
- @quentin.follow(@aaron)
155
- @aaron.block_user(@quentin)
156
- assert !@aaron.friends.any?{|f| f.id == @quentin.id}
157
- assert !@aaron.followers.any?{|f| f.id == @quentin.id}
158
- assert !@quentin.followings.any?{|f| f.id == @aaron.id}
123
+ should "not have follower as friend" do
124
+ assert @follower_guy.follow(@quentin)
125
+ assert !@quentin.friends.any?{|f| f.id == @follower_guy.id}
126
+ end
127
+
128
+ should "have followers" do
129
+ assert @follower_guy.follow(@quentin)
130
+ assert @quentin.followers.any?{|f| f.id == @follower_guy.id}
131
+ end
132
+
133
+ should "have people user follows (followings)" do
134
+ assert @follower_guy.follow(@quentin)
135
+ assert @follower_guy.followings.any?{|f| f.id == @quentin.id}
136
+ end
137
+
138
+ should "be a friend" do
139
+ assert @quentin.follow(@aaron)
140
+ assert @quentin.follow(@friend_guy)
141
+ assert @aaron.become_friends_with(@quentin)
142
+ assert @friend_guy.become_friends_with(@quentin)
143
+ assert_equal @quentin.occurances_as_friend.count, 2
144
+ end
145
+
146
+ should "find friendships initiated by me" do
147
+ assert @quentin.follow(@aaron)
148
+ assert @quentin.follow(@friend_guy)
149
+ assert_equal 2, @quentin.friendships_initiated_by_me.count
150
+ assert @quentin.friendships_initiated_by_me.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
151
+ end
152
+
153
+ should "find friendships not initiated by me" do
154
+ assert @aaron.follow(@quentin)
155
+ assert @friend_guy.follow(@quentin)
156
+ assert_equal 2, @quentin.friendships_not_initiated_by_me.count
157
+ assert @quentin.friendships_not_initiated_by_me.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
158
+ end
159
+
160
+ should "follow the user" do
161
+ assert @quentin.follow(@aaron)
162
+ assert @quentin.followings.any?{|f| f.id == @aaron.id}
163
+ end
164
+
165
+ should "stop following the user" do
166
+ assert @quentin.follow(@aaron)
167
+ assert @quentin.stop_following(@aaron)
168
+ assert !@quentin.followings.any?{|f| f.id == @aaron.id}
169
+ end
170
+
171
+ should "become friends" do
172
+ assert @quentin.follow(@aaron)
173
+ assert @aaron.become_friends_with(@quentin)
174
+ @quentin.reload
175
+ @aaron.reload
176
+ assert @aaron.friends.any?{|f| f.id == @quentin.id}
177
+ assert @quentin.friends.any?{|f| f.id == @aaron.id}
178
+ end
179
+ should "not have a network" do
180
+ assert !@quentin.has_network?
181
+ end
182
+
183
+ should "have a network" do
184
+ assert @quentin.follow(@aaron)
185
+ assert @quentin.has_network?
186
+ end
187
+
188
+ should "block user" do
189
+ assert @quentin.follow(@aaron)
190
+ assert @aaron.block_user(@quentin)
191
+ assert !@aaron.friends.any?{|f| f.id == @quentin.id}
192
+ assert !@aaron.followers.any?{|f| f.id == @quentin.id}
193
+ assert !@quentin.followings.any?{|f| f.id == @aaron.id}
194
+ end
195
+
196
+ should "unblock user" do
197
+ assert @quentin.follow(@aaron)
198
+ assert @aaron.block_user(@quentin)
199
+ assert @aaron.unblock_user(@quentin)
200
+ assert @aaron.followers.any?{|f| f.id == @quentin.id}
201
+ assert @quentin.followings.any?{|f| f.id == @aaron.id}
202
+ end
159
203
  end
160
204
 
161
- should "unblock user" do
162
- @quentin.follow(@aaron)
163
- @aaron.block_user(@quentin)
164
- @aaron.unblock_user(@quentin)
165
- assert @aaron.followers.any?{|f| f.id == @quentin.id}
166
- assert @quentin.followings.any?{|f| f.id == @aaron.id}
167
- end
168
205
  end
169
206
 
170
207
  end