social_stream 0.1.7 → 0.2.0

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/Gemfile.lock +48 -44
  2. data/app/controllers/ties_controller.rb +1 -0
  3. data/app/models/ability.rb +2 -0
  4. data/app/models/actor.rb +7 -8
  5. data/app/models/permission.rb +80 -0
  6. data/app/models/relation.rb +1 -6
  7. data/app/models/tie.rb +34 -42
  8. data/app/views/activities/_child.html.erb +1 -2
  9. data/app/views/activities/_jquery.html.erb +2 -3
  10. data/app/views/activities/_options.html.erb +1 -1
  11. data/app/views/activities/_root.html.erb +1 -2
  12. data/app/views/comments/_new.html.erb +18 -15
  13. data/app/views/groups/_followers.html.erb +16 -14
  14. data/app/views/groups/_group.html.erb +1 -1
  15. data/app/views/groups/_location.html.erb +3 -0
  16. data/app/views/groups/show.html.erb +2 -2
  17. data/app/views/home/_contacts.html.erb +2 -2
  18. data/app/views/home/_groups.html.erb +23 -0
  19. data/app/views/home/_options.html.erb +0 -6
  20. data/app/views/home/_right.html.erb +1 -6
  21. data/app/views/home/index.html.erb +3 -3
  22. data/app/views/posts/_post.html.erb +1 -1
  23. data/app/views/ties/_suggestions.html.erb +7 -1
  24. data/app/views/ties/_tie.html.erb +1 -1
  25. data/app/views/users/_contacts.html.erb +16 -18
  26. data/app/views/users/_groups.html.erb +1 -2
  27. data/app/views/users/_location.html.erb +3 -0
  28. data/app/views/users/_logo.html.erb +2 -4
  29. data/app/views/users/_menu.html.erb +3 -26
  30. data/app/views/users/_middle_show.html.erb +0 -1
  31. data/app/views/users/_options.html.erb +5 -0
  32. data/app/views/users/_right_show.html.erb +9 -0
  33. data/app/views/users/show.html.erb +2 -2
  34. data/config/locales/en.yml +3 -2
  35. data/lib/generators/social_stream/templates/public/images/btn/{btn_follower.png → btn_group.png} +0 -0
  36. data/lib/generators/social_stream/templates/public/images/logos/actor/group.png +0 -0
  37. data/lib/generators/social_stream/templates/public/images/logos/actor/user.png +0 -0
  38. data/lib/generators/social_stream/templates/public/images/logos/original/group.png +0 -0
  39. data/lib/generators/social_stream/templates/public/images/logos/original/user.png +0 -0
  40. data/lib/generators/social_stream/templates/public/images/logos/profile/group.png +0 -0
  41. data/lib/generators/social_stream/templates/public/images/logos/profile/user.png +0 -0
  42. data/lib/generators/social_stream/templates/public/images/logos/tie/group.png +0 -0
  43. data/lib/generators/social_stream/templates/public/images/logos/tie/user.png +0 -0
  44. data/lib/generators/social_stream/templates/public/images/{btn/title_background.png → title_background.png} +0 -0
  45. data/lib/generators/social_stream/templates/public/stylesheets/middle.css +1 -1
  46. data/lib/generators/social_stream/templates/public/stylesheets/right.css +1 -0
  47. data/lib/generators/social_stream/templates/seeds.yml +20 -20
  48. data/lib/social_stream/ability.rb +26 -0
  49. data/lib/social_stream/version.rb +1 -1
  50. data/lib/tasks/db/populate.rake +25 -6
  51. data/social_stream.gemspec +2 -1
  52. data/spec/dummy/db/seeds/social_stream.yml +43 -33
  53. data/spec/factories/tie.rb +15 -10
  54. data/spec/models/activity_spec.rb +83 -146
  55. data/spec/models/tie_spec.rb +113 -0
  56. metadata +52 -25
  57. data/spec/dummy/app/models/ability.rb +0 -23
@@ -60,7 +60,7 @@
60
60
  }
