dar_da_da 0.0.2 → 0.0.7

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 74a39243f3810ad6b73ce0ae8980440ded675c4b8555a180449eb5648708054a
4
+ data.tar.gz: f2d77656262f9142019f0fc4f656d82e71ebc143ca9211f729f62e9f5c53fb53
5
+ SHA512:
6
+ metadata.gz: 884bc324b20fbf57f38a6a7abc533a60903d4561caea90085d129f61a10a8847072dcc475ad9a656a5f391705413e49cbd2b6d8dcb80f1d0b817ea1b58fdbdbb
7
+ data.tar.gz: d9556f57cc206572db78e87d3acd7888a9a0d8f901b44dcb4c4aa0615bfc681c14844611e861fe1f21219dca25f611a573c32e92215c22f1cab719b9371a2b7d
data/.gitignore CHANGED
@@ -3,7 +3,8 @@
3
3
  coverage
4
4
  rdoc
5
5
  pkg
6
- .rvmrc
6
+ .rbenv-*
7
+ .ruby-version
7
8
  *.gem
8
9
  .bundle
9
10
  Gemfile.lock
@@ -0,0 +1,28 @@
1
+ ### dev
2
+
3
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.7...master)
4
+
5
+ ### 0.0.7 / 2020-07-02
6
+
7
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.6...v0.0.7)
8
+
9
+ * Defer patching of rails base classes for zeitwerk loading
10
+
11
+ ### 0.0.6 / 2017-01-31
12
+
13
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.5...v0.0.6)
14
+
15
+ * Use before_action instead of before_filter
16
+ * Require Rails >= 4.0
17
+
18
+ ### 0.0.5 / 2014-04-09
19
+
20
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.3...v0.0.5)
21
+
22
+ * Compatiblity with Rails 4.0
23
+
24
+ ### 0.0.3 / 2012-02-06
25
+
26
+ [full changelog](http://github.com/yolk/dar_dar_da/compare/v0.0.2...v0.0.3)
27
+
28
+ * Compatiblity with Rails 3.2
data/Guardfile CHANGED
@@ -1,5 +1,5 @@
1
- guard 'rspec', :version => 2 do
1
+ guard 'rspec', cmd: "bundle exec rspec --color" do
2
2
  watch(/^spec\/(.*)_spec\.rb/) { "spec" }
3
3
  watch(/^lib\/(.*)\.rb/) { "spec" } # { |m| "spec/#{m[1]}_spec.rb" }
4
4
  watch(/^spec\/spec_helper\.rb/) { "spec" }
5
- end
5
+ end
@@ -4,4 +4,4 @@ Roles easy like sunday morning.
4
4
 
5
5
  == Copyright
6
6
 
7
- Copyright (c) 2009 Yolk GbR. See LICENSE for details.
7
+ Copyright (c) 2009-2017 Yolk GbR. See LICENSE for details.
@@ -18,14 +18,12 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
-
22
- s.add_dependency 'activesupport', '~> 3.0'
23
- s.add_dependency 'activerecord', '~> 3.0'
21
+
22
+ s.add_dependency 'activerecord', '>= 4.0'
23
+
24
24
  # Actionpack is optional!
25
- s.add_development_dependency 'actionpack', '~> 3.0'
26
- s.add_development_dependency 'rspec', '>= 2.4.0'
27
- s.add_development_dependency 'guard-rspec', '>=0.1.9'
28
- s.add_development_dependency 'growl', '>=1.0.3'
29
- s.add_development_dependency 'rb-fsevent', '>=0.3.9'
30
- s.add_development_dependency 'sqlite3-ruby'
25
+ s.add_development_dependency 'actionpack', '>= 4.0'
26
+ s.add_development_dependency 'rspec'
27
+ s.add_development_dependency 'guard-rspec'
28
+ s.add_development_dependency 'sqlite3'
31
29
  end
@@ -7,12 +7,14 @@ module DarDaDa
7
7
  mattr_accessor :config
8
8
  end
9
9
 
10
- if defined? ActiveRecord::Base
11
- require 'dar_da_da/active_record_extension'
12
- ActiveRecord::Base.send(:include, DarDaDa::ActiveRecordExtension)
10
+ require 'dar_da_da/active_record_extension'
11
+
12
+ ActiveSupport.on_load(:active_record) do
13
+ include DarDaDa::ActiveRecordExtension
13
14
  end
14
15
 
15
- if defined? ActionController::Base
16
- require 'dar_da_da/action_controller_extension'
17
- ActionController::Base.send(:include, DarDaDa::ActionControllerExtension)
18
- end
16
+ require 'dar_da_da/action_controller_extension'
17
+
18
+ ActiveSupport.on_load(:action_controller) do
19
+ include DarDaDa::ActionControllerExtension
20
+ end
@@ -6,25 +6,25 @@ module DarDaDa
6
6
  base.class_eval "class ::ActionController::ForbiddenError < ::ActionController::ActionControllerError;end"
7
7
  end
8
8
  end
9
-
10
- module ClassMethods
9
+
10
+ module ClassMethods
11
11
  def define_access_control(user_class, user_method_name = :current_user)
12
12
  user_class.dar_dar_da.all_rights.each do |right|
13
13
  self.class_eval("
14
14
  private
15
-
15
+
16
16
  def check_if_#{user_class.name.downcase}_is_allowed_to_#{right}
17
17
  raise ActionController::ForbiddenError.new unless #{user_method_name}.allowed_to_#{right}?
18
18
  end
19
19
  ")
20
-
20
+
21
21
  self.class_eval("
22
22
  def self.require_right(right, options={})
23
- before_filter :\"check_if_#{user_class.name.downcase}_is_allowed_to_#\{right}\", options
23
+ before_action :\"check_if_#{user_class.name.downcase}_is_allowed_to_#\{right}\", options
24
24
  end
25
25
  ")
26
26
  end
27
27
  end
28
28
  end
29
29
  end
30
- end
30
+ end
@@ -1,21 +1,24 @@
1
- require 'active_support/core_ext/class/inheritable_attributes'
1
+ require 'active_support/core_ext/class/attribute'
2
2
 
3
3
  module DarDaDa
4
4
  module ActiveRecordExtension
5
5
  def self.included(base)
6
+ base.class_attribute(:dar_dar_da, :instance_reader => false, :instance_writer => false)
6
7
  base.extend(ClassMethods)
7
8
  end
8
-
9
+
9
10
  def self.decorate(base, config)
10
11
  base.send :include, DarDaDa::ActiveRecordExtension::InstanceMethods
11
-
12
+
12
13
  config.each do |name, role|
13
14
  base.class_eval("
14
15
  def #{name}?
15
16
  role_symbol == :#{name}
16
17
  end
17
-
18
- scope :#{name.to_s.pluralize}, where(\"#{base.table_name}.#{config.options[:role_attribute]} = '#{name}'\")
18
+
19
+ def self.#{name.to_s.pluralize}
20
+ where(\"#{base.table_name}.#{config.options[:role_attribute]} = '#{name}'\")
21
+ end
19
22
  ")
20
23
  end
21
24
  config.all_rights.each do |right|
@@ -26,7 +29,7 @@ module DarDaDa
26
29
  ")
27
30
  end
28
31
  end
29
-
32
+
30
33
  module ClassMethods
31
34
  def define_roles(options={}, &block)
32
35
  (self.dar_dar_da ||= DarDaDa::Config.new(options)).tap do |config|
@@ -34,50 +37,42 @@ module DarDaDa
34
37
  DarDaDa::ActiveRecordExtension.decorate(self, config)
35
38
  end
36
39
  end
37
-
38
- def dar_dar_da=(config)
39
- write_inheritable_attribute(:dar_dar_da, config)
40
- end
41
-
42
- def dar_dar_da
43
- read_inheritable_attribute(:dar_dar_da)
44
- end
45
40
  end
46
-
41
+
47
42
  module InstanceMethods
48
43
  def self.included(base)
49
44
  base.send :before_save, :set_role_to_default_value
50
45
  end
51
-
46
+
52
47
  def role
53
48
  role_symbol.to_s
54
49
  end
55
-
50
+
56
51
  def role=(new_role)
57
52
  write_role_attribute(new_role) if self.class.dar_dar_da[new_role]
58
53
  end
59
-
54
+
60
55
  def allowed_to?(name)
61
56
  rights = self.class.dar_dar_da[role]
62
57
  !!rights && !name.blank? && rights.include?(name.to_sym)
63
58
  end
64
-
59
+
65
60
  private
66
-
61
+
67
62
  def role_symbol
68
63
  role_attribute = read_role_attribute
69
64
  return self.class.dar_dar_da.options[:default_role] if role_attribute.blank?
70
65
  role_attribute.to_sym
71
66
  end
72
-
67
+
73
68
  def read_role_attribute
74
69
  read_attribute(self.class.dar_dar_da.options[:role_attribute])
75
70
  end
76
-
71
+
77
72
  def write_role_attribute(new_role)
78
73
  write_attribute(self.class.dar_dar_da.options[:role_attribute], new_role.to_s)
79
74
  end
80
-
75
+
81
76
  def set_role_to_default_value
82
77
  unless self.class.dar_dar_da[read_role_attribute]
83
78
  write_role_attribute(self.class.dar_dar_da.options[:default_role])
@@ -1,3 +1,3 @@
1
1
  module DarDaDa
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -2,16 +2,16 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe DarDaDa::ActionControllerExtension, "extended Base" do
4
4
  it "should define only_if_{user}_is_allowed_to_{right} methods" do
5
- ApplicationController.private_instance_methods.map(&:to_s).should include("check_if_user_is_allowed_to_cancel_account")
5
+ expect(ApplicationController.private_instance_methods.map(&:to_s)).to include("check_if_user_is_allowed_to_cancel_account")
6
6
  User.create!(:role => :user)
7
- lambda{
8
- ApplicationController.new.send(:check_if_user_is_allowed_to_cancel_account)
9
- }.should raise_error(ActionController::ForbiddenError)
7
+ expect {
8
+ ApplicationController.new.send(:check_if_user_is_allowed_to_cancel_account)
9
+ }.to raise_error(ActionController::ForbiddenError)
10
10
  end
11
-
11
+
12
12
  it "should define only_if_user_is_allowed_to class method" do
13
- ApplicationController.methods.map(&:to_s).should include("require_right")
14
- ApplicationController.should_receive(:before_filter).with(:check_if_user_is_allowed_to_read_acticles, :only => [:index])
13
+ expect(ApplicationController.methods.map(&:to_s)).to include("require_right")
14
+ expect(ApplicationController).to receive(:before_action).with(:check_if_user_is_allowed_to_read_acticles, :only => [:index])
15
15
  ApplicationController.require_right(:read_acticles, :only => [:index])
16
16
  end
17
- end
17
+ end
@@ -2,86 +2,86 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe DarDaDa::ActiveRecordExtension, "extended Model" do
4
4
  before { @user = User.create! }
5
-
5
+
6
6
  it "should set role to default_role" do
7
- @user.role.should eql("user")
8
- User.new.role.should eql("user")
7
+ expect(@user.role).to eql("user")
8
+ expect(User.new.role).to eql("user")
9
9
  end
10
-
10
+
11
11
  it "should add role accessor to map role_attribute" do
12
12
  @user.role = :author
13
- @user.role.should eql("author")
13
+ expect(@user.role).to eql("author")
14
14
  @user.role = :unknown_role
15
- @user.role.should eql("author")
15
+ expect(@user.role).to eql("author")
16
16
  @user.save!
17
- @user.role.should eql("author")
18
- @user.update_attributes!(:role => 'user')
19
- @user.role.should eql("user")
17
+ expect(@user.role).to eql("author")
18
+ @user.update!(:role => 'user')
19
+ expect(@user.role).to eql("user")
20
20
  end
21
-
21
+
22
22
  it "should set default_role to user" do
23
- User.dar_dar_da.options[:default_role].should == (:"user")
23
+ expect(User.dar_dar_da.options[:default_role]).to eql :user
24
24
  end
25
-
25
+
26
26
  it "should prevent saving role_attribute with nil or empty" do
27
27
  @user.role_name = ""
28
- @user.send(:read_role_attribute).should be_blank
28
+ expect(@user.send(:read_role_attribute)).to be_blank
29
29
  @user.save!
30
30
  @user.reload
31
- @user.send(:read_role_attribute).should eql("user")
32
- @user.role_name.should eql("user")
33
- @user.role.should eql("user")
31
+ expect(@user.send(:read_role_attribute)).to eql("user")
32
+ expect(@user.role_name).to eql("user")
33
+ expect(@user.role).to eql("user")
34
34
  end
35
-
35
+
36
36
  it "should prevent saving role_attribute with not exisiting role" do
37
37
  @user.role_name = "unknown"
38
- @user.send(:read_role_attribute).should eql("unknown")
38
+ expect(@user.send(:read_role_attribute)).to eql("unknown")
39
39
  @user.save!
40
40
  @user.reload
41
- @user.send(:read_role_attribute).should eql("user")
42
- @user.role_name.should eql("user")
43
- @user.role.should eql("user")
41
+ expect(@user.send(:read_role_attribute)).to eql("user")
42
+ expect(@user.role_name).to eql("user")
43
+ expect(@user.role).to eql("user")
44
44
  end
45
-
45
+
46
46
  it "should add {role}? methods" do
47
- @user.should be_user
47
+ expect(@user).to be_user
48
48
  @user.role = :author
49
- @user.should be_author
49
+ expect(@user).to be_author
50
50
  @user.role = :admin
51
- @user.should be_admin
51
+ expect(@user).to be_admin
52
52
  end
53
-
53
+
54
54
  it "should add allowed_to? method" do
55
- @user.allowed_to?(:read_acticles).should be_true
56
- @user.allowed_to?("read_acticles").should be_true
57
- @user.allowed_to?(:write_acticles).should be_false
58
- @user.allowed_to?(:cancel_account).should be_false
59
- @user.allowed_to?(:do_unknown_stuff).should be_false
60
- @user.allowed_to?("").should be_false
61
- @user.allowed_to?(nil).should be_false
55
+ expect(@user.allowed_to?(:read_acticles)).to be true
56
+ expect(@user.allowed_to?("read_acticles")).to be true
57
+ expect(@user.allowed_to?(:write_acticles)).to be false
58
+ expect(@user.allowed_to?(:cancel_account)).to be false
59
+ expect(@user.allowed_to?(:do_unknown_stuff)).to be false
60
+ expect(@user.allowed_to?("")).to be false
61
+ expect(@user.allowed_to?(nil)).to be false
62
62
  end
63
-
63
+
64
64
  it "should add allowed_to_{right}? methods" do
65
- @user.should be_allowed_to_read_acticles
66
- @user.should_not be_allowed_to_write_acticles
67
- @user.should_not be_allowed_to_cancel_account
65
+ expect(@user).to be_allowed_to_read_acticles
66
+ expect(@user).to_not be_allowed_to_write_acticles
67
+ expect(@user).to_not be_allowed_to_cancel_account
68
68
  @user.role = :author
69
- @user.should be_allowed_to_read_acticles
70
- @user.should be_allowed_to_write_acticles
71
- @user.should_not be_allowed_to_cancel_account
69
+ expect(@user).to be_allowed_to_read_acticles
70
+ expect(@user).to be_allowed_to_write_acticles
71
+ expect(@user).to_not be_allowed_to_cancel_account
72
72
  @user.role = :admin
73
- @user.should be_allowed_to_read_acticles
74
- @user.should be_allowed_to_write_acticles
75
- @user.should be_allowed_to_cancel_account
73
+ expect(@user).to be_allowed_to_read_acticles
74
+ expect(@user).to be_allowed_to_write_acticles
75
+ expect(@user).to be_allowed_to_cancel_account
76
76
  end
77
-
77
+
78
78
  it "should add named_scope for every role" do
79
79
  User.destroy_all
80
80
  User.create!(:role => "admin")
81
81
  2.times { User.create!(:role => :author) }
82
82
  3.times { User.create!(:role => :user) }
83
- User.admins.map(&:role).should eql(["admin"])
84
- User.authors.map(&:role).should eql(["author", "author"])
85
- User.users.map(&:role).should eql(["user", "user", "user"])
83
+ expect(User.admins.map(&:role)).to eql(["admin"])
84
+ expect(User.authors.map(&:role)).to eql(["author", "author"])
85
+ expect(User.users.map(&:role)).to eql(["user", "user", "user"])
86
86
  end
87
- end
87
+ end
@@ -1,139 +1,139 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe DarDaDa::Config do
4
-
4
+
5
5
  it "should require nothing as attribute" do
6
- lambda { DarDaDa::Config.new }.should_not raise_error
6
+ expect { DarDaDa::Config.new }.not_to raise_error
7
7
  end
8
-
8
+
9
9
  it "should be empty " do
10
- DarDaDa::Config.new.should be_empty
10
+ expect(DarDaDa::Config.new).to be_empty
11
11
  end
12
-
12
+
13
13
  it "should allow accessing role by string" do
14
14
  config = DarDaDa::Config.new do
15
15
  role :admin
16
16
  end
17
- config["admin"].should eql(config[:admin])
17
+ expect(config["admin"]).to eql(config[:admin])
18
18
  config[nil]
19
19
  config[""]
20
20
  end
21
-
21
+
22
22
  describe "options" do
23
23
  it "should have role_attribute set to role_name default" do
24
- DarDaDa::Config.new.options[:role_attribute].should eql(:role_name)
24
+ expect(DarDaDa::Config.new.options[:role_attribute]).to eql(:role_name)
25
25
  end
26
-
26
+
27
27
  it "should allow setting role_attribute via options" do
28
- DarDaDa::Config.new(:role_attribute => :role).options[:role_attribute].should eql(:role)
28
+ expect(DarDaDa::Config.new(:role_attribute => :role).options[:role_attribute]).to eql(:role)
29
29
  end
30
30
  end
31
-
31
+
32
32
  it "should eval block inside instance" do
33
- lambda { DarDaDa::Config.new do
33
+ expect { DarDaDa::Config.new do
34
34
  raise "config_error"
35
- end }.should raise_error("config_error")
35
+ end }.to raise_error("config_error")
36
36
  end
37
-
37
+
38
38
  describe "role" do
39
-
39
+
40
40
  it "should add new instance to roles" do
41
41
  config = DarDaDa::Config.new do
42
42
  role :admin
43
43
  end
44
- config.keys.should eql([:admin])
44
+ expect(config.keys).to eql([:admin])
45
45
  end
46
-
46
+
47
47
  it "should eval role-block inside role-instance" do
48
- lambda { DarDaDa::Config.new do
48
+ expect { DarDaDa::Config.new do
49
49
  role :admin do
50
50
  raise name.to_s + "_deep_error"
51
51
  end
52
- end }.should raise_error("admin_deep_error")
53
-
52
+ end }.to raise_error("admin_deep_error")
53
+
54
54
  config = DarDaDa::Config.new do
55
55
  role :admin do
56
56
  is_allowed_to :manage_users
57
57
  end
58
58
  end
59
-
60
- config.should == ({:admin => [:manage_users]})
59
+
60
+ expect(config).to eql ({:admin => [:manage_users]})
61
61
  end
62
-
62
+
63
63
  it "should eval role-block inside of exisiting role-instance" do
64
64
  config = DarDaDa::Config.new do
65
65
  role :admin do
66
66
  is_allowed_to :manage_users
67
67
  end
68
-
68
+
69
69
  role :admin do
70
70
  is_allowed_to :manage_projects
71
71
  end
72
72
  end
73
-
74
- config.should == ({:admin => [:manage_users, :manage_projects]})
73
+
74
+ expect(config).to eql ({:admin => [:manage_users, :manage_projects]})
75
75
  end
76
-
76
+
77
77
  it "should reopen existing config and eval block" do
78
78
  config = DarDaDa::Config.new
79
79
  config.reopen do
80
80
  role :admin
81
81
  end
82
- config.keys.should eql([:admin])
82
+ expect(config.keys).to eql([:admin])
83
83
  end
84
-
84
+
85
85
  end
86
-
86
+
87
87
  describe "default_role" do
88
88
  it "should have empty default_role" do
89
- DarDaDa::Config.new.options[:default_role].should be_nil
89
+ expect(DarDaDa::Config.new.options[:default_role]).to be_nil
90
90
  end
91
-
91
+
92
92
  it "should set first added role to default_role by default" do
93
93
  config = DarDaDa::Config.new do
94
94
  role :admin
95
95
  role :author
96
96
  end
97
- config.options[:default_role].should eql(:admin)
97
+ expect(config.options[:default_role]).to eql(:admin)
98
98
  end
99
-
99
+
100
100
  it "should allow setting default_role while initalizing" do
101
101
  config = DarDaDa::Config.new :default_role => :admin do
102
102
  role :author
103
103
  role :admin
104
104
  end
105
- config.options[:default_role].should eql(:admin)
105
+ expect(config.options[:default_role]).to eql(:admin)
106
106
  end
107
-
107
+
108
108
  it "should remove nonexisiting roles after initalizing" do
109
109
  config = DarDaDa::Config.new :default_role => :admin do
110
110
  end
111
- config.options[:default_role].should be_nil
111
+ expect(config.options[:default_role]).to be_nil
112
112
  config = DarDaDa::Config.new :default_role => :admin
113
- config.options[:default_role].should be_nil
113
+ expect(config.options[:default_role]).to be_nil
114
114
  end
115
-
115
+
116
116
  it "should take first added role even when invalid other specified" do
117
117
  config = DarDaDa::Config.new :default_role => :admin do
118
118
  role :author
119
119
  end
120
- config.options[:default_role].should eql(:author)
120
+ expect(config.options[:default_role]).to eql(:author)
121
121
  end
122
-
122
+
123
123
  it "should allow setting role to default_role when given" do
124
124
  config = DarDaDa::Config.new do
125
125
  role :admin
126
126
  role :author, :default => true
127
127
  end
128
- config.options[:default_role].should eql(:author)
128
+ expect(config.options[:default_role]).to eql(:author)
129
129
  end
130
130
  end
131
-
131
+
132
132
  describe "all_rights" do
133
133
  it "should be empty by default" do
134
- DarDaDa::Config.new.all_rights.should eql([])
134
+ expect(DarDaDa::Config.new.all_rights).to eql([])
135
135
  end
136
-
136
+
137
137
  it "should collect all rights" do
138
138
  config = DarDaDa::Config.new do
139
139
  role :admin do
@@ -144,10 +144,10 @@ describe DarDaDa::Config do
144
144
  is_allowed_to :d
145
145
  end
146
146
  end
147
- config.all_rights.should include(:a, :b, :c, :d, :e)
148
- config.all_rights.size.should eql([:a, :b, :c, :d, :e].size)
147
+ expect(config.all_rights).to include(:a, :b, :c, :d, :e)
148
+ expect(config.all_rights.size).to eql([:a, :b, :c, :d, :e].size)
149
149
  end
150
-
150
+
151
151
  it "should remove duplicates" do
152
152
  config = DarDaDa::Config.new do
153
153
  role :admin do
@@ -159,54 +159,54 @@ describe DarDaDa::Config do
159
159
  is_allowed_to :c
160
160
  end
161
161
  end
162
-
163
- config.all_rights.should include(:a, :b, :c)
164
- config.all_rights.size.should eql([:a, :b, :c].size)
162
+
163
+ expect(config.all_rights).to include(:a, :b, :c)
164
+ expect(config.all_rights.size).to eql([:a, :b, :c].size)
165
165
  end
166
166
  end
167
-
167
+
168
168
  describe "based_on" do
169
169
  it "should copy rights between roles" do
170
170
  config = DarDaDa::Config.new do
171
-
171
+
172
172
  role :author do
173
173
  based_on :user
174
174
  is_allowed_to :write_articles
175
175
  end
176
-
176
+
177
177
  role :user do
178
178
  is_allowed_to :read_articles
179
179
  end
180
-
180
+
181
181
  role :admin do
182
182
  based_on :author
183
183
  is_allowed_to :cancel_accounts
184
184
  end
185
185
  end
186
-
187
- config[:admin].should == ([:cancel_accounts, :write_articles, :read_articles])
188
- config[:author].should == ([:write_articles, :read_articles])
189
- config[:user].should == ([:read_articles])
186
+
187
+ expect(config[:admin]).to eql ([:cancel_accounts, :write_articles, :read_articles])
188
+ expect(config[:author]).to eql ([:write_articles, :read_articles])
189
+ expect(config[:user]).to eql ([:read_articles])
190
190
  end
191
-
191
+
192
192
  it "should throw error on circular references" do
193
- lambda { config = DarDaDa::Config.new do
194
-
193
+ expect { config = DarDaDa::Config.new do
194
+
195
195
  role :author do
196
196
  based_on :user
197
197
  is_allowed_to :write_articles
198
198
  end
199
-
199
+
200
200
  role :user do
201
201
  based_on :admin
202
202
  is_allowed_to :read_articles
203
203
  end
204
-
204
+
205
205
  role :admin do
206
206
  based_on :author
207
207
  is_allowed_to :cancel_accounts
208
208
  end
209
- end }.should raise_error("You defined a circular reference when configuring DarDaDa with 'based_on'.")
209
+ end }.to raise_error("You defined a circular reference when configuring DarDaDa with 'based_on'.")
210
210
  end
211
211
  end
212
- end
212
+ end
@@ -1,69 +1,69 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe DarDaDa::Role do
4
-
4
+
5
5
  before do
6
6
  @role = DarDaDa::Role.new(:role1)
7
7
  end
8
-
8
+
9
9
  it "should require name as attribute" do
10
- lambda { DarDaDa::Role.new }.should raise_error(ArgumentError)
11
- DarDaDa::Role.new(:role1).name.should eql(:role1)
10
+ expect { DarDaDa::Role.new }.to raise_error(ArgumentError)
11
+ expect(DarDaDa::Role.new(:role1).name).to eql(:role1)
12
12
  end
13
-
13
+
14
14
  it "should store name as symbol" do
15
- DarDaDa::Role.new("role1").name.should eql(:role1)
15
+ expect(DarDaDa::Role.new("role1").name).to eql(:role1)
16
16
  end
17
-
17
+
18
18
  it "should be empty array" do
19
- @role.should eql([])
19
+ expect(@role).to eql([])
20
20
  end
21
-
21
+
22
22
  it "should convert strings to symbols when adding" do
23
23
  @role << :r1
24
- @role.should eql([:r1])
24
+ expect(@role).to eql([:r1])
25
25
  @role << "r2"
26
- @role.should eql([:r1, :r2])
26
+ expect(@role).to eql([:r1, :r2])
27
27
  end
28
-
28
+
29
29
  it "should have include?/memeber? methods that convert strings to symbols" do
30
30
  @role << :manage_projects
31
- @role.include?(:manage_projects).should be_true
32
- @role.include?("manage_projects").should be_true
33
- @role.include?("manage_users").should be_false
34
- @role.member?(:manage_projects).should be_true
35
- @role.member?("manage_projects").should be_true
36
- @role.member?("manage_users").should be_false
31
+ expect(@role.include?(:manage_projects)).to be true
32
+ expect(@role.include?("manage_projects")).to be true
33
+ expect(@role.include?("manage_users")).to be false
34
+ expect(@role.member?(:manage_projects)).to be true
35
+ expect(@role.member?("manage_projects")).to be true
36
+ expect(@role.member?("manage_users")).to be false
37
37
  end
38
-
38
+
39
39
  describe "is_allowed_to" do
40
40
  it "should add new instance to rights" do
41
41
  @role.is_allowed_to :manage_projects
42
- @role.should eql([:manage_projects])
42
+ expect(@role).to eql([:manage_projects])
43
43
  end
44
-
44
+
45
45
  it "should convert strings to symbols" do
46
46
  @role.is_allowed_to "manage_projects"
47
- @role.should eql([:manage_projects])
47
+ expect(@role).to eql([:manage_projects])
48
48
  end
49
-
49
+
50
50
  it "should allow adding multiple rights at once" do
51
51
  @role.is_allowed_to :manage_projects, :cancel_account
52
- @role.should eql([:manage_projects, :cancel_account])
52
+ expect(@role).to eql([:manage_projects, :cancel_account])
53
53
  end
54
54
  end
55
-
55
+
56
56
  describe "based_on" do
57
57
  it "should add new instance to merge_rights_from" do
58
58
  role = DarDaDa::Role.new(:admin)
59
59
  role.based_on "author"
60
- role.merge_rights_from.should eql([:author])
60
+ expect(role.merge_rights_from).to eql([:author])
61
61
  end
62
-
62
+
63
63
  it "should allow adding multiple roles at once" do
64
64
  role = DarDaDa::Role.new(:role1)
65
65
  role.based_on :author, "user"
66
- role.merge_rights_from.should == ([:author, :user])
66
+ expect(role.merge_rights_from).to eql([:author, :user])
67
67
  end
68
68
  end
69
- end
69
+ end
metadata CHANGED
@@ -1,157 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dar_da_da
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 2
9
- segments_generated: true
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Sebastian Munz
14
- autorequire:
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-11-10 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: activesupport
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 3
30
- - 0
31
- segments_generated: true
32
- version: "3.0"
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
11
+ date: 2020-07-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
37
14
  name: activerecord
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 3
45
- - 0
46
- segments_generated: true
47
- version: "3.0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
48
20
  type: :runtime
49
21
  prerelease: false
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
52
28
  name: actionpack
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- segments:
59
- - 3
60
- - 0
61
- segments_generated: true
62
- version: "3.0"
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
63
34
  type: :development
64
35
  prerelease: false
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
41
+ - !ruby/object:Gem::Dependency
67
42
  name: rspec
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
71
45
  - - ">="
72
- - !ruby/object:Gem::Version
73
- segments:
74
- - 2
75
- - 4
76
- - 0
77
- segments_generated: true
78
- version: 2.4.0
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
79
48
  type: :development
80
49
  prerelease: false
81
- version_requirements: *id004
82
- - !ruby/object:Gem::Dependency
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
83
56
  name: guard-rspec
84
- requirement: &id005 !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
87
59
  - - ">="
88
- - !ruby/object:Gem::Version
89
- segments:
90
- - 0
91
- - 1
92
- - 9
93
- segments_generated: true
94
- version: 0.1.9
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
95
62
  type: :development
96
63
  prerelease: false
97
- version_requirements: *id005
98
- - !ruby/object:Gem::Dependency
99
- name: growl
100
- requirement: &id006 !ruby/object:Gem::Requirement
101
- none: false
102
- requirements:
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
103
66
  - - ">="
104
- - !ruby/object:Gem::Version
105
- segments:
106
- - 1
107
- - 0
108
- - 3
109
- segments_generated: true
110
- version: 1.0.3
111
- type: :development
112
- prerelease: false
113
- version_requirements: *id006
114
- - !ruby/object:Gem::Dependency
115
- name: rb-fsevent
116
- requirement: &id007 !ruby/object:Gem::Requirement
117
- none: false
118
- requirements:
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
119
73
  - - ">="
120
- - !ruby/object:Gem::Version
121
- segments:
122
- - 0
123
- - 3
124
- - 9
125
- segments_generated: true
126
- version: 0.3.9
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
127
76
  type: :development
128
77
  prerelease: false
129
- version_requirements: *id007
130
- - !ruby/object:Gem::Dependency
131
- name: sqlite3-ruby
132
- requirement: &id008 !ruby/object:Gem::Requirement
133
- none: false
134
- requirements:
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
135
80
  - - ">="
136
- - !ruby/object:Gem::Version
137
- segments:
138
- - 0
139
- segments_generated: true
140
- version: "0"
141
- type: :development
142
- prerelease: false
143
- version_requirements: *id008
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
144
83
  description: Roles easy like sunday morning.
145
- email:
84
+ email:
146
85
  - sebastian@yo.lk
147
86
  executables: []
148
-
149
87
  extensions: []
150
-
151
88
  extra_rdoc_files: []
152
-
153
- files:
154
- - .gitignore
89
+ files:
90
+ - ".gitignore"
91
+ - CHANGES.md
155
92
  - Gemfile
156
93
  - Guardfile
157
94
  - LICENSE
@@ -170,43 +107,29 @@ files:
170
107
  - spec/dar_da_da/config_spec.rb
171
108
  - spec/dar_da_da/role_spec.rb
172
109
  - spec/spec_helper.rb
173
- has_rdoc: true
174
110
  homepage: https://github.com/yolk/dar_da_da
175
111
  licenses: []
176
-
177
- post_install_message:
112
+ metadata: {}
113
+ post_install_message:
178
114
  rdoc_options: []
179
-
180
- require_paths:
115
+ require_paths:
181
116
  - lib
182
- required_ruby_version: !ruby/object:Gem::Requirement
183
- none: false
184
- requirements:
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
185
119
  - - ">="
186
- - !ruby/object:Gem::Version
187
- hash: -433884475567382819
188
- segments:
189
- - 0
190
- segments_generated: true
191
- version: "0"
192
- required_rubygems_version: !ruby/object:Gem::Requirement
193
- none: false
194
- requirements:
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
195
124
  - - ">="
196
- - !ruby/object:Gem::Version
197
- hash: -433884475567382819
198
- segments:
199
- - 0
200
- segments_generated: true
201
- version: "0"
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
202
127
  requirements: []
203
-
204
- rubyforge_project: dar_da_da
205
- rubygems_version: 1.3.7
206
- signing_key:
207
- specification_version: 3
128
+ rubygems_version: 3.0.3
129
+ signing_key:
130
+ specification_version: 4
208
131
  summary: Roles easy like sunday morning.
209
- test_files:
132
+ test_files:
210
133
  - spec/dar_da_da/action_controller_extension_spec.rb
211
134
  - spec/dar_da_da/active_record_extension_spec.rb
212
135
  - spec/dar_da_da/config_spec.rb