sevencan 0.1.3 → 0.1.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40e6b19b8f8240462fa44eb2f23c861b521183e8
4
- data.tar.gz: d0fbe28d6348107661f99e1deee190d0c67ec1a0
3
+ metadata.gz: cab00c00fec7af86d2509a2b230efaa721bd7692
4
+ data.tar.gz: 3f7dd30e8767d0e07507faf4da416e027a3a9b7a
5
5
  SHA512:
6
- metadata.gz: 0b7f0a6ce5cbec7b38fd30c20434dac6e8b29cc17360f862ad0f700ff3f592bdb9d4c9084c9e1d4972a8c21c992e7bb1d3deff5677dc2cead0ba55f45aa6fd19
7
- data.tar.gz: 8c5cf2ea89c639c9babdbb8fb7f13e3bb4e2ed933544e6131943c62c2feae3904b13fe314cce6c5ac653791caa1cec35eafae93d20433374779e155234a0af42
6
+ metadata.gz: 5f76d9618fc8520c5e1e434e305e5688c434a473111275ae7d88c1cc595c1d19659f6198446bf6e01ee33b9a346ea03b13895485ef8e84f5e0d90440912e3d90
7
+ data.tar.gz: 56fa080533c6d972e6f0a08eb13e3b62d97c71acfd3fac1e64863d737634b85316021175e134bc2f9208fd7e26284532d86352504c5188fd8f4add43bdc2209d
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Seven
2
2
 
3
- Permission manage center, Better `six`
3
+ Permission manage center
4
4
 
5
5
  ## Installation
6
6
 
@@ -23,9 +23,9 @@ Or install it yourself as:
23
23
  New manager
24
24
 
25
25
  ```
26
- manager = Seven.new # save dynamic abilities to memory store
27
- manager = Seven.new(store: {redis: Redis.current}) # redis store
28
- manager = Seven.new(store: {activerecord: UserAbility}) # db store
26
+ manager = Seven::Manager.new # save dynamic abilities to memory store
27
+ manager = Seven::Manager.new(store: {redis: Redis.current}) # redis store
28
+ manager = Seven::Manager.new(store: {activerecord: UserAbility}) # db store
29
29
  ```
30
30
 
31
31
  Define system rules
@@ -143,6 +143,28 @@ manager.can?(nil, :edit_user) # false
143
143
 
144
144
  ## Rails
145
145
 
146
+
147
+ ### Init manager
148
+
149
+ in `config/initializers/seven_abilities.rb`
150
+
151
+ ```
152
+ $abilities_manager = Seven::Manager.new
153
+ Dir[Rails.root.join('app/abilities/**/*.rb')].each {|file| require file }
154
+ ```
155
+
156
+ Define rules in `app/abilities/*.rb`
157
+
158
+ ```
159
+ class UserAbilities
160
+ include Seven::Abilities
161
+
162
+ $abilities_manager.define_rules(User, self)
163
+
164
+ # define rules
165
+ end"
166
+ ```
167
+
146
168
  ### Require methods
147
169
 
148
170
  * `current_user`: return current user
@@ -177,7 +199,7 @@ Default actions
177
199
  class TopicController < ApplicationController
178
200
  before_action :find_topic
179
201
 
180
- # if exist @topic, target is @topic, else use Topic
202
+ # if exist @topic, target is @topic, else use Proc result or Topic
181
203
  seven_ability_check [:@topic, Proc.new { fetch_check_target }, Topic]
182
204
 
183
205
  # auto check current_user allow read_topics of Topic
@@ -294,6 +316,30 @@ class TopicController < ApplicationController
294
316
  end
295
317
  ```
296
318
 
319
+ ## RSpec Testing
320
+
321
+ in `spec/rails_helper.rb` or `spec/spec_helper.rb`
322
+
323
+ ```
324
+ require 'seven/rspec'
325
+ ```
326
+
327
+ Write abilities testing
328
+
329
+ ```
330
+ RSpec.describe UserAbilities do
331
+ it 'should can read topic' do
332
+ # expect([current_user, target]).to abilities_eql([:read_topic])
333
+ expect([user, topic]).to abilities_eql([:read_topic])
334
+ end
335
+
336
+ it 'should can manager topic' do
337
+ expect([admin_user, topic]).to abilities_eql([:read_topic, :edit_topic, :destroy_topic])
338
+ end
339
+ end
340
+ ```
341
+
342
+
297
343
  ## TODO
298
344
 
299
345
  * [x] Rails Helpers
@@ -0,0 +1,21 @@
1
+ # require 'rspec'
2
+
3
+ # expect([current_user, target]).to abilities_eql([:a, :b])
4
+
5
+ RSpec::Matchers.define :abilities_eql do |expect_abilities|
6
+ match do |abilities_class_args|
7
+ abilities_instance = described_class.new(*abilities_class_args)
8
+ abilities_instance.abilities.uniq.sort == expect_abilities.sort
9
+ end
10
+
11
+ failure_message do |abilities_class_args|
12
+ args_string = abilities_class_args.map(&:inspect).join(', ')
13
+ abilities_instance = described_class.new(*abilities_class_args)
14
+ abilities = abilities_instance.abilities.uniq.sort
15
+
16
+ "Expected abilities #{abilities} == #{expect_abilities.sort} But not\n" +
17
+ "Abilities generator #{described_class}.new(#{args_string}).abilities"
18
+ end
19
+ end
20
+
21
+
data/lib/seven/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Seven
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sevencan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - jiangzhi.xie
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-23 00:00:00.000000000 Z
11
+ date: 2017-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -90,7 +90,6 @@ files:
90
90
  - ".gitignore"
91
91
  - ".rspec"
92
92
  - ".ruby-version"
93
- - ".travis.yml"
94
93
  - CODE_OF_CONDUCT.md
95
94
  - Gemfile
96
95
  - LICENSE.txt
@@ -104,6 +103,7 @@ files:
104
103
  - lib/seven/manager.rb
105
104
  - lib/seven/rails.rb
106
105
  - lib/seven/rails/controller_helpers.rb
106
+ - lib/seven/rspec.rb
107
107
  - lib/seven/version.rb
108
108
  - lib/sevencan.rb
109
109
  - seven.gemspec
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  requirements: []
129
129
  rubyforge_project:
130
- rubygems_version: 2.4.8
130
+ rubygems_version: 2.4.5.2
131
131
  signing_key:
132
132
  specification_version: 4
133
133
  summary: simple permission manager
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.3
4
- before_install: gem install bundler -v 1.10.6