61
61
  .tie_header {
62
62
  vertical-align: middle;
63
- background: transparent url(../images/btn/title_background.png) scroll 0px;
63
+ background: transparent url(../images/title_background.png) scroll 0px;
64
64
  padding-left: 10px;
65
65
  display: block;
66
66
  }
@@ -42,6 +42,7 @@
42
42
  padding-top: 2px;
43
43
  vertical-align:top;
44
44
  display: inline-block;
45
+ font-weight:bold;
45
46
  }
46
47
 
47
48
  .contacts_footer {
@@ -1,40 +1,33 @@
1
1
  # Seed configuration for Social Stream
2
2
  #
3
- # Define your relations and add SocialStream.seed! to db/seeds.rb
3
+ # Define the relations and permissions supported by your application
4
4
  #
5
5
  relations:
6
- # User to User
7
6
  user-friend:
8
7
  sender_type: User
9
8
  receiver_type: User
10
9
  name: friend
11
- # Friendship is a reciprocal relation
12
10
  inverse: user-friend
13
- # It is set for users by default
14
11
  reflexive: true
15
12
  permissions:
16
- - [ create, resources, weak_set ]
17
- - [ read, resources, group_set ]
18
- - [ update, resources, weak_set ]
19
- - [ destroy, resources, weak_set ]
13
+ - [ create, activity, inverse_weak_set ]
14
+ - [ read, activity, inverse_group_set ]
15
+ - [ update, activity, inverse_weak_set ]
16
+ - [ destroy, activity, inverse_weak_set ]
20
17
  user-public:
21
18
  sender_type: User
22
19
  receiver_type: User
23
20
  name: public
24
- # This relation is weaker than user-friend
25
21
  parent: user-friend
26
- # This relation is also reciprocal
27
22
  inverse: user-public
28
23
  permissions:
29
- - [ read, resources, group_set ]
24
+ - [ read, activity, inverse_group_set ]
30
25
  user-friend-request:
31
26
  sender_type: User
32
27
  receiver_type: User
33
28
  name: friend_request
34
- # This relation is the request for user-friend
35
29
  granted: user-friend
36
30
 
37
- # User to Group
38
31
  user-group-member:
39
32
  sender_type: User
40
33
  receiver_type: Group
@@ -44,21 +37,28 @@ relations:
44
37
  sender_type: User
45
38
  receiver_type: Group
46
39
  name: follower
47
- parent: user-group-member
48
40
  user-group-public:
49
41
  sender_type: User
50
42
  receiver_type: Group
51
43
  name: public
52
- parent: user-group-follower
44
+ parent: user-group-member
45
+ inverse: group-user-public
53
46
 
54
- # Group to User
55
47
  group-user-member:
56
48
  sender_type: Group
57
49
  receiver_type: User
58
50
  name: member
59
51
  inverse: user-group-member
60
52
  permissions:
61
- - [ create, resources, weak_set ]
62
- - [ read, resources, group_set ]
63
- - [ update, resources, weak_group_set ]
64
- - [ destroy, resources, weak_group_set ]
53
+ - [ create, activity, inverse_weak_set ]
54
+ - [ read, activity, inverse_group_set ]
55
+ - [ update, activity, inverse_weak_group_set ]
56
+ - [ destroy, activity, inverse_weak_group_set ]
57
+ group-user-public:
58
+ sender_type: Group
59
+ receiver_type: User
60
+ name: public
61
+ parent: group-user-member
62
+ inverse: user-group-public
63
+ permissions:
64
+ - [ read, activity, inverse_group_set ]
@@ -0,0 +1,26 @@
1
+ module SocialStream
2
+ class Ability
3
+ include CanCan::Ability
4
+
5
+ def initialize(user)
6
+ can :create, Activity do |a|
7
+ # All ties authors must the user
8
+ a.tie.sender_subject == user &&
9
+ a.tie.permission?(user, 'create', 'activity')
10
+ end
11
+
12
+ can :read, Activity do |a|
13
+ a.tie.relation.name == 'public' ||
14
+ a.tie.permission?(user, 'read', 'activity')
15
+ end
16
+
17
+ can :update, Activity do |a|
18
+ a.tie.permission?(user, 'update', 'activity')
19
+ end
20
+
21
+ can :destroy, Activity do |a|
22
+ a.tie.permission?(user, 'destroy', 'activity')
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module SocialStream
2
- VERSION = "0.1.7".freeze
2
+ VERSION = "0.2.0".freeze
3
3
  end
@@ -27,7 +27,7 @@ namespace :db do
27
27
  # = Users
28
28
 
29
29
  # Create demo user if not present
30
- if User.find_by_name('demostration').blank?
30
+ if User.find_by_name('demo').blank?
31
31
  User.create! :name => 'demostration',
32
32
  :email => 'demostration@test.com',
33
33
  :password => 'demostration',
@@ -62,18 +62,37 @@ namespace :db do
62
62
 
63
63
  Forgery::Basic.number(:at_most => users.size).times do
64
64
  user = users.delete_at((rand * users.size).to_i)
65
- u.ties.create :receiver => user.actor,
66
- :relation => user_relations.random
65
+ u.sent_ties.create :receiver => user.actor,
66
+ :relation => user_relations.random
67
67
  end
68
+
68
69
  groups = available_groups.dup
69
- group_relations = Relation.mode('User', 'Group')
70
+ group_relations = Relation.mode('User', 'Group').all
70
71
 
71
72
  Forgery::Basic.number(:at_most => groups.size).times do
72
73
  group = groups.delete_at((rand * groups.size).to_i)
73
- u.ties.create :receiver => group.actor,
74
- :relation => group_relations.random
74
+ u.sent_ties.create :receiver => group.actor,
75
+ :relation => group_relations.random
75
76
  end
76
77
  end
78
+
79
+ # = Posts
80
+
81
+ Tie.all.each do |t|
82
+ # Only Post from users
83
+ next if t.relation.sender_type == "Group"
84
+
85
+ updated = Time.at(rand(Time.now))
86
+
87
+ p = Post.create :text =>
88
+ "This post should be for #{ I18n.t('other', :scope => t.relation.name) } of #{ t.receiver.name }.\n#{ Forgery::LoremIpsum.paragraph(:random => true) }",
89
+ :created_at => Time.at(rand(updated)),
90
+ :updated_at => updated,
91
+ :_activity_tie_id => t.id
92
+
93
+ p.post_activity.update_attributes(:created_at => p.created_at,
94
+ :updated_at => p.updated_at)
95
+ end
77
96
  end
78
97
  end
79
98
  end
@@ -16,7 +16,8 @@ Gem::Specification.new do |s|
16
16
  s.add_runtime_dependency('paperclip', '~> 2.3.4')
17
17
  s.add_runtime_dependency('jquery-rails', '~> 0.2.5')
18
18
  s.add_runtime_dependency('cancan', '~> 1.4.0')
19
- s.add_development_dependency('rails', '~> 3.0.1')
19
+ s.add_runtime_dependency('will_paginate', '~> 2.3.15')
20
+ s.add_development_dependency('rails', '~> 3.0.3')
20
21
  s.add_development_dependency('capybara', '~> 0.3.9')
21
22
  s.add_development_dependency('sqlite3-ruby')
22
23
  if RUBY_VERSION < '1.9'
@@ -1,54 +1,64 @@
1
+ # Seed configuration for Social Stream
2
+ #
3
+ # Define the relations and permissions supported by your application
4
+ #
1
5
  relations:
2
6
  user-friend:
3
7
  sender_type: User
4
8
  receiver_type: User
5
9
  name: friend
6
10
  inverse: user-friend
11
+ reflexive: true
7
12
  permissions:
8
- - [ create, resources, weak_set ]
9
- - [ read, resources, group_set ]
10
- - [ update, resources, weak_set ]
11
- - [ destroy, resources, weak_set ]
12
- user-fof:
13
- sender_type: User
14
- receiver_type: User
15
- name: friend_of_friend
16
- parent: user-friend
17
- inverse: user-fof
18
- permissions:
19
- - [ read, resources, group_set ]
13
+ - [ create, activity, inverse_weak_set ]
14
+ - [ read, activity, inverse_group_set ]
15
+ - [ update, activity, inverse_weak_set ]
16
+ - [ destroy, activity, inverse_weak_set ]
20
17
  user-public:
21
18
  sender_type: User
22
19
  receiver_type: User
23
20
  name: public
24
- parent: user-fof
21
+ parent: user-friend
25
22
  inverse: user-public
26
23
  permissions:
27
- - [ read, resources, group_set ]
28
-
29
- user-group-admin:
24
+ - [ read, activity, inverse_group_set ]
25
+ user-friend-request:
30
26
  sender_type: User
31
- receiver_type: Group
32
- name: admin
33
- permissions:
34
- - [ create, resources, weak_set ]
35
- - [ read, resources, group_set ]
36
- - [ update, resources, weak_group_set ]
37
- - [ destroy, resources, weak_group_set ]
38
- user-group-user:
27
+ receiver_type: User
28
+ name: friend_request
29
+ granted: user-friend
30
+
31
+ user-group-member:
39
32
  sender_type: User
40
33
  receiver_type: Group
41
- name: user
42
- parent: user-group-admin
43
- permissions:
44
- - [ create, resources, weak_set ]
45
- - [ read, resources, group_set ]
46
- - [ update, resources, weak_group_set ]
47
- - [ destroy, resources, weak_group_set ]
34
+ name: member
35
+ inverse: group-user-member
48
36
  user-group-follower:
49
37
  sender_type: User
50
38
  receiver_type: Group
51
39
  name: follower
52
- parent: user-group-user
40
+ user-group-public:
41
+ sender_type: User
42
+ receiver_type: Group
43
+ name: public
44
+ parent: user-group-member
45
+ inverse: group-user-public
46
+
47
+ group-user-member:
48
+ sender_type: Group
49
+ receiver_type: User
50
+ name: member
51
+ inverse: user-group-member
52
+ permissions:
53
+ - [ create, activity, inverse_weak_set ]
54
+ - [ read, activity, inverse_group_set ]
55
+ - [ update, activity, inverse_weak_group_set ]
56
+ - [ destroy, activity, inverse_weak_group_set ]
57
+ group-user-public:
58
+ sender_type: Group
59
+ receiver_type: User
60
+ name: public
61
+ parent: group-user-member
62
+ inverse: user-group-public
53
63
  permissions:
54
- - [ read, resources, group_set ]
64
+ - [ read, activity, inverse_group_set ]
@@ -6,15 +6,15 @@ end
6
6
 
7
7
  # UserToUser ties
8
8
 
9
- Factory.define :friend_tie, :parent => :tie do |t|
9
+ Factory.define :friend, :parent => :tie do |t|
10
10
  t.relation { |r| Relation.mode('User', 'User').find_by_name('friend') }
11
11
  end
12
12
 
13
- Factory.define :fof_tie, :parent => :tie do |t|
14
- t.relation { |r| Relation.mode('User', 'User').find_by_name('friend_of_friend') }
13
+ Factory.define :friend_request, :parent => :tie do |t|
14
+ t.relation { |r| Relation.mode('User', 'User').find_by_name('friend_request') }
15
15
  end
16
16
 
17
- Factory.define :public_tie, :parent => :tie do |t|
17
+ Factory.define :public, :parent => :tie do |t|
18
18
  t.relation { |r| Relation.mode('User', 'User').find_by_name('public') }
19
19
  end
20
20
 
@@ -24,15 +24,20 @@ Factory.define :u2g_tie, :parent => :tie do |t|
24
24
  t.relation { |r| Relation.mode('User', 'Group').strongest }
25
25
  end
26
26
 
27
- Factory.define :admin_tie, :parent => :u2g_tie do |t|
28
- t.relation { |r| Relation.mode('User', 'Group').find_by_name('admin') }
27
+ Factory.define :member, :parent => :u2g_tie do |t|
28
+ t.relation { |r| Relation.mode('User', 'Group').find_by_name('member') }
29
29
  end
30
30
 
31
- Factory.define :user_tie, :parent => :u2g_tie do |t|
32
- t.relation { |r| Relation.mode('User', 'Group').find_by_name('user') }
31
+ Factory.define :follower, :parent => :u2g_tie do |t|
32
+ t.relation { |r| Relation.mode('User', 'Group').find_by_name('follower') }
33
33
  end
34
34
 
35
- Factory.define :follower_tie, :parent => :u2g_tie do |t|
36
- t.relation { |r| Relation.mode('User', 'Group').find_by_name('follower') }
35
+ # GroupToUser ties
36
+ Factory.define :g2u_tie, :parent => :tie do |t|
37
+ t.sender { |r| Factory(:group).actor }
38
+ t.relation { |r| Relation.mode('Group', 'User').strongest }
37
39
  end
38
40
 
41
+ Factory.define :g2u_member, :parent => :tie do |t|
42
+ t.relation { |r| Relation.mode('Group', 'User').find_by_name('member') }
43
+ end
@@ -1,17 +1,26 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  module ActivityTestHelper
4
- def create_activity_assigned_to(t)
5
- @tie = t
6
- @activity = Factory(:activity, :tie => t)
4
+ def create_activity_assigned_to(tie)
5
+ @tie = tie
6
+ @activity = Factory(:activity, :tie => tie)
7
7
  end
8
8
 
9
9
  def create_ability_accessed_by(tie_type)
10
10
  t = Factory(tie_type, :receiver => @tie.receiver)
11
- u = t.sender.subject
11
+ u = t.sender_subject
12
12
  @ability = Ability.new(u)
13
13
  end
14
14
 
15
+ def create_ability_accessed_by_sender
16
+ u = @tie.sender_subject
17
+ @ability = Ability.new(u)
18
+ end
19
+
20
+ def create_ability_accessed_publicly
21
+ @ability = Ability.new(Factory(:user))
22
+ end
23
+
15
24
  shared_examples_for "Allows Creating" do
16
25
  it "should allow create" do
17
26
  @ability.should be_able_to(:create, @activity)
@@ -80,15 +89,14 @@ describe Activity do
80
89
  end
81
90
  end
82
91
 
83
- describe "belonging to friend tie" do
92
+ describe "belonging to friend" do
84
93
  before do
85
- create_activity_assigned_to(Factory(:friend_tie))
94
+ create_activity_assigned_to(Factory(:friend))
86
95
  end
87
96
 
88
- describe "accessed by same friend" do
97
+ describe "accessed by sender" do
89
98
  before do
90
- u = @tie.sender.subject
91
- @ability = Ability.new(u)
99
+ create_ability_accessed_by_sender
92
100
  end
93
101
 
94
102
  it_should_behave_like "Allows Creating"
@@ -99,7 +107,7 @@ describe Activity do
99
107
 
100
108
  describe "accessed by different friend" do
101
109
  before do
102
- create_ability_accessed_by :friend_tie
110
+ create_ability_accessed_by :friend
103
111
  end
104
112
 
105
113
  it_should_behave_like "Denies Creating"
@@ -108,9 +116,9 @@ describe Activity do
108
116
  it_should_behave_like "Denies Destroying"
109
117
  end
110
118
 
111
- describe "accessed by friend of friend" do
119
+ describe "accessed by friend request" do
112
120
  before do
113
- create_ability_accessed_by :fof_tie
121
+ create_ability_accessed_by :friend_request
114
122
  end
115
123
 
116
124
  it_should_behave_like "Denies Creating"
@@ -121,7 +129,7 @@ describe Activity do
121
129
 
122
130
  describe "accessed publicly" do
123
131
  before do
124
- create_ability_accessed_by :public_tie
132
+ create_ability_accessed_publicly
125
133
  end
126
134
 
127
135
  it_should_behave_like "Denies Creating"
@@ -131,26 +139,15 @@ describe Activity do
131
139
  end
132
140
  end
133
141
 
134
- describe "belonging to fof tie from a friend" do
142
+ describe "belonging to friend reflexive tie" do
135
143
  before do
136
- create_activity_assigned_to(Factory(:friend_tie).related('friend_of_friend'))
137
- end
138
-
139
- describe "accessed by a friend" do
140
- before do
141
- create_ability_accessed_by :friend_tie
142
- end
143
-
144
- it_should_behave_like "Denies Creating"
145
- it_should_behave_like "Allows Reading"
146
- it_should_behave_like "Denies Updating"
147
- it_should_behave_like "Denies Destroying"
144
+ tie = Factory(:user).ties.where(:relation_id => Relation.mode('User', 'User').find_by_name('friend')).first
145
+ create_activity_assigned_to(tie)
148
146
  end
149
147
 
150
- describe "accessed by same friend" do
148
+ describe "accessed by the sender" do
151
149
  before do
152
- u = @tie.sender.subject
153
- @ability = Ability.new(u)
150
+ create_ability_accessed_by_sender
154
151
  end
155
152
 
156
153
  it_should_behave_like "Allows Creating"
@@ -159,9 +156,9 @@ describe Activity do
159
156
  it_should_behave_like "Allows Destroying"
160
157
  end
161
158
 
162
- describe "accessed by different friend of friend" do
159
+ describe "accessed by a friend" do
163
160
  before do
164
- create_ability_accessed_by :fof_tie
161
+ create_ability_accessed_by :friend
165
162
  end
166
163
 
167
164
  it_should_behave_like "Denies Creating"
@@ -170,9 +167,9 @@ describe Activity do
170
167
  it_should_behave_like "Denies Destroying"
171
168
  end
172
169
 
173
- describe "accessed publicly" do
170
+ describe "accessed by friend request" do
174
171
  before do
175
- create_ability_accessed_by :public_tie
172
+ create_ability_accessed_by :friend_request
176
173
  end
177
174
 
178
175
  it_should_behave_like "Denies Creating"
@@ -180,38 +177,40 @@ describe Activity do
180
177
  it_should_behave_like "Denies Updating"
181
178
  it_should_behave_like "Denies Destroying"
182
179
  end
183
- end
184
180
 
185
- describe "belonging to fof tie from a friend of friend" do
186
- before do
187
- create_activity_assigned_to(Factory(:fof_tie))
188
- u = @tie.sender.subject
189
- @ability = Ability.new(u)
181
+ describe "accessed publicly" do
182
+ before do
183
+ create_ability_accessed_publicly
184
+ end
185
+
186
+ it_should_behave_like "Denies Creating"
187
+ it_should_behave_like "Denies Reading"
188
+ it_should_behave_like "Denies Updating"
189
+ it_should_behave_like "Denies Destroying"
190
190
  end
191
-
192
- it_should_behave_like "Denies Creating"
193
191
  end
194
192
 
195
-
196
193
  describe "belonging to public tie" do
194
+
197
195
  before do
198
- create_activity_assigned_to(Factory(:friend_tie).related('public'))
196
+ tie = Factory(:user).ties.where(:relation_id => Relation.mode('User', 'User').find_by_name('public')).first
197
+ create_activity_assigned_to(tie)
199
198
  end
200
-
201
- describe "accessed by a friend" do
199
+
200
+ describe "accessed by the sender" do
202
201
  before do
203
- create_ability_accessed_by :friend_tie
202
+ create_ability_accessed_by_sender
204
203
  end
205
204
 
206
- it_should_behave_like "Denies Creating"
205
+ it_should_behave_like "Allows Creating"
207
206
  it_should_behave_like "Allows Reading"
208
- it_should_behave_like "Denies Updating"
209
- it_should_behave_like "Denies Destroying"
207
+ it_should_behave_like "Allows Updating"
208
+ it_should_behave_like "Allows Destroying"
210
209
  end
211
-
212
- describe "accessed by friend of friend" do
210
+
211
+ describe "accessed by a friend" do
213
212
  before do
214
- create_ability_accessed_by :fof_tie
213
+ create_ability_accessed_by :friend
215
214
  end
216
215
 
217
216
  it_should_behave_like "Denies Creating"
@@ -220,21 +219,20 @@ describe Activity do
220
219
  it_should_behave_like "Denies Destroying"
221
220
  end
222
221
 
223
- describe "accessed by same public sender" do
222
+ describe "accessed by friend request" do
224
223
  before do
225
- u = @tie.sender.subject
226
- @ability = Ability.new(u)
224
+ create_ability_accessed_by :friend_request
227
225
  end
228
226
 
229
- it_should_behave_like "Allows Creating"
227
+ it_should_behave_like "Denies Creating"
230
228
  it_should_behave_like "Allows Reading"
231
- it_should_behave_like "Allows Updating"
232
- it_should_behave_like "Allows Destroying"
229
+ it_should_behave_like "Denies Updating"
230
+ it_should_behave_like "Denies Destroying"
233
231
  end
234
232
 
235
- describe "accessed by different public" do
233
+ describe "accessed publicly" do
236
234
  before do
237
- create_ability_accessed_by :public_tie
235
+ create_ability_accessed_publicly
238
236
  end
239
237
 
240
238
  it_should_behave_like "Denies Creating"
@@ -245,24 +243,23 @@ describe Activity do
245
243
  end
246
244
 
247
245
  describe "belonging to public tie from a public" do
246
+
248
247
  before do
249
- create_activity_assigned_to(Factory(:public_tie))
250
- u = @tie.sender.subject
251
- @ability = Ability.new(u)
248
+ create_activity_assigned_to(Factory(:public))
249
+ create_ability_accessed_by_sender
252
250
  end
253
251
 
254
252
  it_should_behave_like "Denies Creating"
255
253
  end
256
254
 
257
- describe "belonging to admin tie" do
255
+ describe "belonging to member tie" do
258
256
  before do
259
- create_activity_assigned_to(Factory(:admin_tie))
257
+ create_activity_assigned_to(Factory(:member))
260
258
  end
261
259
 
262
- describe "accessed by same admin" do
260
+ describe "accessed by same member" do
263
261
  before do
264
- u = @tie.sender.subject
265
- @ability = Ability.new(u)
262
+ create_ability_accessed_by_sender
266
263
  end
267
264
 
268
265
  it_should_behave_like "Allows Creating"
@@ -271,9 +268,9 @@ describe Activity do
271
268
  it_should_behave_like "Allows Destroying"
272
269
  end
273
270
 
274
- describe "accessed by different admin" do
271
+ describe "accessed by different member" do
275
272
  before do
276
- create_ability_accessed_by :admin_tie
273
+ create_ability_accessed_by :member
277
274
  end
278
275
 
279
276
  it_should_behave_like "Denies Creating"
@@ -282,9 +279,9 @@ describe Activity do
282
279
  it_should_behave_like "Allows Destroying"
283
280
  end
284
281
 
285
- describe "accessed by user" do
282
+ describe "accessed by follower" do
286
283
  before do
287
- create_ability_accessed_by :user_tie
284
+ create_ability_accessed_by :follower
288
285
  end
289
286
 
290
287
  it_should_behave_like "Denies Creating"
@@ -293,9 +290,9 @@ describe Activity do
293
290
  it_should_behave_like "Denies Destroying"
294
291
  end
295
292
 
296
- describe "accessed by follower" do
293
+ describe "accessed publicly" do
297
294
  before do
298
- create_ability_accessed_by :follower_tie
295
+ create_ability_accessed_publicly
299
296
  end
300
297
 
301
298
  it_should_behave_like "Denies Creating"
@@ -305,26 +302,15 @@ describe Activity do
305
302
  end
306
303
  end
307
304
 
308
- describe "belonging to user tie from an admin" do
309
- before do
310
- create_activity_assigned_to(Factory(:admin_tie).related('user'))
311
- end
312
-
313
- describe "accessed by a admin" do
314
- before do
315
- create_ability_accessed_by :admin_tie
316
- end
305
+ describe "belonging to public tie from an admin" do
317
306
 
318
- it_should_behave_like "Denies Creating"
319
- it_should_behave_like "Allows Reading"
320
- it_should_behave_like "Allows Updating"
321
- it_should_behave_like "Allows Destroying"
307
+ before do
308
+ create_activity_assigned_to(Factory(:member).related('public'))
322
309
  end
323
310
 
324
- describe "accessed by same admin" do
311
+ describe "accessed by sender" do
325
312
  before do
326
- u = @tie.sender.subject
327
- @ability = Ability.new(u)
313
+ create_ability_accessed_by_sender
328
314
  end
329
315
 
330
316
  it_should_behave_like "Allows Creating"
@@ -333,9 +319,9 @@ describe Activity do
333
319
  it_should_behave_like "Allows Destroying"
334
320
  end
335
321
 
336
- describe "accessed by different user" do
322
+ describe "accessed by other member" do
337
323
  before do
338
- create_ability_accessed_by :user_tie
324
+ create_ability_accessed_by :member
339
325
  end
340
326
 
341
327
  it_should_behave_like "Denies Creating"
@@ -344,60 +330,21 @@ describe Activity do
344
330
  it_should_behave_like "Allows Destroying"
345
331
  end
346
332
 
333
+
347
334
  describe "accessed by follower" do
348
335
  before do
349
- create_ability_accessed_by :follower_tie
336
+ create_ability_accessed_by :follower
350
337
  end
351
338
 
352
339
  it_should_behave_like "Denies Creating"
353
- it_should_behave_like "Denies Reading"
340
+ it_should_behave_like "Allows Reading"
354
341
  it_should_behave_like "Denies Updating"
355
342
  it_should_behave_like "Denies Destroying"
356
343
  end
357
- end
358
-
359
- describe "belonging to follower tie" do
360
- before do
361
- create_activity_assigned_to(Factory(:user_tie).related('follower'))
362
- end
363
-
364
- describe "accessed by an admin" do
365
- before do
366
- create_ability_accessed_by :admin_tie
367
- end
368
-
369
- it_should_behave_like "Denies Creating"
370
- it_should_behave_like "Allows Reading"
371
- it_should_behave_like "Allows Updating"
372
- it_should_behave_like "Allows Destroying"
373
- end
374
344
 
375
- describe "accessed by user" do
376
- before do
377
- create_ability_accessed_by :user_tie
378
- end
379
-
380
- it_should_behave_like "Denies Creating"
381
- it_should_behave_like "Allows Reading"
382
- it_should_behave_like "Allows Updating"
383
- it_should_behave_like "Allows Destroying"
384
- end
385
-
386
- describe "accessed by same sender" do
387
- before do
388
- u = @tie.sender.subject
389
- @ability = Ability.new(u)
390
- end
391
-
392
- it_should_behave_like "Allows Creating"
393
- it_should_behave_like "Allows Reading"
394
- it_should_behave_like "Allows Updating"
395
- it_should_behave_like "Allows Destroying"
396
- end
397
-
398
- describe "accessed by different follower" do
345
+ describe "accessed publicly" do
399
346
  before do
400
- create_ability_accessed_by :follower_tie
347
+ create_ability_accessed_publicly
401
348
  end
402
349
 
403
350
  it_should_behave_like "Denies Creating"
@@ -407,14 +354,4 @@ describe Activity do
407
354
  end
408
355
  end
409
356
 
410
- describe "belonging to follower tie from a follower" do
411
- before do
412
- create_activity_assigned_to(Factory(:follower_tie))
413
- u = @tie.sender.subject
414
- @ability = Ability.new(u)
415
- end
416
-
417
- it_should_behave_like "Denies Creating"
418
- end
419
-
420
357
  end