hydra-access-controls 10.0.0.beta2 → 10.0.0.beta3

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: 9665cf60571d6ee1e75abbdbc49e6901685a6ad1
4
- data.tar.gz: 14e7ee3c6bc5459a4e511ae4db987f91cd24dc2b
3
+ metadata.gz: 542ba667f390824e6d6da5ef589d841eb3dc2f63
4
+ data.tar.gz: e4521e7bd863e1c7c05006af99acb75d60f4a54f
5
5
  SHA512:
6
- metadata.gz: 9476ae7eceb9e244213a74226214e5af0e3a86060b58d90fef84c4e739b7bd9b36edaa4d94065787e5639e1c6e4fa55397636182e56e6ac4a6f5cebea51d7235
7
- data.tar.gz: da20d7a1b237040d0efc5ebe266e1f839bd810c4f75ed107595aa88d7de0ac33af0613751b74ab26e1bd3655bd21a72daad4c494d8e669cadbe4558cedfc0fa6
6
+ metadata.gz: 0afe21dbac45703ce2348a518dcce5c060dbd3ab347d527c2016b07c2698217480eac8fea7ae9a03cb2e095540c398b666ce2fbea34eee6a1e36db05a7c89e93
7
+ data.tar.gz: 54cf981570cc20997111048a17a4b87ae96721d15fa47eb821428f87ec9c83384825e025da6bc44526eca1d9469505ccbd1ec0508dc44b197ec5b7694e7ca2b8
@@ -44,8 +44,9 @@ module Hydra
44
44
  @relationship = @owner.send(reflection)
45
45
  end
46
46
 
47
- delegate :to_a, :to_ary, :map, :delete, :last, :size, :count, :[],
48
- :==, :detect, :empty?, to: :@relationship
47
+ delegate :to_a, :to_ary, :map, :delete, :first, :last, :size, :count, :[],
48
+ :==, :detect, :empty?, :each, :any?, :all?, :include?, :destroy_all,
49
+ to: :@relationship
49
50
 
50
51
  # TODO: if directly_contained relationships supported find, we could just
51
52
  # delegate find.
@@ -11,8 +11,109 @@ describe Hydra::AccessControl::CollectionRelationship do
11
11
  end
12
12
  end
13
13
 
14
+ describe "#first" do
15
+ let!(:one) { relationship.build(name: 'user1', type: 'person', access: 'read') }
16
+ let!(:two) { relationship.build(name: 'user2', type: 'person', access: 'read') }
17
+ subject { relationship.first }
18
+ it { is_expected.to be one }
19
+ end
20
+
21
+ describe "#last" do
22
+ let!(:one) { relationship.build(name: 'user1', type: 'person', access: 'read') }
23
+ let!(:two) { relationship.build(name: 'user2', type: 'person', access: 'read') }
24
+ subject { relationship.last }
25
+ it { is_expected.to be two }
26
+ end
27
+
28
+ describe "#include?" do
29
+ let!(:one) { relationship.build(name: 'user1', type: 'person', access: 'read') }
30
+ let(:two) { Hydra::AccessControls::Permission.new(name: 'user2', type: 'person', access: 'read') }
31
+ it 'returns a boolean' do
32
+ expect(relationship).to include(one)
33
+ expect(relationship).not_to include(two)
34
+ end
35
+ end
36
+
14
37
  describe "#empty?" do
15
38
  subject { relationship.empty? }
16
39
  it { is_expected.to be true }
17
40
  end
41
+
42
+ describe "#each" do
43
+ let!(:one) { relationship.build(name: 'user1', type: 'person', access: 'read') }
44
+ let!(:two) { relationship.build(name: 'user2', type: 'person', access: 'read') }
45
+ let(:counter) { double }
46
+ it "invokes the block with each object" do
47
+ expect(counter).to receive(:check).with(one)
48
+ expect(counter).to receive(:check).with(two)
49
+ relationship.each { |o| counter.check(o) }
50
+ end
51
+ end
52
+
53
+ describe "#map" do
54
+ let!(:one) { relationship.build(name: 'user1', type: 'person', access: 'read') }
55
+ let!(:two) { relationship.build(name: 'user2', type: 'person', access: 'read') }
56
+ it "maps each element through the block" do
57
+ expect(relationship.map { |o| o.agent_name }).to eq ['user1', 'user2']
58
+ end
59
+ end
60
+
61
+ describe "#detect" do
62
+ let!(:one) { relationship.build(name: 'user1', type: 'person', access: 'read') }
63
+ let!(:two) { relationship.build(name: 'user2', type: 'person', access: 'read') }
64
+ it "finds the first match" do
65
+ expect(relationship.detect { |o| o.agent_name == 'user2' }).to eq two
66
+ end
67
+ end
68
+
69
+ describe "#find" do
70
+ before do
71
+ access_control.save!
72
+ end
73
+ let!(:one) { relationship.create(name: 'user1', type: 'person', access: 'read') }
74
+ let!(:two) { relationship.create(name: 'user2', type: 'person', access: 'read') }
75
+ context "when the id is in the set" do
76
+ it "finds matches by id" do
77
+ expect(relationship.find(two.id)).to eq two
78
+ end
79
+ end
80
+ context "when the id is not the set" do
81
+ it "raises an error" do
82
+ expect { relationship.find('999') }.to raise_error ArgumentError, "requested ACL (999) is not a member of #{access_control.id}"
83
+ end
84
+ end
85
+ end
86
+
87
+ describe "#any?" do
88
+ let!(:one) { relationship.build(name: 'user1', type: 'person', access: 'read') }
89
+ let!(:two) { relationship.build(name: 'user2', type: 'person', access: 'read') }
90
+ it "invokes the block with each object" do
91
+ expect(relationship.any? { |o| o.agent_name == 'user2' }).to be true
92
+ end
93
+ end
94
+
95
+ describe "#all?" do
96
+ let!(:one) { relationship.build(name: 'user1', type: 'person', access: 'read') }
97
+ let!(:two) { relationship.build(name: 'user2', type: 'person', access: 'read') }
98
+ let(:counter) { double }
99
+ context "when all members satisfy the condition" do
100
+ subject { relationship.all? { |o| o.type == 'person' } }
101
+ it { is_expected.to be true }
102
+ end
103
+ context "when some members don't satisfy the condition" do
104
+ subject { relationship.all? { |o| o.agent_name == 'user1' } }
105
+ it { is_expected.to be false }
106
+ end
107
+ end
108
+
109
+ describe "#destroy_all" do
110
+ before do
111
+ access_control.save!
112
+ end
113
+ let!(:one) { relationship.create(name: 'user1', type: 'person', access: 'read') }
114
+ let!(:two) { relationship.create(name: 'user2', type: 'person', access: 'read') }
115
+ it "invokes the block with each object" do
116
+ expect { relationship.destroy_all }.to change { Hydra::AccessControls::Permission.count}.by(-2)
117
+ end
118
+ end
18
119
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-access-controls
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.0.0.beta2
4
+ version: 10.0.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-05-10 00:00:00.000000000 Z
13
+ date: 2016-05-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport