adhocracy 0.3.1 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDgwMjJhOWRkMTNiNWVkODY3YjYwYWMzNjliZjNlZWQ5M2I2ODQwNQ==
4
+ ZGRlNDFlNTc1OWVlZTQ1ZjcwOTQyNjgzZTI1NWM3OGYwNDdlOTAxMA==
5
5
  data.tar.gz: !binary |-
6
- NzVhY2E5Mjk0NzI3Yjk5NTJjMTg4NjgyZjg2MTA1MzcyMTZiZDJmZg==
6
+ MmUwMDlmNDlhZmM0NWY2NTZmZWQ1ZTU2N2JiNTUwMDAxYzUzNzkyOQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YjgxNmFmZjkxYzZiY2ZkMzZjNmI3MzQ3NTE1NjY1N2ZhMWMzOTQxNDk4YjVl
10
- ZjZiMGE4MTE3YWY3NWVjOGMwYzdiZDU5ODFhMzE4MjNkYzZiM2QwNjA3ODkz
11
- ZjY5YjY3N2Y0YjZkYzQ1YmVkODIyOGQzZWRkMTkwZWVlNmZiNzg=
9
+ MDY3ODIxNGNjNDAwZDZkYzliMWE0OTAzZmExMzEzOGVkZTQ3YWQzMTcwZWU0
10
+ N2I5OGJmMWY5MTAxMDM2Nzg1NWU0ZDdkOWRlNTE0ZjQ3OGIwZTZlN2I4YzY2
11
+ NjJmZThiNzhmMDkwMmRkZjY5OWZjNjQ3ZWVlZGZjOWI5YzEzNWM=
12
12
  data.tar.gz: !binary |-
13
- ZWVkZmUzYWNmYTcyOTgwZjlmNGQ5Zjg4ZDAyYmIzNDc1YjczODM0NGZhZjUx
14
- ZTVmZGYwMTVmMzIxMzczODljZWM1NzliZjllNWU0MzRhNzEyYWJhZGI0Mzg2
15
- Yzc4NjQyNWZmYmVmOTBmNmM2OGU5M2MyYmRjMWE1ZWE4NGJiNzA=
13
+ ZTYxNzQ5ZGVjNzkxYjNjZWU4YWQ0NGRjZWU1ZmU3MGFmNmFiM2FjNWQ3NTli
14
+ NjY3YThiZGM0NzA4YWRlOWJlYTgwOWYyMGM3ZGI0MjRjNmJhODM5OWFlYjU2
15
+ ZWIzYjM3MTk2NGIzMGVkOGVlMmM1ZTFhMjk3MjVkMzAyYzRkOWM=
@@ -4,6 +4,11 @@ module Adhocracy
4
4
  belongs_to :group, polymorphic: true
5
5
 
6
6
  validate :membership_is_unique
7
+ before_destroy :member_is_not_only_officer
8
+
9
+ def is_necessary_officer?
10
+ officer? && group.officers.length <= 1
11
+ end
7
12
 
8
13
  private
9
14
  def membership_is_unique
@@ -11,5 +16,9 @@ module Adhocracy
11
16
  errors[:base] << I18n.t("activerecord.errors.models.membership.not_unique")
12
17
  end
13
18
  end
19
+
20
+ def member_is_not_only_officer
21
+ return false if is_necessary_officer?
22
+ end
14
23
  end
15
24
  end
@@ -56,7 +56,8 @@ module Adhocracy
56
56
 
57
57
  def demote_officer(member)
58
58
  membership = Adhocracy::Membership.find_by(member: member, group: self)
59
- return false if !membership.present? || !membership.officer?
59
+ return false if !membership.present? || !membership.officer? ||
60
+ membership.is_necessary_officer?
60
61
  return membership.update_column(:officer, false)
61
62
  end
62
63
 
@@ -1,3 +1,3 @@
1
1
  module Adhocracy
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4"
3
3
  end
@@ -233,6 +233,8 @@ module Adhocracy
233
233
  context "demotes officers" do
234
234
  before :each do
235
235
  @adhoc = FactoryGirl.create(:adhoc)
236
+ @first_officer = FactoryGirl.create(:user)
237
+ @adhoc.add_officer(@first_officer)
236
238
  @user = FactoryGirl.create(:user)
237
239
  end
238
240
 
@@ -17,5 +17,43 @@ module Adhocracy
17
17
  end
18
18
  end
19
19
 
20
+ context "must have at least one officer" do
21
+ before :each do
22
+ @adhoc = FactoryGirl.create(:adhoc)
23
+ @officer_1 = FactoryGirl.create(:user)
24
+ @member = FactoryGirl.create(:user)
25
+ @officer_1_membership = @adhoc.add_officer(@officer_1)
26
+ @member_membership = @adhoc.add_member(@member)
27
+ end
28
+
29
+ it "which cannot be removed" do
30
+ @adhoc.remove_member(@officer_1)
31
+ expect(@adhoc.has_officer?(@officer_1)).to be true
32
+ end
33
+
34
+ it "which cannot be demoted" do
35
+ @adhoc.demote_officer(@officer_1)
36
+ expect(@adhoc.has_officer?(@officer_1)).to be true
37
+ end
38
+
39
+ context "but if there is more than one" do
40
+
41
+ before :each do
42
+ @officer_2 = FactoryGirl.create(:user)
43
+ @officer_2_membership = @adhoc.add_officer(@officer_2)
44
+ end
45
+
46
+ it "an officer can be removed" do
47
+ @adhoc.remove_member(@officer_1)
48
+ expect(@adhoc.has_officer?(@officer_1)).to be false
49
+ end
50
+
51
+ it "an officer can be demoted" do
52
+ @adhoc.demote_officer(@officer_1)
53
+ expect(@adhoc.has_officer?(@officer_1)).to be false
54
+ end
55
+ end
56
+ end
57
+
20
58
  end
