hydra-pcdm 0.1.0 → 0.2.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +38 -0
  3. data/Gemfile +6 -3
  4. data/README.md +31 -38
  5. data/Rakefile +14 -4
  6. data/hydra-pcdm.gemspec +10 -10
  7. data/lib/hydra/pcdm.rb +13 -12
  8. data/lib/hydra/pcdm/collection_indexer.rb +2 -4
  9. data/lib/hydra/pcdm/deep_member_iterator.rb +1 -1
  10. data/lib/hydra/pcdm/models/collection.rb +0 -1
  11. data/lib/hydra/pcdm/models/concerns/collection_behavior.rb +18 -5
  12. data/lib/hydra/pcdm/models/concerns/object_behavior.rb +13 -17
  13. data/lib/hydra/pcdm/models/concerns/pcdm_behavior.rb +50 -9
  14. data/lib/hydra/pcdm/models/file.rb +7 -7
  15. data/lib/hydra/pcdm/models/object.rb +0 -1
  16. data/lib/hydra/pcdm/object_indexer.rb +1 -2
  17. data/lib/hydra/pcdm/services/file/add_type.rb +1 -3
  18. data/lib/hydra/pcdm/services/file/get_mime_type.rb +2 -4
  19. data/lib/hydra/pcdm/validators/ancestor_validator.rb +3 -11
  20. data/lib/hydra/pcdm/validators/pcdm_object_validator.rb +2 -2
  21. data/lib/hydra/pcdm/validators/pcdm_validator.rb +2 -2
  22. data/lib/hydra/pcdm/version.rb +1 -1
  23. data/lib/hydra/pcdm/vocab/pcdm_terms.rb +81 -80
  24. data/lib/hydra/pcdm/vocab/sweet_jpl_terms.rb +12 -0
  25. data/spec/hydra/pcdm/ancestor_checker_spec.rb +7 -7
  26. data/spec/hydra/pcdm/collection_indexer_spec.rb +12 -13
  27. data/spec/hydra/pcdm/deep_member_iterator_spec.rb +16 -16
  28. data/spec/hydra/pcdm/models/collection_spec.rb +375 -313
  29. data/spec/hydra/pcdm/models/file_spec.rb +38 -38
  30. data/spec/hydra/pcdm/models/object_spec.rb +270 -256
  31. data/spec/hydra/pcdm/object_indexer_spec.rb +4 -4
  32. data/spec/hydra/pcdm/services/file/get_mime_type_spec.rb +10 -12
  33. data/spec/hydra/pcdm_spec.rb +21 -26
  34. metadata +19 -5
  35. data/lib/hydra/pcdm/vocab/ebucore_terms.rb +0 -33
  36. data/lib/hydra/pcdm/vocab/sweetjpl_terms.rb +0 -10
@@ -2,14 +2,14 @@ module Hydra::PCDM
2
2
  module PcdmBehavior
3
3
  extend ActiveSupport::Concern
4
4
  included do
5
- aggregates :members, predicate: RDFVocabularies::PCDMTerms.hasMember,
6
- class_name: "ActiveFedora::Base",
7
- type_validator: type_validator
8
- filters_association :members, as: :child_objects, condition: :pcdm_object?
5
+ aggregates :members, predicate: Vocab::PCDMTerms.hasMember,
6
+ class_name: 'ActiveFedora::Base',
7
+ type_validator: type_validator
8
+ filters_association :members, as: :objects, condition: :pcdm_object?
9
9
  indirectly_contains :related_objects, has_member_relation: RDF::Vocab::ORE.aggregates,
10
- inserted_content_relation: RDF::Vocab::ORE.proxyFor, class_name: "ActiveFedora::Base",
11
- through: 'ActiveFedora::Aggregation::Proxy', foreign_key: :target,
12
- type_validator: Validators::PCDMObjectValidator
10
+ inserted_content_relation: RDF::Vocab::ORE.proxyFor, class_name: 'ActiveFedora::Base',
11
+ through: 'ActiveFedora::Aggregation::Proxy', foreign_key: :target,
12
+ type_validator: Validators::PCDMObjectValidator
13
13
  end
14
14
 
15
15
  module ClassMethods
@@ -22,13 +22,54 @@ module Hydra::PCDM
22
22
  end
23
23
  end
24
24
 
25
- def parents
25
+ def member_of
26
26
  aggregated_by
