hydra-pcdm 0.5.0 → 0.6.0
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 +4 -4
- data/Gemfile +0 -1
- data/hydra-pcdm.gemspec +1 -2
- data/lib/hydra/pcdm.rb +2 -3
- data/lib/hydra/pcdm/ancestor_checker.rb +12 -11
- data/lib/hydra/pcdm/collection_indexer.rb +4 -4
- data/lib/hydra/pcdm/config.rb +21 -0
- data/lib/hydra/pcdm/models/concerns/collection_behavior.rb +1 -0
- data/lib/hydra/pcdm/models/concerns/object_behavior.rb +1 -1
- data/lib/hydra/pcdm/models/concerns/pcdm_behavior.rb +4 -8
- data/lib/hydra/pcdm/object_indexer.rb +4 -4
- data/lib/hydra/pcdm/services/file/add_type.rb +1 -1
- data/lib/hydra/pcdm/services/file/get_mime_type.rb +1 -1
- data/lib/hydra/pcdm/validators.rb +1 -0
- data/lib/hydra/pcdm/validators/pcdm_collection_validator.rb +7 -0
- data/lib/hydra/pcdm/version.rb +1 -1
- data/solr/config/schema.xml +1 -1
- data/spec/hydra/pcdm/ancestor_checker_spec.rb +26 -19
- data/spec/hydra/pcdm/collection_indexer_spec.rb +3 -3
- data/spec/hydra/pcdm/config_spec.rb +18 -0
- data/spec/hydra/pcdm/object_indexer_spec.rb +1 -1
- metadata +8 -21
- data/lib/hydra/pcdm/deep_member_iterator.rb +0 -31
- data/spec/hydra/pcdm/deep_member_iterator_spec.rb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f1369bfcb692088efb9def0d8c89c0a1a44b753
|
4
|
+
data.tar.gz: 67ab9ffbc703f41d52cacd272adf6800e624e2f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61992b4c2732a5f06985514380caf52787e8ebdeeeebb9bc9d1bfabc3771649b34fc0d945ea97f13f129e3a4564f6a970589cce9c161fa19f4966fe90f8a0646
|
7
|
+
data.tar.gz: fab13605bffea616cbe355a4f4619769dfd8a7d8abeff9c26b380bea74b3f6ed968d6cf328fcfd67177dc1ab7b2955b6b1ca396d81c3248b0463053866b4b093
|
data/Gemfile
CHANGED
data/hydra-pcdm.gemspec
CHANGED
@@ -19,8 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
spec.add_dependency 'active-fedora', '~> 9.
|
23
|
-
spec.add_dependency 'activefedora-aggregation', '~> 0.10'
|
22
|
+
spec.add_dependency 'active-fedora', '~> 9.11'
|
24
23
|
spec.add_dependency 'mime-types', '>= 1'
|
25
24
|
|
26
25
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
data/lib/hydra/pcdm.rb
CHANGED
@@ -14,6 +14,8 @@ module Hydra
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
+
autoload :Config
|
18
|
+
|
17
19
|
# models
|
18
20
|
autoload_under 'models' do
|
19
21
|
autoload :Collection
|
@@ -35,9 +37,6 @@ module Hydra
|
|
35
37
|
autoload :AddTypeToFile, 'hydra/pcdm/services/file/add_type'
|
36
38
|
autoload :GetMimeTypeForFile, 'hydra/pcdm/services/file/get_mime_type'
|
37
39
|
|
38
|
-
# Iterators
|
39
|
-
autoload :DeepMemberIterator, 'hydra/pcdm/deep_member_iterator'
|
40
|
-
|
41
40
|
# Associations
|
42
41
|
autoload :AncestorChecker, 'hydra/pcdm/ancestor_checker'
|
43
42
|
autoload :Validators, 'hydra/pcdm/validators'
|
@@ -1,18 +1,19 @@
|
|
1
1
|
module Hydra::PCDM
|
2
2
|
##
|
3
3
|
# Checks whether or not one object is an ancestor of another.
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# @
|
8
|
-
|
9
|
-
|
4
|
+
module AncestorChecker
|
5
|
+
# @param options [Hash]
|
6
|
+
# @option record [#pcdm_behavior?]
|
7
|
+
# @option potential_ancestor [#pcdm_behavior?]
|
8
|
+
# @return Boolean
|
9
|
+
def self.former_is_ancestor_of_latter?(potential_ancestor, record)
|
10
|
+
return true if record == potential_ancestor
|
11
|
+
return false unless potential_ancestor.respond_to?(:members)
|
12
|
+
return true if Array.wrap(potential_ancestor.members).detect { |member| former_is_ancestor_of_latter?(member, record) }
|
13
|
+
false
|
10
14
|
end
|
11
|
-
|
12
|
-
|
13
|
-
# the initialized record.
|
14
|
-
def ancestor?(potential_ancestor)
|
15
|
-
record == potential_ancestor || Hydra::PCDM::DeepMemberIterator.new(potential_ancestor).include?(record)
|
15
|
+
class << self
|
16
|
+
alias call former_is_ancestor_of_latter?
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -2,10 +2,10 @@ module Hydra::PCDM
|
|
2
2
|
class CollectionIndexer < ObjectIndexer
|
3
3
|
def generate_solr_document
|
4
4
|
super.tap do |solr_doc|
|
5
|
-
solr_doc[
|
6
|
-
solr_doc[
|
7
|
-
solr_doc[
|
8
|
-
solr_doc[
|
5
|
+
solr_doc[Config.indexing_member_ids_key] ||= []
|
6
|
+
solr_doc[Config.indexing_member_ids_key] += object.member_ids
|
7
|
+
solr_doc[Config.indexing_member_ids_key].uniq!
|
8
|
+
solr_doc[Config.indexing_collection_ids_key] = object.ordered_collection_ids
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Hydra
|
2
|
+
module PCDM
|
3
|
+
# A container for configuration options (note configuration is not yet determined).
|
4
|
+
module Config
|
5
|
+
INDEXING_MEMBER_IDS_KEY = 'member_ids_ssim'.freeze
|
6
|
+
def self.indexing_member_ids_key
|
7
|
+
INDEXING_MEMBER_IDS_KEY
|
8
|
+
end
|
9
|
+
|
10
|
+
INDEXING_COLLECTION_IDS_KEY = 'collection_ids_ssim'.freeze
|
11
|
+
def self.indexing_collection_ids_key
|
12
|
+
INDEXING_COLLECTION_IDS_KEY
|
13
|
+
end
|
14
|
+
|
15
|
+
INDEXING_OBJECT_IDS_KEY = 'object_ids_ssim'.freeze
|
16
|
+
def self.indexing_object_ids_key
|
17
|
+
INDEXING_OBJECT_IDS_KEY
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -25,7 +25,7 @@ module Hydra::PCDM
|
|
25
25
|
|
26
26
|
def member_of
|
27
27
|
return [] if id.nil?
|
28
|
-
ActiveFedora::Base.where(
|
28
|
+
ActiveFedora::Base.where(Config.indexing_member_ids_key => id)
|
29
29
|
end
|
30
30
|
|
31
31
|
def ordered_member_ids
|
@@ -37,7 +37,7 @@ module Hydra::PCDM
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def object_ids
|
40
|
-
|
40
|
+
objects.map(&:id)
|
41
41
|
end
|
42
42
|
|
43
43
|
def ordered_objects
|
@@ -56,12 +56,8 @@ module Hydra::PCDM
|
|
56
56
|
in_collections.map(&:id)
|
57
57
|
end
|
58
58
|
|
59
|
-
def ancestor?(
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
def ancestor_checker
|
64
|
-
@ancestor_checker ||= ::Hydra::PCDM::AncestorChecker.new(self)
|
59
|
+
def ancestor?(potential_ancestor)
|
60
|
+
::Hydra::PCDM::AncestorChecker.former_is_ancestor_of_latter?(potential_ancestor, self)
|
65
61
|
end
|
66
62
|
end
|
67
63
|
end
|
@@ -2,10 +2,10 @@ module Hydra::PCDM
|
|
2
2
|
class ObjectIndexer < ActiveFedora::IndexingService
|
3
3
|
def generate_solr_document
|
4
4
|
super.tap do |solr_doc|
|
5
|
-
solr_doc[
|
6
|
-
solr_doc[
|
7
|
-
solr_doc[
|
8
|
-
solr_doc[
|
5
|
+
solr_doc[Config.indexing_member_ids_key] ||= []
|
6
|
+
solr_doc[Config.indexing_member_ids_key] += object.member_ids
|
7
|
+
solr_doc[Config.indexing_member_ids_key].uniq!
|
8
|
+
solr_doc[Config.indexing_object_ids_key] = object.ordered_object_ids
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -3,6 +3,7 @@ module Hydra::PCDM
|
|
3
3
|
autoload :AncestorValidator, 'hydra/pcdm/validators/ancestor_validator'
|
4
4
|
autoload :PCDMValidator, 'hydra/pcdm/validators/pcdm_validator'
|
5
5
|
autoload :CompositeValidator, 'hydra/pcdm/validators/composite_validator'
|
6
|
+
autoload :PCDMCollectionValidator, 'hydra/pcdm/validators/pcdm_collection_validator'
|
6
7
|
autoload :PCDMObjectValidator, 'hydra/pcdm/validators/pcdm_object_validator'
|
7
8
|
end
|
8
9
|
end
|
data/lib/hydra/pcdm/version.rb
CHANGED
data/solr/config/schema.xml
CHANGED
@@ -103,7 +103,7 @@
|
|
103
103
|
http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
|
104
104
|
-->
|
105
105
|
<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
|
106
|
-
geo="true" distErrPct="0.025" maxDistErr="0.000009"
|
106
|
+
geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
|
107
107
|
|
108
108
|
<fieldType name="text" class="solr.TextField" omitNorms="false">
|
109
109
|
<analyzer>
|
@@ -1,29 +1,36 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe Hydra::PCDM::AncestorChecker do
|
4
|
-
|
5
|
-
|
6
|
-
describe '#ancestor?' do
|
4
|
+
context '.former_is_ancestor_of_latter?' do
|
5
|
+
subject { described_class.former_is_ancestor_of_latter?(potential_ancestor, record) }
|
7
6
|
let(:record) { instance_double(Hydra::PCDM::Object) }
|
8
|
-
let(:
|
9
|
-
|
7
|
+
let(:potential_ancestor) { nil }
|
8
|
+
|
9
|
+
context 'when the potential_ancestor is the record itself' do
|
10
|
+
let(:potential_ancestor) { record }
|
11
|
+
it { is_expected.to eq(true) }
|
12
|
+
end
|
10
13
|
|
11
|
-
context 'when the
|
12
|
-
|
13
|
-
|
14
|
-
end
|
14
|
+
context 'when the potential_ancestor has no members' do
|
15
|
+
let(:potential_ancestor) { instance_double(Hydra::PCDM::Object, members: []) }
|
16
|
+
it { is_expected.to eq(false) }
|
15
17
|
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
18
|
+
|
19
|
+
context 'when the potential_ancestor includes the given record' do
|
20
|
+
let(:potential_ancestor) { instance_double(Hydra::PCDM::Object, members: [record]) }
|
21
|
+
it { is_expected.to eq(true) }
|
21
22
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
|
24
|
+
context 'when the potential_ancestor includes a descendant that includes the given record' do
|
25
|
+
let(:descendant) { instance_double(Hydra::PCDM::Object, members: [record]) }
|
26
|
+
let(:potential_ancestor) { instance_double(Hydra::PCDM::Object, members: [descendant]) }
|
27
|
+
it { is_expected.to eq(true) }
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when the potential_ancestor only includes descendants that do not include the given record' do
|
31
|
+
let(:descendant) { instance_double(Hydra::PCDM::Object, members: [:another]) }
|
32
|
+
let(:potential_ancestor) { instance_double(Hydra::PCDM::Object, members: [descendant]) }
|
33
|
+
it { is_expected.to eq(false) }
|
27
34
|
end
|
28
35
|
end
|
29
36
|
end
|
@@ -17,9 +17,9 @@ describe Hydra::PCDM::CollectionIndexer do
|
|
17
17
|
subject { indexer.generate_solr_document }
|
18
18
|
|
19
19
|
it 'has fields' do
|
20
|
-
expect(subject[
|
21
|
-
expect(subject[
|
22
|
-
expect(subject[
|
20
|
+
expect(subject[Hydra::PCDM::Config.indexing_collection_ids_key]).to eq %w(123 456)
|
21
|
+
expect(subject[Hydra::PCDM::Config.indexing_object_ids_key]).to eq ['789']
|
22
|
+
expect(subject[Hydra::PCDM::Config.indexing_member_ids_key]).to eq %w(123 456 789)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Hydra::PCDM::Config do
|
4
|
+
context '.indexing_member_ids_key' do
|
5
|
+
subject { described_class.indexing_member_ids_key }
|
6
|
+
it { is_expected.to eq(described_class::INDEXING_MEMBER_IDS_KEY) }
|
7
|
+
end
|
8
|
+
|
9
|
+
context '.indexing_collection_ids_key' do
|
10
|
+
subject { described_class.indexing_collection_ids_key }
|
11
|
+
it { is_expected.to eq(described_class::INDEXING_COLLECTION_IDS_KEY) }
|
12
|
+
end
|
13
|
+
|
14
|
+
context '.indexing_object_ids_key' do
|
15
|
+
subject { described_class.indexing_object_ids_key }
|
16
|
+
it { is_expected.to eq(described_class::INDEXING_OBJECT_IDS_KEY) }
|
17
|
+
end
|
18
|
+
end
|
@@ -14,7 +14,7 @@ describe Hydra::PCDM::ObjectIndexer do
|
|
14
14
|
subject { indexer.generate_solr_document }
|
15
15
|
|
16
16
|
it 'has fields' do
|
17
|
-
expect(subject[
|
17
|
+
expect(subject[Hydra::PCDM::Config.indexing_object_ids_key]).to eq %w(123 456)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-pcdm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- E. Lynette Rayle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active-fedora
|
@@ -16,28 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '9.
|
19
|
+
version: '9.11'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '9.
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activefedora-aggregation
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.10'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0.10'
|
26
|
+
version: '9.11'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: mime-types
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,7 +143,7 @@ files:
|
|
157
143
|
- lib/hydra/pcdm.rb
|
158
144
|
- lib/hydra/pcdm/ancestor_checker.rb
|
159
145
|
- lib/hydra/pcdm/collection_indexer.rb
|
160
|
-
- lib/hydra/pcdm/
|
146
|
+
- lib/hydra/pcdm/config.rb
|
161
147
|
- lib/hydra/pcdm/models/collection.rb
|
162
148
|
- lib/hydra/pcdm/models/concerns/collection_behavior.rb
|
163
149
|
- lib/hydra/pcdm/models/concerns/object_behavior.rb
|
@@ -170,6 +156,7 @@ files:
|
|
170
156
|
- lib/hydra/pcdm/validators.rb
|
171
157
|
- lib/hydra/pcdm/validators/ancestor_validator.rb
|
172
158
|
- lib/hydra/pcdm/validators/composite_validator.rb
|
159
|
+
- lib/hydra/pcdm/validators/pcdm_collection_validator.rb
|
173
160
|
- lib/hydra/pcdm/validators/pcdm_object_validator.rb
|
174
161
|
- lib/hydra/pcdm/validators/pcdm_validator.rb
|
175
162
|
- lib/hydra/pcdm/version.rb
|
@@ -193,7 +180,7 @@ files:
|
|
193
180
|
- solr/config/xslt/luke.xsl
|
194
181
|
- spec/hydra/pcdm/ancestor_checker_spec.rb
|
195
182
|
- spec/hydra/pcdm/collection_indexer_spec.rb
|
196
|
-
- spec/hydra/pcdm/
|
183
|
+
- spec/hydra/pcdm/config_spec.rb
|
197
184
|
- spec/hydra/pcdm/models/collection_spec.rb
|
198
185
|
- spec/hydra/pcdm/models/file_spec.rb
|
199
186
|
- spec/hydra/pcdm/models/object_spec.rb
|
@@ -228,7 +215,7 @@ summary: Portland Common Data Model (PCDM)
|
|
228
215
|
test_files:
|
229
216
|
- spec/hydra/pcdm/ancestor_checker_spec.rb
|
230
217
|
- spec/hydra/pcdm/collection_indexer_spec.rb
|
231
|
-
- spec/hydra/pcdm/
|
218
|
+
- spec/hydra/pcdm/config_spec.rb
|
232
219
|
- spec/hydra/pcdm/models/collection_spec.rb
|
233
220
|
- spec/hydra/pcdm/models/file_spec.rb
|
234
221
|
- spec/hydra/pcdm/models/object_spec.rb
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Hydra::PCDM
|
2
|
-
##
|
3
|
-
# Iterates over a record's members and all of their members in a breadth-first
|
4
|
-
# search.
|
5
|
-
class DeepMemberIterator
|
6
|
-
include Enumerable
|
7
|
-
attr_reader :record
|
8
|
-
# @param [#members] record The object whose members are iterated across.
|
9
|
-
def initialize(record)
|
10
|
-
@record = HasMembers.new(record)
|
11
|
-
end
|
12
|
-
|
13
|
-
def each
|
14
|
-
record.members.each do |member|
|
15
|
-
yield member
|
16
|
-
end
|
17
|
-
record.members.each do |member|
|
18
|
-
DeepMemberIterator.new(member).each do |deep_member|
|
19
|
-
yield deep_member
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
##
|
25
|
-
# Small decorator to ensure that #members isn't undefined.
|
26
|
-
class HasMembers < SimpleDelegator
|
27
|
-
def members
|
28
|
-
__getobj__.try(:members) || []
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe Hydra::PCDM::DeepMemberIterator do
|
4
|
-
subject { described_class.new(record) }
|
5
|
-
let(:record) { instance_double(Hydra::PCDM::Object, members: members) }
|
6
|
-
let(:members) { [] }
|
7
|
-
describe '#each' do
|
8
|
-
context 'with no members' do
|
9
|
-
it 'returns an empty array' do
|
10
|
-
expect(subject.to_a).to eq []
|
11
|
-
end
|
12
|
-
end
|
13
|
-
context 'with a member' do
|
14
|
-
let(:members) { [instance_double(Hydra::PCDM::Object, members: [])] }
|
15
|
-
it 'returns that member' do
|
16
|
-
expect(subject.to_a).to eq members
|
17
|
-
end
|
18
|
-
end
|
19
|
-
context 'with deep members' do
|
20
|
-
let(:member_1) { instance_double(Hydra::PCDM::Object, members: [member_3]) }
|
21
|
-
let(:member_2) { instance_double(Hydra::PCDM::Object, members: [member_4]) }
|
22
|
-
let(:member_3) { instance_double(Hydra::PCDM::Object, members: []) }
|
23
|
-
let(:member_4) { instance_double(Hydra::PCDM::Object, members: []) }
|
24
|
-
let(:members) { [member_1, member_2] }
|
25
|
-
it 'does a breadth first iteration of members' do
|
26
|
-
expect(subject.to_a).to eq [member_1, member_2, member_3, member_4]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
context 'with n levels deep' do
|
30
|
-
let(:member_1) { instance_double(Hydra::PCDM::Object, members: [member_2]) }
|
31
|
-
let(:member_2) { instance_double(Hydra::PCDM::Object, members: [member_3]) }
|
32
|
-
let(:member_3) { instance_double(Hydra::PCDM::Object, members: []) }
|
33
|
-
let(:members) { [member_1] }
|
34
|
-
it 'traverses it' do
|
35
|
-
expect(subject.to_a).to eq [member_1, member_2, member_3]
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
describe '.include?' do
|
40
|
-
context 'with n levels deep' do
|
41
|
-
let(:member_1) { instance_double(Hydra::PCDM::Object, members: [member_2]) }
|
42
|
-
let(:member_2) { instance_double(Hydra::PCDM::Object, members: [member_3]) }
|
43
|
-
let(:member_3) { instance_double(Hydra::PCDM::Object, members: []) }
|
44
|
-
let(:members) { [member_1] }
|
45
|
-
it 'does not go any deeper than necessary' do
|
46
|
-
expect(subject).to include(member_2)
|
47
|
-
expect(member_2).not_to have_received(:members)
|
48
|
-
expect(member_3).not_to have_received(:members)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|