21
59
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adhocracy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - timothycommoner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-19 00:00:00.000000000 Z
11
+ date: 2014-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -253,50 +253,50 @@ signing_key:
253
253
  specification_version: 4
254
254
  summary: Adhocracy is group management engine for Rails.
255
255
  test_files:
256
- - spec/lib/adhocracy/acts_as_group_spec.rb
256
+ - spec/models/adhocracy/membership_invitation_spec.rb
257
+ - spec/models/adhocracy/membership_spec.rb
258
+ - spec/models/adhocracy/membership_request_spec.rb
259
+ - spec/factories/adhocracy_membership_requests.rb
260
+ - spec/factories/adhocracy_memberships.rb
261
+ - spec/factories/users.rb
262
+ - spec/factories/adhoc.rb
263
+ - spec/factories/adhocracy_membership_invitations.rb
257
264
  - spec/lib/adhocracy/acts_as_member_spec.rb
258
- - spec/dummy/README.rdoc
259
- - spec/dummy/bin/rails
260
- - spec/dummy/bin/bundle
261
- - spec/dummy/bin/rake
262
- - spec/dummy/config.ru
263
- - spec/dummy/db/schema.rb
264
- - spec/dummy/db/migrate/20140306214611_create_users.rb
265
- - spec/dummy/db/migrate/20140306214620_create_adhocs.rb
266
- - spec/dummy/config/routes.rb
267
- - spec/dummy/config/application.rb
268
- - spec/dummy/config/environments/test.rb
269
- - spec/dummy/config/environments/development.rb
270
- - spec/dummy/config/environments/production.rb
265
+ - spec/lib/adhocracy/acts_as_group_spec.rb
266
+ - spec/dummy/config/initializers/wrap_parameters.rb
267
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
268
+ - spec/dummy/config/initializers/inflections.rb
271
269
  - spec/dummy/config/initializers/mime_types.rb
272
270
  - spec/dummy/config/initializers/session_store.rb
273
271
  - spec/dummy/config/initializers/backtrace_silencers.rb
274
- - spec/dummy/config/initializers/wrap_parameters.rb
275
- - spec/dummy/config/initializers/filter_parameter_logging.rb
276
272
  - spec/dummy/config/initializers/secret_token.rb
277
- - spec/dummy/config/initializers/inflections.rb
278
273
  - spec/dummy/config/boot.rb
274
+ - spec/dummy/config/application.rb
279
275
  - spec/dummy/config/database.yml
276
+ - spec/dummy/config/environments/development.rb
277
+ - spec/dummy/config/environments/test.rb
278
+ - spec/dummy/config/environments/production.rb
280
279
  - spec/dummy/config/locales/en.yml
281
280
  - spec/dummy/config/environment.rb
281
+ - spec/dummy/config/routes.rb
282
+ - spec/dummy/db/schema.rb
283
+ - spec/dummy/db/migrate/20140306214611_create_users.rb
284
+ - spec/dummy/db/migrate/20140306214620_create_adhocs.rb
282
285
  - spec/dummy/Rakefile
283
- - spec/dummy/public/500.html
284
- - spec/dummy/public/404.html
285
- - spec/dummy/public/422.html
286
- - spec/dummy/public/favicon.ico
287
- - spec/dummy/app/views/layouts/application.html.erb
288
286
  - spec/dummy/app/helpers/application_helper.rb
289
- - spec/dummy/app/assets/javascripts/application.js
290
287
  - spec/dummy/app/assets/stylesheets/application.css
288
+ - spec/dummy/app/assets/javascripts/application.js
291
289
  - spec/dummy/app/controllers/application_controller.rb
292
- - spec/dummy/app/models/user.rb
293
290
  - spec/dummy/app/models/adhoc.rb
294
- - spec/factories/adhocracy_memberships.rb
295
- - spec/factories/adhocracy_membership_requests.rb
296
- - spec/factories/adhocracy_membership_invitations.rb
297
- - spec/factories/adhoc.rb
298
- - spec/factories/users.rb
291
+ - spec/dummy/app/models/user.rb
292
+ - spec/dummy/app/views/layouts/application.html.erb
293
+ - spec/dummy/config.ru
294
+ - spec/dummy/README.rdoc
295
+ - spec/dummy/public/422.html
296
+ - spec/dummy/public/404.html
297
+ - spec/dummy/public/500.html
298
+ - spec/dummy/public/favicon.ico
299
+ - spec/dummy/bin/rake
300
+ - spec/dummy/bin/rails
301
+ - spec/dummy/bin/bundle
299
302
  - spec/spec_helper.rb
300
- - spec/models/adhocracy/membership_invitation_spec.rb
301
- - spec/models/adhocracy/membership_spec.rb
302
- - spec/models/adhocracy/membership_request_spec.rb