27
27
  end
28
28
 
29
- def parent_collections
29
+ def parents
30
+ warn '[DEPRECATION] `parents` is deprecated in Hydra::PCDM. Please use `member_of` instead. This has a target date for removal of 10-31-2015'
31
+ member_of
32
+ end
33
+
34
+ def in_collections
30
35
  aggregated_by.select(&:pcdm_collection?)
31
36
  end
32
37
 
38
+ def parent_collections
39
+ warn '[DEPRECATION] `parent_collections` is deprecated in Hydra::PCDM. Please use `in_collections` instead. This has a target date for removal of 10-31-2015'
40
+ in_collections
41
+ end
42
+
43
+ def in_collection_ids
44
+ in_collections.map(&:id)
45
+ end
46
+
47
+ def parent_collection_ids
48
+ warn '[DEPRECATION] `parent_collection_ids` is deprecated in Hydra::PCDM. Please use `in_collection_ids` instead. This has a target date for removal of 10-31-2015'
49
+ in_collection_ids
50
+ end
51
+
52
+ def ancestor?(record)
53
+ ancestor_checker.ancestor?(record)
54
+ end
55
+
56
+ def ancestor_checker
57
+ @ancestor_checker ||= ::Hydra::PCDM::AncestorChecker.new(self)
58
+ end
59
+
60
+ def child_objects
61
+ warn '[DEPRECATION] `child_objects` is deprecated in Hydra::PCDM. Please use `objects` instead. This has a target date for removal of 10-31-2015'
62
+ objects
63
+ end
64
+
65
+ def child_objects=(new_objects)
66
+ warn '[DEPRECATION] `child_objects=` is deprecated in Hydra::PCDM. Please use `objects=` instead. This has a target date for removal of 10-31-2015'
67
+ self.objects = new_objects
68
+ end
69
+
70
+ def child_object_ids
71
+ warn '[DEPRECATION] `child_object_ids` is deprecated in Hydra::PCDM. Please use `object_ids` instead. This has a target date for removal of 10-31-2015'
72
+ object_ids
73
+ end
33
74
  end
34
75
  end
@@ -3,15 +3,15 @@ module Hydra::PCDM
3
3
  include ActiveFedora::WithMetadata
4
4
 
5
5
  metadata do
6
- configure type: RDFVocabularies::PCDMTerms.File
6
+ configure type: Vocab::PCDMTerms.File
7
7
  property :label, predicate: ::RDF::RDFS.label
8
8
 
9
- property :file_name, predicate: EBUCoreVocabularies::EBUCoreTerms.filename
10
- property :file_size, predicate: EBUCoreVocabularies::EBUCoreTerms.fileSize
11
- property :date_created, predicate: EBUCoreVocabularies::EBUCoreTerms.dateCreated
12
- property :has_mime_type, predicate: EBUCoreVocabularies::EBUCoreTerms.hasMimeType
13
- property :date_modified, predicate: EBUCoreVocabularies::EBUCoreTerms.dateModified
14
- property :byte_order, predicate: SweetjplVocabularies::SweetjplTerms.byteOrder
9
+ property :file_name, predicate: RDF::Vocab::EBUCore.filename
10
+ property :file_size, predicate: RDF::Vocab::EBUCore.fileSize
11
+ property :date_created, predicate: RDF::Vocab::EBUCore.dateCreated
12
+ property :has_mime_type, predicate: RDF::Vocab::EBUCore.hasMimeType
13
+ property :date_modified, predicate: RDF::Vocab::EBUCore.dateModified
14
+ property :byte_order, predicate: Vocab::SweetJPLTerms.byteOrder
15
15
 
16
16
  # This is a server-managed predicate which means Fedora does not let us change it.
17
17
  property :file_hash, predicate: RDF::Vocab::PREMIS.hasMessageDigest
@@ -3,4 +3,3 @@ module Hydra::PCDM
3
3
  include Hydra::PCDM::ObjectBehavior
4
4
  end
5
5
  end
6
-
@@ -2,9 +2,8 @@ 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["child_object_ids_ssim"] = object.child_object_ids
5
+ solr_doc['object_ids_ssim'] = object.object_ids
6
6
  end
7
7
  end
8
-
9
8
  end
10
9
  end
@@ -1,6 +1,5 @@
1
1
  module Hydra::PCDM
2
2
  class AddTypeToFile
