saucy 0.2.41 → 0.2.42

Sign up to get free protection for your applications and to get access to all the features.
data/lib/saucy/project.rb CHANGED
@@ -15,7 +15,9 @@ module Saucy
15
15
  :with => %r{^[a-z0-9]+$},
16
16
  :message => "must be only lower case letters."
17
17
 
18
- after_save :update_memberships
18
+
19
+ after_create :setup_memberships
20
+ after_update :update_memberships
19
21
 
20
22
  # We have to define these here instead of mixing them in,
21
23
  # because ActiveRecord does the same.
@@ -71,21 +73,24 @@ module Saucy
71
73
 
72
74
  private
73
75
 
74
- def update_memberships
75
- if @new_user_ids
76
- @new_user_ids += admin_user_ids
77
- removed_user_ids = self.user_ids - @new_user_ids
78
- added_user_ids = @new_user_ids - self.user_ids
79
-
80
- permissions.where(:user_id => removed_user_ids).destroy_all
81
- added_user_ids.each do |added_user_id|
82
- membership =
83
- account.memberships.where(:user_id => added_user_id).first
84
- permissions.create!(:membership => membership)
85
- end
76
+ def setup_memberships
77
+ @new_user_ids ||= []
78
+ @new_user_ids += admin_user_ids
79
+ removed_user_ids = self.user_ids - @new_user_ids
80
+ added_user_ids = @new_user_ids - self.user_ids
81
+
82
+ permissions.where(:user_id => removed_user_ids).destroy_all
83
+ added_user_ids.each do |added_user_id|
84
+ membership =
85
+ account.memberships.where(:user_id => added_user_id).first
86
+ permissions.create!(:membership => membership)
86
87
  end
87
88
  end
88
89
 
90
+ def update_memberships
91
+ setup_memberships if @new_user_ids
92
+ end
93
+
89
94
  def admin_user_ids
90
95
  account.
91
96
  memberships.
@@ -114,7 +114,7 @@ describe Project, "saved" do
114
114
  end
115
115
  end
116
116
 
117
- describe Project, "assigning a new user list" do
117
+ describe Project, "assigning users on update" do
118
118
  subject { Factory(:project) }
119
119
 
120
120
  let(:account) { subject.account }
@@ -147,3 +147,24 @@ describe Project, "assigning a new user list" do
147
147
  admin.should be_member_of(subject)
148
148
  end
149
149
  end
150
+
151
+ describe Project, "assigning users on create" do
152
+ subject { Factory.build(:project) }
153
+ let(:account) { subject.account }
154
+ let!(:member) { Factory(:user) }
155
+ let!(:admin) { Factory(:user) }
156
+
157
+ before do
158
+ Factory(:membership, :account => account, :user => member)
159
+ Factory(:membership, :account => account, :user => admin, :admin => true)
160
+ subject.save
161
+ end
162
+
163
+ it "adds admins to the project" do
164
+ admin.should be_member_of(subject)
165
+ end
166
+
167
+ it "ignores normal users" do
168
+ member.should_not be_member_of(subject)
169
+ end
170
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saucy
3
3
  version: !ruby/object:Gem::Version
4
- hash: 69
5
- prerelease: false
4
+ hash: 67
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 41
10
- version: 0.2.41
9
+ - 42
10
+ version: 0.2.42
11
11
  platform: ruby
12
12
  authors:
13
13
  - thoughtbot, inc.
@@ -22,7 +22,8 @@ date: 2011-03-11 00:00:00 -05:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
- requirement: &id001 !ruby/object:Gem::Requirement
25
+ type: :runtime
26
+ version_requirements: &id001 !ruby/object:Gem::Requirement
26
27
  none: false
27
28
  requirements:
28
29
  - - ">="
@@ -32,12 +33,12 @@ dependencies:
32
33
  - 1
33
34
  - 2
34
35
  version: "1.2"
35
- type: :runtime
36
- name: formtastic
36
+ requirement: *id001
37
37
  prerelease: false
38
- version_requirements: *id001
38
+ name: formtastic
39
39
  - !ruby/object:Gem::Dependency
40
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ type: :runtime
41
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
42
  none: false
42
43
  requirements:
43
44
  - - ">="
@@ -48,12 +49,12 @@ dependencies:
48
49
  - 0
49
50
  - 3
50
51
  version: 3.0.3
51
- type: :runtime
52
- name: railties
52
+ requirement: *id002
53
53
  prerelease: false
54
- version_requirements: *id002
54
+ name: railties
55
55
  - !ruby/object:Gem::Dependency
56
- requirement: &id003 !ruby/object:Gem::Requirement
56
+ type: :runtime
57
+ version_requirements: &id003 !ruby/object:Gem::Requirement
57
58
  none: false
58
59
  requirements:
59
60
  - - ">="
@@ -64,12 +65,12 @@ dependencies:
64
65
  - 6
65
66
  - 2
66
67
  version: 2.6.2
67
- type: :runtime
68
- name: braintree
68
+ requirement: *id003
69
69
  prerelease: false
70
- version_requirements: *id003
70
+ name: braintree
71
71
  - !ruby/object:Gem::Dependency
72
- requirement: &id004 !ruby/object:Gem::Requirement
72
+ type: :runtime
73
+ version_requirements: &id004 !ruby/object:Gem::Requirement
73
74
  none: false
74
75
  requirements:
75
76
  - - "="
@@ -80,12 +81,12 @@ dependencies:
80
81
  - 3
81
82
  - 3
82
83
  version: 1.3.3
83
- type: :runtime
84
- name: sham_rack
84
+ requirement: *id004
85
85
  prerelease: false
86
- version_requirements: *id004
86
+ name: sham_rack
87
87
  - !ruby/object:Gem::Dependency
88
- requirement: &id005 !ruby/object:Gem::Requirement
88
+ type: :runtime
89
+ version_requirements: &id005 !ruby/object:Gem::Requirement
89
90
  none: false
90
91
  requirements:
91
92
  - - "="
@@ -96,12 +97,12 @@ dependencies:
96
97
  - 1
97
98
  - 2
98
99
  version: 1.1.2
99
- type: :runtime
100
- name: sinatra
100
+ requirement: *id005
101
101
  prerelease: false
102
- version_requirements: *id005
102
+ name: sinatra
103
103
  - !ruby/object:Gem::Dependency
104
- requirement: &id006 !ruby/object:Gem::Requirement
104
+ type: :development
105
+ version_requirements: &id006 !ruby/object:Gem::Requirement
105
106
  none: false
106
107
  requirements:
107
108
  - - "="
@@ -112,10 +113,9 @@ dependencies:
112
113
  - 2
113
114
  - 6
114
115
  version: 0.2.6
115
- type: :development
116
- name: aruba
116
+ requirement: *id006
117
117
  prerelease: false
118
- version_requirements: *id006
118
+ name: aruba
119
119
  description: Clearance-based Rails engine for Software as a Service (Saas) that provides account and project management
120
120
  email: support@thoughtbot.com
121
121
  executables: []
@@ -291,7 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
291
  requirements: []
292
292
 
293
293
  rubyforge_project:
294
- rubygems_version: 1.3.7
294
+ rubygems_version: 1.4.1
295
295
  signing_key:
296
296
  specification_version: 3
297
297
  summary: Clearance-based Rails engine for SaaS