saucy 0.2.41 → 0.2.42

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.
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