3
-
4
3
  # This adds an additional RDF type to an exsiting Hydra::PCDM::File
5
4
  #
6
5
  # @param [Hydra::PCDM::File] the file object you want to add it to
@@ -12,9 +11,8 @@ module Hydra::PCDM
12
11
  t = file.metadata_node.get_values(:type)
13
12
  return file if t.include?(uri)
14
13
  t << uri
15
- file.metadata_node.set_value(:type,t)
14
+ file.metadata_node.set_value(:type, t)
16
15
  file
17
16
  end
18
-
19
17
  end
20
18
  end
@@ -1,11 +1,9 @@
1
1
  module Hydra::PCDM
2
2
  class GetMimeTypeForFile
3
-
4
3
  def self.call(path)
5
- raise ArgumentError, "supplied argument should be a path to a file" unless path.is_a?(String)
4
+ fail ArgumentError, 'supplied argument should be a path to a file' unless path.is_a?(String)
6
5
  mime_types = ::MIME::Types.of(::File.basename(path))
7
- mime_types.empty? ? "application/octet-stream" : mime_types.first.content_type
6
+ mime_types.empty? ? 'application/octet-stream' : mime_types.first.content_type
8
7
  end
9
-
10
8
  end
11
9
  end
@@ -1,26 +1,18 @@
1
1
  module Hydra::PCDM::Validators
2
2
  class AncestorValidator
3
- def self.validate!(association,record)
3
+ def self.validate!(association, record)
4
4
  new(association.owner, record).validate!
5
5
  end
6
6
 
7
7
  attr_reader :owner, :record
8
- delegate :ancestor?, to: :ancestor_checker
9
8
  def initialize(owner, record)
10
9
  @owner = owner
11
10
  @record = record
12
11
  end
13
12
 
14
13
  def validate!
15
- if ancestor?(record)
16
- raise ArgumentError, "#{record.class} with ID: #{record.id} failed to pass AncestorChecker validation"
17
- end
18
- end
19
-
20
- private
21
-
22
- def ancestor_checker
23
- @ancestor_checker ||= ::Hydra::PCDM::AncestorChecker.new(owner)
14
+ return unless owner.ancestor?(record)
15
+ fail ArgumentError, "#{record.class} with ID: #{record.id} failed to pass AncestorChecker validation"
24
16
  end
25
17
  end
26
18
  end
@@ -1,8 +1,8 @@
1
1
  module Hydra::PCDM::Validators
2
2
  class PCDMObjectValidator
3
- def self.validate!(association, record)
3
+ def self.validate!(_association, record)
4
4
  unless record.try(:pcdm_object?)
5
- raise ActiveFedora::AssociationTypeMismatch.new "#{record} is not a PCDM object."
5
+ fail ActiveFedora::AssociationTypeMismatch, "#{record} is not a PCDM object."
6
6
  end
7
7
  end
8
8
  end
@@ -1,8 +1,8 @@
1
1
  module Hydra::PCDM::Validators
2
2
  class PCDMValidator
3
- def self.validate!(reflection, record)
3
+ def self.validate!(_reflection, record)
4
4
  if !record.try(:pcdm_object?) && !record.try(:pcdm_collection?)
5
- raise ActiveFedora::AssociationTypeMismatch.new "#{record} is not a PCDM object or collection."
5
+ fail ActiveFedora::AssociationTypeMismatch, "#{record} is not a PCDM object or collection."
6
6
  end
7
7
  end
8
8
  end
@@ -1,5 +1,5 @@
1
1
  module Hydra
2
2
  module PCDM
3
- VERSION = "0.1.0"
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
@@ -1,87 +1,88 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  # This file generated automatically using vocab-fetch from https://raw.githubusercontent.com/duraspace/pcdm/master/models.rdf
3
3
  require 'rdf'
