active_model_serializers_cancancan 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ce161c1d6f79a45223d67cf65bfc0784d4a0b821
4
- data.tar.gz: e3f6e01156ac758f0bf84993dcdde3483a519a7b
3
+ metadata.gz: 51635d6ac71d004e31b78819b6a75770581a935a
4
+ data.tar.gz: 4b00c64ace4c8f841b6d89e400384a415e1c2091
5
5
  SHA512:
6
- metadata.gz: f7786db0b565437bc845468150c071bc6ffe83af441c57ed6c231c41a281fdc7ad02782fd690edee1267bb88177e793965d8d903d79ecf68f24fc86da30de7bf
7
- data.tar.gz: 7b351437cb30afabc1cff37e0aa288ddf87957e2b4a241bca1dffd2e8015f015585123e2535b85bba924df153878e1597d858515d76b3ab63f69f7af201f1b26
6
+ metadata.gz: af700feee294692d04313b3e44bfa6fc796ba410105f18681a59a1787430e311fa76b1312d357febcdc70bf7a56159f77bdc73f35c96b5791a63b2f1216164c3
7
+ data.tar.gz: 5ff61626515287b4354f0457c015a8e90b556630c186ed84098806d4e1fc695442e0c09844b0faf68b7e16d6f61ccf2ae300717ed6605d6a50018fa7faa9f307
@@ -1,16 +1,13 @@
1
1
  module ActiveModel
2
2
  class Serializer
3
- module Associations #:nodoc:
4
-
5
- class Config #:nodoc:
6
-
3
+ module Associations
4
+ class Config
7
5
  def authorize?
8
6
  !!options[:authorize]
9
7
  end
10
8
  end
11
9
 
12
- class HasMany #:nodoc:
13
-
10
+ class HasMany
14
11
  def serialize_with_cancan
15
12
  return serialize_without_cancan unless authorize?
16
13
  associated_object.select {|item| find_serializable(item).can?(:read, item) }.map do |item|
@@ -18,21 +15,24 @@ module ActiveModel
18
15
  end
19
16
  end
20
17
  alias_method_chain :serialize, :cancan
21
-
22
18
  end
23
19
 
24
- class HasOne #:nodoc:
25
-
20
+ class HasOne
26
21
  def serialize_with_cancan
22
+ unless authorize?
23
+ return serialize_without_cancan
24
+ end
27
25
  object = associated_object
28
26
  serializer = find_serializable(object)
29
- #p !authorize?, serializer, serializer.can?(:read, object)
30
- return nil unless !authorize? || serializer && serializer.can?(:read, object)
31
- serialize_without_cancan
27
+ if serializer && serializer.can?(:read, object)
28
+ serialize_without_cancan
29
+ else
30
+ nil
31
+ end
32
32
  end
33
33
  alias_method_chain :serialize, :cancan
34
-
35
34
  end
36
35
  end
37
36
  end
38
37
  end
38
+
@@ -2,7 +2,7 @@
2
2
  class ActiveModel::Serializer
3
3
  def include_associations!
4
4
  _associations.each_pair do |name, asst|
5
- include!(name, asst.options) if include?(name)
5
+ include!(name, asst.options.dup) if include?(name)
6
6
  end
7
7
  end
8
8
  end
@@ -1,7 +1,7 @@
1
1
  module ActiveModel
2
2
  module Serializers
3
3
  module Cancan
4
- VERSION = "0.0.3"
4
+ VERSION = "0.0.4"
5
5
  end
6
6
  end
7
7
  end
@@ -6,8 +6,40 @@ describe ActiveModel::Serializer::Associations do
6
6
 
7
7
  let(:category) { Category.first }
8
8
 
9
- context 'when authorize is set to false' do
9
+ context 'when authorize is not set' do
10
+ before do
11
+ Object.send(:remove_const, :CategorySerializer) if defined?(CategorySerializer)
12
+ Object.send(:remove_const, :ProjectSerializer) if defined?(ProjectSerializer)
13
+ Object.send(:remove_const, :Ability) if defined?(Ability)
14
+
15
+ CategorySerializer = Class.new(ActiveModel::Serializer) do
16
+ attributes :id
17
+ has_many :projects
18
+ has_one :project
19
+ end
10
20
 
21
+ ProjectSerializer = Class.new(ActiveModel::Serializer) do
22
+ attributes :id
23
+ end
24
+
25
+ Ability = Class.new do
26
+ include CanCan::Ability
27
+ def initialize(user)
28
+ cannot :read, :project
29
+ end
30
+ end
31
+ end
32
+
33
+ it 'should serialize forbidden has_many records' do
34
+ expect(CategorySerializer.new(category, scope: user).serializable_hash[:projects].length).to eq(2)
35
+ end
36
+
37
+ it 'should serialize forbidden has_one records' do
38
+ expect(CategorySerializer.new(category, scope: user).serializable_hash[:project]).to_not be_nil
39
+ end
40
+ end
41
+
42
+ context 'when authorize is set to false' do
11
43
  before do
12
44
  Object.send(:remove_const, :CategorySerializer) if defined?(CategorySerializer)
13
45
  Object.send(:remove_const, :ProjectSerializer) if defined?(ProjectSerializer)
@@ -37,12 +69,11 @@ describe ActiveModel::Serializer::Associations do
37
69
 
38
70
  it 'should serialize forbidden has_one records' do
39
71
  expect(CategorySerializer.new(category, scope: user).serializable_hash[:project]).to_not be_nil
72
+ expect(CategorySerializer.new(category, scope: user).serializable_hash[:project]).to_not be_nil
40
73
  end
41
-
42
74
  end
43
75
 
44
76
  context 'when authorize set to true' do
45
-
46
77
  before do
47
78
  Object.send(:remove_const, :CategorySerializer) if defined?(CategorySerializer)
48
79
  Object.send(:remove_const, :ProjectSerializer) if defined?(ProjectSerializer)
@@ -80,7 +111,6 @@ describe ActiveModel::Serializer::Associations do
80
111
  it 'should serialize authorized has_one records' do
81
112
  expect(CategorySerializer.new(category, scope: User.find(2)).serializable_hash[:project]).to_not be_nil
82
113
  end
83
-
84
114
  end
85
115
 
86
116
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers_cancancan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - GlebTv