4
- module RDFVocabularies
5
- class PCDMTerms < RDF::StrictVocabulary("http://pcdm.org/models#")
4
+ module Hydra::PCDM
5
+ module Vocab
6
+ class PCDMTerms < RDF::StrictVocabulary('http://pcdm.org/models#')
7
+ # Class definitions
8
+ term :AdministrativeSet,
9
+ comment: %(
10
+ An Administrative Set is a grouping of resources that an administrative unit is ultimately
11
+ responsible for managing. The set itself helps to manage the items within it. An Object
12
+ or Collection may be contained by only one AdministrativeSet.
13
+ ).freeze,
14
+ label: 'Administrative Set'.freeze,
15
+ 'rdfs:isDefinedBy' => %(http://pcdm.org/models#).freeze,
16
+ subClassOf: 'http://www.w3.org/ns/ldp#Container'.freeze,
17
+ type: 'rdfs:Class'.freeze
18
+ term :Collection,
19
+ comment: %(
20
+ A Collection is a group of resources. Collections have descriptive metadata, access metadata,
21
+ and may links to works and/or collections. By default, member works and collections are an
22
+ unordered set, but can be ordered using the ORE Proxy class.
23
+ ).freeze,
24
+ label: 'Collection'.freeze,
25
+ 'rdfs:isDefinedBy' => %(http://pcdm.org/models#).freeze,
26
+ subClassOf: 'http://www.openarchives.org/ore/terms/Aggregation'.freeze,
27
+ type: 'rdfs:Class'.freeze
28
+ term :File,
29
+ comment: %(
30
+ A File is a sequence of binary data and is described by some accompanying metadata.
31
+ The metadata typically includes at least basic technical metadata \(size, content type,
32
+ modification date, etc.\), but can also include properties related to preservation,
33
+ digitization process, provenance, etc. Files MUST be contained by exactly one Object.
34
+ ).freeze,
35
+ label: 'File'.freeze,
36
+ 'rdfs:isDefinedBy' => %(http://pcdm.org/models#).freeze,
37
+ type: 'rdfs:Class'.freeze
38
+ term :Object,
39
+ comment: %(
40
+ An Object is an intellectual entity, sometimes called a "work", "digital object", etc.
41
+ Objects have descriptive metadata, access metadata, may contain files and other Objects as
42
+ member "components". Each level of a work is therefore represented by an Object instance,
43
+ and is capable of standing on its own, being linked to from Collections and other Objects.
44
+ Member Objects can be ordered using the ORE Proxy class.
45
+ ).freeze,
46
+ label: 'Object'.freeze,
47
+ 'rdfs:isDefinedBy' => %(http://pcdm.org/models#).freeze,
48
+ subClassOf: 'http://www.openarchives.org/ore/terms/Aggregation'.freeze,
49
+ type: 'rdfs:Class'.freeze
6
50
 
7
- # Class definitions
8
- term :AdministrativeSet,
9
- comment: %(
10
- An Administrative Set is a grouping of resources that an administrative unit is ultimately
11
- responsible for managing. The set itself helps to manage the items within it. An Object
12
- or Collection may be contained by only one AdministrativeSet.
13
- ).freeze,
14
- label: "Administrative Set".freeze,
15
- "rdfs:isDefinedBy" => %(http://pcdm.org/models#).freeze,
16
- subClassOf: "http://www.w3.org/ns/ldp#Container".freeze,
17
- type: "rdfs:Class".freeze
18
- term :Collection,
19
- comment: %(
20
- A Collection is a group of resources. Collections have descriptive metadata, access metadata,
21
- and may links to works and/or collections. By default, member works and collections are an
22
- unordered set, but can be ordered using the ORE Proxy class.
23
- ).freeze,
24
- label: "Collection".freeze,
25
- "rdfs:isDefinedBy" => %(http://pcdm.org/models#).freeze,
26
- subClassOf: "http://www.openarchives.org/ore/terms/Aggregation".freeze,
27
- type: "rdfs:Class".freeze
28
- term :File,
29
- comment: %(
30
- A File is a sequence of binary data and is described by some accompanying metadata.
31
- The metadata typically includes at least basic technical metadata \(size, content type,
32
- modification date, etc.\), but can also include properties related to preservation,
33
- digitization process, provenance, etc. Files MUST be contained by exactly one Object.
34
- ).freeze,
35
- label: "File".freeze,
36
- "rdfs:isDefinedBy" => %(http://pcdm.org/models#).freeze,
37
- type: "rdfs:Class".freeze
38
- term :Object,
39
- comment: %(
40
- An Object is an intellectual entity, sometimes called a "work", "digital object", etc.
41
- Objects have descriptive metadata, access metadata, may contain files and other Objects as
42
- member "components". Each level of a work is therefore represented by an Object instance,
43
- and is capable of standing on its own, being linked to from Collections and other Objects.
44
- Member Objects can be ordered using the ORE Proxy class.
45
- ).freeze,
46
- label: "Object".freeze,
47
- "rdfs:isDefinedBy" => %(http://pcdm.org/models#).freeze,
48
- subClassOf: "http://www.openarchives.org/ore/terms/Aggregation".freeze,
49
- type: "rdfs:Class".freeze
51
+ # Property definitions
52
+ property :hasFile,
53
+ comment: %(Links to a File contained by this Object.).freeze,
54
+ domain: 'http://pcdm.org/models#Object'.freeze,
55
+ label: 'has file'.freeze,
56
+ range: 'http://pcdm.org/models#File'.freeze,
57
+ 'rdfs:isDefinedBy' => %(http://pcdm.org/models#).freeze,
58
+ subPropertyOf: 'http://www.w3.org/ns/ldp#contains'.freeze,
59
+ type: 'rdf:Property'.freeze
60
+ property :hasMember,
61
+ comment: %(Links to a related Object. Typically used to link to component parts, such as a book linking to a page.).freeze,
62
+ domain: 'http://www.openarchives.org/ore/terms/Aggregation'.freeze,
63
+ label: 'has member'.freeze,
64
+ range: 'http://www.openarchives.org/ore/terms/Aggregation'.freeze,
65
+ 'rdfs:isDefinedBy' => %(http://pcdm.org/models#).freeze,
66
+ subPropertyOf: 'http://www.openarchives.org/ore/terms/aggregates'.freeze,
67
+ type: 'rdf:Property'.freeze
68
+ property :hasRelatedFile,
69
+ comment: %(Links to a File which is related to this Object but doesn't directly describe or represent it, such as technical metadata about other files.).freeze,
70
+ domain: 'http://pcdm.org/models#Object'.freeze,
71
+ label: 'has related file'.freeze,
72
+ range: 'http://pcdm.org/models#File'.freeze,
73
+ 'rdfs:isDefinedBy' => %(http://pcdm.org/models#).freeze,
74
+ subPropertyOf: 'http://www.w3.org/ns/ldp#contains'.freeze,
75
+ type: 'rdf:Property'.freeze
50
76
 
51
- # Property definitions
52
- property :hasFile,
53
- comment: %(Links to a File contained by this Object.).freeze,
54
- domain: "http://pcdm.org/models#Object".freeze,
55
- label: "has file".freeze,
56
- range: "http://pcdm.org/models#File".freeze,
57
- "rdfs:isDefinedBy" => %(http://pcdm.org/models#).freeze,
58
- subPropertyOf: "http://www.w3.org/ns/ldp#contains".freeze,
59
- type: "rdf:Property".freeze
60
- property :hasMember,
61
- comment: %(Links to a related Object. Typically used to link to component parts, such as a book linking to a page.).freeze,
62
- domain: "http://www.openarchives.org/ore/terms/Aggregation".freeze,
63
- label: "has member".freeze,
64
- range: "http://www.openarchives.org/ore/terms/Aggregation".freeze,
65
- "rdfs:isDefinedBy" => %(http://pcdm.org/models#).freeze,
66
- subPropertyOf: "http://www.openarchives.org/ore/terms/aggregates".freeze,
67
- type: "rdf:Property".freeze
68
- property :hasRelatedFile,
69
- comment: %(Links to a File which is related to this Object but doesn't directly describe or represent it, such as technical metadata about other files.).freeze,
70
- domain: "http://pcdm.org/models#Object".freeze,
71
- label: "has related file".freeze,
72
- range: "http://pcdm.org/models#File".freeze,
73
- "rdfs:isDefinedBy" => %(http://pcdm.org/models#).freeze,
74
- subPropertyOf: "http://www.w3.org/ns/ldp#contains".freeze,
75
- type: "rdf:Property".freeze
76
-
77
- # Extra definitions
78
- term :"",
79
- comment: %(Ontology for the Portland Common Data Model, intended to underlie a wide array of repository and DAMS applications.).freeze,
80
- "dc:modified" => %(2015-03-16).freeze,
81
- "dc:publisher" => %(http://www.duraspace.org/).freeze,
82
- "dc:title" => %(Portland Common Data Model).freeze,
83
- label: "".freeze,
84
- "owl:versionInfo" => %(2015/03/16).freeze,
85
- "rdfs:seeAlso" => %(https://github.com/duraspace/pcdm/wiki).freeze
77
+ # Extra definitions
78
+ term :"",
79
+ comment: %(Ontology for the Portland Common Data Model, intended to underlie a wide array of repository and DAMS applications.).freeze,
80
+ 'dc:modified' => %(2015-03-16).freeze,
81
+ 'dc:publisher' => %(http://www.duraspace.org/).freeze,
82
+ 'dc:title' => %(Portland Common Data Model).freeze,
83
+ label: ''.freeze,
84
+ 'owl:versionInfo' => %(2015/03/16).freeze,
85
+ 'rdfs:seeAlso' => %(https://github.com/duraspace/pcdm/wiki).freeze
86
+ end
86
87
  end
87
88
  end
@@ -0,0 +1,12 @@
1
+ require 'rdf'
2
+ module Hydra::PCDM
3
+ module Vocab
4
+ class SweetJPLTerms < RDF::StrictVocabulary('http://sweet.jpl.nasa.gov/2.2/reprDataFormat.owl#')
5
+ # Property definitions
6
+ property :byteOrder,
7
+ comment: ['Byte Order.'.freeze],
8
+ range: 'xsd:string'.freeze,
9
+ label: 'Byte Order'.freeze
10
+ end
11
+ end
12
+ end
@@ -3,25 +3,25 @@ require 'spec_helper'
3
3
  RSpec.describe Hydra::PCDM::AncestorChecker do
4
4
  subject { described_class.new(record) }
5
5
 
6
- describe "#ancestor?" do
6
+ describe '#ancestor?' do
7
7
  let(:record) { instance_double(Hydra::PCDM::Object) }
8
8
  let(:member) { record }
9
9
  let(:result) { subject.ancestor?(member) }
10
10
 
11
- context "when the member is the record itself" do
12
- it "is true" do
11
+ context 'when the member is the record itself' do
12
+ it 'is true' do
13
13
  expect(result).to eq true
14
14
  end
15
15
  end
16
- context "when the member is not an ancestor" do
16
+ context 'when the member is not an ancestor' do
17
17
  let(:member) { instance_double(Hydra::PCDM::Object, members: []) }
18
- it "is false" do
18
+ it 'is false' do
19
19
  expect(result).to eq false
20
20
  end
21
21
  end
22
- context "when the member is an ancestor" do
22
+ context 'when the member is an ancestor' do
23
23
  let(:member) { instance_double(Hydra::PCDM::Object, members: [record]) }
24
- it "is true" do
24
+ it 'is true' do
25
25
  expect(result).to eq true
26
26
  end
27
27
  end
@@ -1,26 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Hydra::PCDM::CollectionIndexer do
4
- let(:collection) { Hydra::PCDM::Collection.new }
5
- let(:child_collection_ids) { ['123', '456'] }
6
- let(:child_object_ids) { ['789'] }
7
- let(:member_ids) { ['123', '456', '789'] }
8
- let(:indexer) { described_class.new(collection) }
4
+ let(:collection) { Hydra::PCDM::Collection.new }
5
+ let(:collection_ids) { %w(123 456) }
6
+ let(:object_ids) { ['789'] }
7
+ let(:member_ids) { %w(123 456 789) }
8
+ let(:indexer) { described_class.new(collection) }
9
9
 
10
10
  before do
11
- allow(collection).to receive(:child_collection_ids).and_return(child_collection_ids)
12
- allow(collection).to receive(:child_object_ids).and_return(child_object_ids)
11
+ allow(collection).to receive(:collection_ids).and_return(collection_ids)
12
+ allow(collection).to receive(:object_ids).and_return(object_ids)
13
13
  allow(collection).to receive(:member_ids).and_return(member_ids)
14
14
  end
15
15
 
16
- describe "#generate_solr_document" do
16
+ describe '#generate_solr_document' do
17
17
  subject { indexer.generate_solr_document }
18
18
 
19
- it "has fields" do
20
- expect(subject['child_collection_ids_ssim']).to eq ['123', '456']
21
- expect(subject['child_object_ids_ssim']).to eq ['789']
22
- expect(subject['member_ids_ssim']).to eq ['123', '456', '789']
19
+ it 'has fields' do
20
+ expect(subject['collection_ids_ssim']).to eq %w(123 456)
21
+ expect(subject['object_ids_ssim']).to eq ['789']
22
+ expect(subject['member_ids_ssim']).to eq %w(123 456 789)
23
23
  end
24
24
  end
25
25
  end
26
-