active-fedora 11.0.0.rc1 → 11.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/active_fedora/railtie.rb +2 -2
  3. data/lib/active_fedora/version.rb +1 -1
  4. data/spec/integration/associations_spec.rb +17 -18
  5. data/spec/integration/attached_files_spec.rb +4 -4
  6. data/spec/integration/attributes_spec.rb +12 -16
  7. data/spec/integration/autosave_association_spec.rb +5 -5
  8. data/spec/integration/base_spec.rb +2 -2
  9. data/spec/integration/collection_association_spec.rb +2 -5
  10. data/spec/integration/datastream_rdf_nested_attributes_spec.rb +23 -23
  11. data/spec/integration/date_time_properties_spec.rb +1 -2
  12. data/spec/integration/direct_container_spec.rb +8 -8
  13. data/spec/integration/directly_contains_one_association_spec.rb +11 -13
  14. data/spec/integration/fedora_solr_sync_spec.rb +2 -2
  15. data/spec/integration/file_fixity_spec.rb +6 -8
  16. data/spec/integration/file_spec.rb +9 -10
  17. data/spec/integration/has_many_associations_spec.rb +6 -8
  18. data/spec/integration/indirect_container_spec.rb +8 -9
  19. data/spec/integration/json_serialization_spec.rb +4 -4
  20. data/spec/integration/ntriples_datastream_spec.rb +74 -74
  21. data/spec/integration/om_datastream_spec.rb +13 -13
  22. data/spec/integration/rdf_nested_attributes_spec.rb +6 -6
  23. data/spec/integration/relation_delegation_spec.rb +8 -8
  24. data/spec/integration/relation_spec.rb +13 -16
  25. data/spec/integration/solr_hit_spec.rb +4 -4
  26. data/spec/integration/versionable_spec.rb +132 -132
  27. data/spec/unit/aggregation/list_source_spec.rb +37 -37
  28. data/spec/unit/aggregation/ordered_reader_spec.rb +4 -4
  29. data/spec/unit/association_hash_spec.rb +15 -15
  30. data/spec/unit/attached_files_spec.rb +19 -19
  31. data/spec/unit/attributes_spec.rb +25 -25
  32. data/spec/unit/base_active_model_spec.rb +8 -8
  33. data/spec/unit/base_extra_spec.rb +5 -4
  34. data/spec/unit/base_spec.rb +9 -9
  35. data/spec/unit/change_set_spec.rb +5 -5
  36. data/spec/unit/core_spec.rb +26 -26
  37. data/spec/unit/default_model_mapper_spec.rb +3 -3
  38. data/spec/unit/fedora_spec.rb +2 -2
  39. data/spec/unit/file_configurator_spec.rb +92 -92
  40. data/spec/unit/file_spec.rb +60 -60
  41. data/spec/unit/files_hash_spec.rb +7 -7
  42. data/spec/unit/has_and_belongs_to_many_association_spec.rb +12 -12
  43. data/spec/unit/has_many_association_spec.rb +2 -2
  44. data/spec/unit/indexers/global_indexer_spec.rb +6 -6
  45. data/spec/unit/indexing_service_spec.rb +5 -5
  46. data/spec/unit/indexing_spec.rb +4 -4
  47. data/spec/unit/loadable_from_json_spec.rb +4 -4
  48. data/spec/unit/model_classifier_spec.rb +4 -4
  49. data/spec/unit/nom_datastream_spec.rb +8 -8
  50. data/spec/unit/om_datastream_spec.rb +43 -43
  51. data/spec/unit/ordered_spec.rb +142 -142
  52. data/spec/unit/orders/list_node_spec.rb +20 -20
  53. data/spec/unit/orders/ordered_list_spec.rb +96 -96
  54. data/spec/unit/orders/reflection_spec.rb +3 -3
  55. data/spec/unit/pathing_spec.rb +4 -4
  56. data/spec/unit/persistence_spec.rb +28 -28
  57. data/spec/unit/qualified_dublin_core_datastream_spec.rb +8 -8
  58. data/spec/unit/query_spec.rb +5 -5
  59. data/spec/unit/rdf/indexing_service_spec.rb +17 -17
  60. data/spec/unit/rdf_datastream_spec.rb +10 -10
  61. data/spec/unit/rdf_resource_datastream_spec.rb +37 -37
  62. data/spec/unit/rdfxml_datastream_spec.rb +14 -14
  63. data/spec/unit/readonly_spec.rb +5 -4
  64. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +9 -9
  65. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +9 -9
  66. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +9 -9
  67. data/spec/unit/schema_indexing_strategy_spec.rb +5 -5
  68. data/spec/unit/serializers_spec.rb +3 -4
  69. data/spec/unit/solr_hit_spec.rb +9 -9
  70. data/spec/unit/sparql_insert_spec.rb +2 -2
  71. data/spec/unit/validations_spec.rb +9 -9
  72. data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +2 -1
  73. data/spec/unit/with_metadata/metadata_node_spec.rb +3 -2
  74. metadata +2 -2
@@ -25,7 +25,7 @@ describe ActiveFedora::Indexing do
25
25
  Object.send(:remove_const, :SpecNode)
26
26
  end
27
27
 
28
- subject { SpecNode.new }
28
+ subject(:node) { SpecNode.new }
29
29
 
30
30
  describe "#create_needs_index?" do
31
31
  subject { SpecNode.new.send(:create_needs_index?) }
@@ -55,10 +55,10 @@ describe ActiveFedora::Indexing do
55
55
 
56
56
  let(:test_object) { SpecNode.new(title: ['first title'], abstract: 'The abstract') }
57
57
 
58
- subject { test_object.to_solr }
58
+ subject(:solr_doc) { test_object.to_solr }
59
59
 
60
60
  it "indexs the rdf properties" do
61
- expect(subject).to include('title_tesim' => ['first title'], 'abstract_ssi' => 'The abstract')
61
+ expect(solr_doc).to include('title_tesim' => ['first title'], 'abstract_ssi' => 'The abstract')
62
62
  end
63
63
 
64
64
  it "adds id, system_create_date, system_modified_date from object attributes" do
@@ -80,7 +80,7 @@ describe ActiveFedora::Indexing do
80
80
  expect(mock2).to receive(:to_solr).and_return("two" => "title two")
81
81
 
82
82
  allow(test_object).to receive(:declared_attached_files).and_return(ds1: mock1, ds2: mock2)
83
- expect(subject).to include('one' => 'title one', 'two' => 'title two')
83
+ expect(solr_doc).to include('one' => 'title one', 'two' => 'title two')
84
84
  end
85
85
  end
86
86
  end
@@ -23,17 +23,17 @@ describe ActiveFedora::LoadableFromJson::SolrBackedResource do
23
23
 
24
24
  describe "#query" do
25
25
  describe "a known relationship" do
26
- subject { resource.query(predicate: ::RDF::Vocab::DC.extent) }
26
+ subject(:resources) { resource.query(predicate: ::RDF::Vocab::DC.extent) }
27
27
 
28
28
  it "is enumerable" do
29
- expect(subject.map(&:object)).to eq [RDF::URI('http://example.org/123')]
29
+ expect(resources.map(&:object)).to eq [RDF::URI('http://example.org/123')]
30
30
  end
31
31
  end
32
32
 
33
33
  describe "a unknown relationship" do
34
- subject { resource.query(predicate: ::RDF::Vocab::DC.accrualPeriodicity) }
34
+ subject(:resources) { resource.query(predicate: ::RDF::Vocab::DC.accrualPeriodicity) }
35
35
  it "raises an error" do
36
- expect { subject }.to raise_error "Unable to find reflection for http://purl.org/dc/terms/accrualPeriodicity in Foo"
36
+ expect { resources }.to raise_error "Unable to find reflection for http://purl.org/dc/terms/accrualPeriodicity in Foo"
37
37
  end
38
38
  end
39
39
  end
@@ -11,7 +11,7 @@ describe ActiveFedora::ModelClassifier do
11
11
  end
12
12
 
13
13
  let(:class_names) { ["ParentClass::SiblingClass", "ParentClass::OtherSiblingClass", "ParentClass::SubclassClass", "ParentClass::NoSuchClass"] }
14
- subject { described_class.new class_names }
14
+ subject(:classifier) { described_class.new class_names }
15
15
 
16
16
  describe ".class_from_string" do
17
17
  it "returns class constants based on strings" do
@@ -33,17 +33,17 @@ describe ActiveFedora::ModelClassifier do
33
33
 
34
34
  describe '#models' do
35
35
  it 'converts class names to classes' do
36
- expect(subject.models).to match_array [ParentClass::SiblingClass, ParentClass::OtherSiblingClass, ParentClass::SubclassClass]
36
+ expect(classifier.models).to match_array [ParentClass::SiblingClass, ParentClass::OtherSiblingClass, ParentClass::SubclassClass]
37
37
  end
38
38
  end
39
39
 
40
40
  describe '#best_model' do
41
41
  it 'selects the most specific matching model' do
42
- expect(subject.best_model(default: nil)).to eq ParentClass::SubclassClass
42
+ expect(classifier.best_model(default: nil)).to eq ParentClass::SubclassClass
43
43
  end
44
44
 
45
45
  it 'filters models to subclasses of the default' do
46
- expect(subject.best_model(default: ActiveFedora::Base)).to eq ActiveFedora::Base
46
+ expect(classifier.best_model(default: ActiveFedora::Base)).to eq ActiveFedora::Base
47
47
  end
48
48
  end
49
49
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::NomDatastream do
4
4
  describe "test" do
5
- subject {
5
+ subject(:datastream) {
6
6
  class MyNomDatastream < ActiveFedora::NomDatastream
7
7
  set_terminology do |t|
8
8
  t.a path: '//a', accessor: lambda { |x| x.text }, index: 'a_s'
@@ -13,21 +13,21 @@ describe ActiveFedora::NomDatastream do
13
13
  MyNomDatastream.new
14
14
  }
15
15
  before do
16
- subject.content = '<root><a>123</a><b><c>asdf</c></b></root>'
16
+ datastream.content = '<root><a>123</a><b><c>asdf</c></b></root>'
17
17
  end
18
18
 
19
19
  it "works" do
20
- expect(subject.a).to include("123")
20
+ expect(datastream.a).to include("123")
21
21
  end
22
22
 
23
23
  it "to_solrs" do
24
- expect(subject.to_solr['a_s']).to include('123')
25
- expect(subject.to_solr['b_s']).to include('asdf')
24
+ expect(datastream.to_solr['a_s']).to include('123')
25
+ expect(datastream.to_solr['b_s']).to include('asdf')
26
26
  end
27
27
  end
28
28
 
29
29
  describe "with options for .set_terminology" do
30
- subject {
30
+ subject(:datastream) {
31
31
  class TerminologyOptions < ActiveFedora::NomDatastream
32
32
  set_terminology(namespaces: {
33
33
  'dc' => "http://purl.org/dc/elements/1.1/",
@@ -41,7 +41,7 @@ describe ActiveFedora::NomDatastream do
41
41
  }
42
42
 
43
43
  before do
44
- subject.content = %(
44
+ datastream.content = %(
45
45
  <root
46
46
  xmlns:dc="http://purl.org/dc/elements/1.1/"
47
47
  xmlns:dcterms="http://purl.org/dc/terms/"
@@ -54,7 +54,7 @@ describe ActiveFedora::NomDatastream do
54
54
  end
55
55
 
56
56
  it "scopes #a attribute to only the dc namespace" do
57
- expect(subject.a).to eq ["123"]
57
+ expect(datastream.a).to eq ["123"]
58
58
  end
59
59
  end
60
60
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::OmDatastream do
4
- subject { described_class.new }
4
+ subject(:datastream) { described_class.new }
5
5
  it { should be_metadata }
6
6
 
7
7
  it "includes the Solrizer::XML::TerminologyBasedSolrizer for .to_solr support" do
@@ -23,16 +23,16 @@ describe ActiveFedora::OmDatastream do
23
23
  end
24
24
 
25
25
  describe "#prefix" do
26
- subject { described_class.new }
26
+ subject(:datastream) { described_class.new }
27
27
  it "reflects the dsid" do
28
- expect(subject.send(:prefix, 'descMetadata')).to eq "desc_metadata__"
28
+ expect(datastream.send(:prefix, 'descMetadata')).to eq "desc_metadata__"
29
29
  end
30
30
  end
31
31
 
32
32
  describe '#xml_template' do
33
- subject { described_class.xml_template.to_xml }
33
+ subject(:datastream) { described_class.xml_template.to_xml }
34
34
  it "returns an empty xml document" do
35
- expect(subject).to be_equivalent_to("<?xml version=\"1.0\"?>\n<xml/>\n")
35
+ expect(datastream).to be_equivalent_to("<?xml version=\"1.0\"?>\n<xml/>\n")
36
36
  end
37
37
  end
38
38
 
@@ -54,17 +54,17 @@ describe ActiveFedora::OmDatastream do
54
54
  "foo__"
55
55
  end
56
56
  end
57
- subject.title = 'Science'
57
+ datastream.title = 'Science'
58
58
  end
59
59
  after do
60
60
  Object.send(:remove_const, :MyDatastream)
61
61
  end
62
- subject { MyDatastream.new }
62
+ subject(:datastream) { MyDatastream.new }
63
63
  it "uses the prefix" do
64
- expect(subject.to_solr).to have_key('foo__title_tesim')
64
+ expect(datastream.to_solr).to have_key('foo__title_tesim')
65
65
  end
66
66
  it "does not prefix fields that aren't defined by this datastream" do
67
- expect(subject.to_solr('id' => 'test:123')).to have_key('id')
67
+ expect(datastream.to_solr('id' => 'test:123')).to have_key('id')
68
68
  end
69
69
  end
70
70
  end
@@ -170,55 +170,55 @@ describe ActiveFedora::OmDatastream do
170
170
  end
171
171
 
172
172
  before do
173
- allow(subject).to receive(:ldp_source).and_return(ldp_source)
173
+ allow(datastream).to receive(:ldp_source).and_return(ldp_source)
174
174
  end
175
175
 
176
176
  it "persists the product of .to_xml in fedora" do
177
- subject.serialize!
178
- subject.save
179
- expect(subject.mime_type).to eq 'text/xml'
177
+ datastream.serialize!
178
+ datastream.save
179
+ expect(datastream.mime_type).to eq 'text/xml'
180
180
  end
181
181
  end
182
182
 
183
183
  describe 'setting content' do
184
- subject { described_class.new }
185
- before { subject.content = "<a />" }
184
+ subject(:datastream) { described_class.new }
185
+ before { datastream.content = "<a />" }
186
186
 
187
187
  it "updates the content" do
188
- expect(subject.content).to eq "<?xml version=\"1.0\"?>\n<a/>"
188
+ expect(datastream.content).to eq "<?xml version=\"1.0\"?>\n<a/>"
189
189
  end
190
190
 
191
191
  it "marks the object as changed" do
192
- expect(subject).to be_changed
192
+ expect(datastream).to be_changed
193
193
  end
194
194
 
195
195
  it "update ngxml and mark the xml as loaded" do
196
- expect(subject.ng_xml.to_xml).to match(/<a\/>/)
197
- expect(subject.xml_loaded).to be true
196
+ expect(datastream.ng_xml.to_xml).to match(/<a\/>/)
197
+ expect(datastream.xml_loaded).to be true
198
198
  end
199
199
  end
200
200
 
201
201
  describe 'ng_xml=' do
202
202
  let(:sample_raw_xml) { "<foo><xmlelement/></foo>" }
203
203
 
204
- subject { described_class.new }
204
+ subject(:datastream) { described_class.new }
205
205
 
206
206
  it "parses raw xml for you" do
207
- subject.ng_xml = sample_raw_xml
208
- expect(subject.ng_xml).to be_kind_of Nokogiri::XML::Document
209
- expect(subject.ng_xml.to_xml).to be_equivalent_to(sample_raw_xml)
207
+ datastream.ng_xml = sample_raw_xml
208
+ expect(datastream.ng_xml).to be_kind_of Nokogiri::XML::Document
209
+ expect(datastream.ng_xml.to_xml).to be_equivalent_to(sample_raw_xml)
210
210
  end
211
211
 
212
212
  it "alwayses set a document when an Element is passed" do
213
- subject.ng_xml = Nokogiri::XML(sample_raw_xml).xpath('//xmlelement').first
214
- expect(subject.ng_xml).to be_kind_of Nokogiri::XML::Document
215
- expect(subject.ng_xml.to_xml).to be_equivalent_to("<xmlelement/>")
213
+ datastream.ng_xml = Nokogiri::XML(sample_raw_xml).xpath('//xmlelement').first
214
+ expect(datastream.ng_xml).to be_kind_of Nokogiri::XML::Document
215
+ expect(datastream.ng_xml.to_xml).to be_equivalent_to("<xmlelement/>")
216
216
  end
217
217
 
218
218
  it "marks the datastream as changed" do
219
219
  expect {
220
- subject.ng_xml = sample_raw_xml
221
- }.to change { subject.changed? }.from(false).to(true)
220
+ datastream.ng_xml = sample_raw_xml
221
+ }.to change { datastream.changed? }.from(false).to(true)
222
222
  end
223
223
  end
224
224
 
@@ -226,23 +226,23 @@ describe ActiveFedora::OmDatastream do
226
226
  let(:doc) { Nokogiri::XML::Document.parse("<text_document/>") }
227
227
 
228
228
  it "ng_xml.to_xmls" do
229
- allow(subject).to receive(:ng_xml).and_return(doc)
230
- expect(subject.to_xml).to eq "<?xml version=\"1.0\"?>\n<text_document/>"
229
+ allow(datastream).to receive(:ng_xml).and_return(doc)
230
+ expect(datastream.to_xml).to eq "<?xml version=\"1.0\"?>\n<text_document/>"
231
231
  end
232
232
 
233
233
  it 'accepts an optional Nokogiri::XML Document as an argument and insert its fields into that (mocked test)' do
234
234
  expect(doc.root).to receive(:add_child) # .with(test_ds.ng_xml.root)
235
- subject.to_xml(doc)
235
+ datastream.to_xml(doc)
236
236
  end
237
237
 
238
238
  context "with some existing content" do
239
239
  before do
240
- subject.content = "<test_xml/>"
240
+ datastream.content = "<test_xml/>"
241
241
  end
242
242
  it 'accepts an optional Nokogiri::XML Document as an argument and insert its fields into that (functional test)' do
243
243
  expected_result = "<test_document><foo/><test_xml/></test_document>"
244
244
  doc = Nokogiri::XML::Document.parse("<test_document><foo/></test_document>")
245
- result = subject.to_xml(doc)
245
+ result = datastream.to_xml(doc)
246
246
  expect(doc).to be_equivalent_to expected_result
247
247
  expect(result).to be_equivalent_to expected_result
248
248
  end
@@ -250,25 +250,25 @@ describe ActiveFedora::OmDatastream do
250
250
  it 'adds to root of Nokogiri::XML::Documents, but add directly to the elements if a Nokogiri::XML::Node is passed in' do
251
251
  doc = Nokogiri::XML::Document.parse("<test_document/>")
252
252
  el = Nokogiri::XML::Node.new("test_element", Nokogiri::XML::Document.new)
253
- expect(subject.to_xml(doc)).to be_equivalent_to "<test_document><test_xml/></test_document>"
254
- expect(subject.to_xml(el)).to be_equivalent_to "<test_element/>"
253
+ expect(datastream.to_xml(doc)).to be_equivalent_to "<test_document><test_xml/></test_document>"
254
+ expect(datastream.to_xml(el)).to be_equivalent_to "<test_element/>"
255
255
  end
256
256
  end
257
257
  end
258
258
 
259
259
  describe '.update_values' do
260
- subject { described_class.new }
260
+ subject(:datastream) { described_class.new }
261
261
 
262
- before { subject.content = fixture(File.join("mods_articles", "mods_article1.xml")).read }
262
+ before { datastream.content = fixture(File.join("mods_articles", "mods_article1.xml")).read }
263
263
 
264
264
  it "updates a value internally call OM::XML::TermValueOperators::update_values if internal_solr_doc is not set" do
265
- expect(subject).to receive(:om_update_values)
266
- subject.update_values([{ ":person" => "0" }, "role", "text"] => { "0" => "role1", "1" => "role2", "2" => "role3" })
265
+ expect(datastream).to receive(:om_update_values)
266
+ datastream.update_values([{ ":person" => "0" }, "role", "text"] => { "0" => "role1", "1" => "role2", "2" => "role3" })
267
267
  end
268
268
 
269
269
  it "sets changed to true" do
270
- subject.update_values([{ ":person" => "0" }, "role", "text"] => { "0" => "role1", "1" => "role2", "2" => "role3" })
271
- expect(subject).to be_changed
270
+ datastream.update_values([{ ":person" => "0" }, "role", "text"] => { "0" => "role1", "1" => "role2", "2" => "role3" })
271
+ expect(datastream).to be_changed
272
272
  end
273
273
  end
274
274
 
@@ -285,10 +285,10 @@ describe ActiveFedora::OmDatastream do
285
285
  @obj.destroy
286
286
  Object.send(:remove_const, :MyObj)
287
287
  end
288
- subject { @obj.reload.descMetadata }
288
+ subject(:datastream) { @obj.reload.descMetadata }
289
289
  it "does not load the descMetadata datastream when calling content_changed?" do
290
290
  expect(@obj).to_not receive(:content)
291
- expect(subject).to_not be_content_changed
291
+ expect(datastream).to_not be_content_changed
292
292
  end
293
293
  end
294
294
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::Orders do
4
- subject { Image.new }
4
+ subject(:image) { Image.new }
5
5
  before do
6
6
  class Member < ActiveFedora::Base
7
7
  end
@@ -19,9 +19,9 @@ describe ActiveFedora::Orders do
19
19
  describe "<<" do
20
20
  it "does not accept base objects" do
21
21
  member = Member.new
22
- expect { subject.ordered_member_proxies << member }.to raise_error ActiveFedora::AssociationTypeMismatch
23
- expect(subject).not_to be_changed
24
- expect(subject.list_source).not_to be_changed
22
+ expect { image.ordered_member_proxies << member }.to raise_error ActiveFedora::AssociationTypeMismatch
23
+ expect(image).not_to be_changed
24
+ expect(image.list_source).not_to be_changed
25
25
  end
26
26
  end
27
27
 
@@ -62,53 +62,53 @@ describe ActiveFedora::Orders do
62
62
  describe "<<" do
63
63
  it "appends" do
64
64
  member = Member.new
65
- subject.save!
66
- expect(subject.ordered_members << member).to eq [member]
67
- expect(subject.ordered_members).to eq [member]
68
- expect(subject.members).to eq [member]
69
- expect(subject.ordered_member_proxies.to_a.length).to eq 1
70
- subject.save!
71
- expect(subject.head).not_to be_blank
72
- expect(subject.reload.head).not_to be_blank
65
+ image.save!
66
+ expect(image.ordered_members << member).to eq [member]
67
+ expect(image.ordered_members).to eq [member]
68
+ expect(image.members).to eq [member]
69
+ expect(image.ordered_member_proxies.to_a.length).to eq 1
70
+ image.save!
71
+ expect(image.head).not_to be_blank
72
+ expect(image.reload.head).not_to be_blank
73
73
  end
74
74
  it "maintains member associations" do
75
75
  member = Member.create
76
- subject.ordered_members << member
77
- subject.save
78
- subject.reload
79
- expect(subject.members).to eq [member]
76
+ image.ordered_members << member
77
+ image.save
78
+ image.reload
79
+ expect(image.members).to eq [member]
80
80
  end
81
81
  end
82
82
  describe "#=" do
83
83
  it "sets ordered members" do
84
84
  member = Member.new
85
85
  member_2 = Member.new
86
- subject.ordered_members << member
87
- expect(subject.ordered_members).to eq [member]
88
- subject.ordered_members = [member_2, member_2]
89
- expect(subject.ordered_members).to eq [member_2, member_2]
86
+ image.ordered_members << member
87
+ expect(image.ordered_members).to eq [member]
88
+ image.ordered_members = [member_2, member_2]
89
+ expect(image.ordered_members).to eq [member_2, member_2]
90
90
  # Removing from ordering is not the same as removing from aggregation.
91
- expect(subject.members).to contain_exactly member, member_2
91
+ expect(image.members).to contain_exactly member, member_2
92
92
  end
93
93
  end
94
94
  describe "+=" do
95
95
  it "appends ordered members" do
96
96
  member = Member.new
97
97
  member_2 = Member.new
98
- subject.ordered_members << member
99
- expect(subject.ordered_members += [member, member_2]).to eq [member, member, member_2]
100
- expect(subject.ordered_members).to eq [member, member, member_2]
101
- expect(subject.ordered_member_proxies.map(&:target)).to eq [member, member, member_2]
98
+ image.ordered_members << member
99
+ expect(image.ordered_members += [member, member_2]).to eq [member, member, member_2]
100
+ expect(image.ordered_members).to eq [member, member, member_2]
101
+ expect(image.ordered_member_proxies.map(&:target)).to eq [member, member, member_2]
102
102
  end
103
103
  end
104
104
  describe "#delete_at" do
105
105
  it "deletes that position" do
106
106
  member = Member.new
107
107
  member_2 = Member.new
108
- subject.ordered_members += [member, member_2]
108
+ image.ordered_members += [member, member_2]
109
109
 
110
- expect(subject.ordered_members.delete_at(0)).to eq member
111
- expect(subject.ordered_members).to eq [member_2]
110
+ expect(image.ordered_members.delete_at(0)).to eq member
111
+ expect(image.ordered_members).to eq [member_2]
112
112
  end
113
113
  end
114
114
 
@@ -116,27 +116,27 @@ describe ActiveFedora::Orders do
116
116
  let(:member) { Member.create }
117
117
  let(:member_2) { Member.create }
118
118
  before do
119
- subject.ordered_members += [member, member_2, member]
120
- subject.save!
119
+ image.ordered_members += [member, member_2, member]
120
+ image.save!
121
121
  end
122
122
 
123
123
  context "with an object found in the list" do
124
124
  it "deletes all occurences of the object" do
125
- expect(subject.ordered_members.delete(member)).to eq member
126
- expect(subject.ordered_members.to_a).to eq [member_2]
125
+ expect(image.ordered_members.delete(member)).to eq member
126
+ expect(image.ordered_members.to_a).to eq [member_2]
127
127
  end
128
128
  it "can delete all" do
129
- expect(subject.ordered_members.delete(member)).to eq member
130
- expect(subject.ordered_members.delete(member_2)).to eq member_2
131
- subject.save!
132
- expect(subject.reload.ordered_members.to_a).to eq []
129
+ expect(image.ordered_members.delete(member)).to eq member
130
+ expect(image.ordered_members.delete(member_2)).to eq member_2
131
+ image.save!
132
+ expect(image.reload.ordered_members.to_a).to eq []
133
133
  end
134
134
  end
135
135
 
136
136
  context "with an object not found in the list" do
137
137
  it "returns nil" do
138
- expect(subject.ordered_members.delete(Member.create)).to be_nil
139
- expect(subject.ordered_members.to_a).to eq [member, member_2, member]
138
+ expect(image.ordered_members.delete(Member.create)).to be_nil
139
+ expect(image.ordered_members.to_a).to eq [member, member_2, member]
140
140
  end
141
141
  end
142
142
  end
@@ -145,29 +145,29 @@ describe ActiveFedora::Orders do
145
145
  it "adds at a given position" do
146
146
  member = Member.new
147
147
  member_2 = Member.new
148
- subject.ordered_members += [member, member_2]
148
+ image.ordered_members += [member, member_2]
149
149
 
150
- subject.ordered_members.insert_at(0, member_2)
151
- expect(subject.ordered_members).to eq [member_2, member, member_2]
150
+ image.ordered_members.insert_at(0, member_2)
151
+ expect(image.ordered_members).to eq [member_2, member, member_2]
152
152
  end
153
153
  it "adds a proxy_in statement" do
154
154
  member = Member.new
155
155
  member_2 = Member.new
156
- subject.ordered_members += [member, member_2]
156
+ image.ordered_members += [member, member_2]
157
157
 
158
- subject.ordered_members.insert_at(0, member_2)
159
- expect(subject.ordered_member_proxies.map(&:proxy_in).uniq).to eq [subject]
158
+ image.ordered_members.insert_at(0, member_2)
159
+ expect(image.ordered_member_proxies.map(&:proxy_in).uniq).to eq [image]
160
160
  end
161
161
  end
162
162
  describe "lazy loading" do
163
163
  it "does not instantiate every record on append" do
164
164
  member = Member.new
165
165
  member_2 = Member.new
166
- subject.ordered_members += [member, member_2]
167
- subject.save
166
+ image.ordered_members += [member, member_2]
167
+ image.save
168
168
  allow(ActiveFedora::Base).to receive(:find).and_call_original
169
169
 
170
- reloaded = subject.class.find(subject.id)
170
+ reloaded = image.class.find(image.id)
171
171
  reloaded.ordered_members << member
172
172
 
173
173
  expect(ActiveFedora::Base).not_to have_received(:find).with(member_2.id)
@@ -175,11 +175,11 @@ describe ActiveFedora::Orders do
175
175
  it "does not instantiate every record on #insert_at" do
176
176
  member = Member.new
177
177
  member_2 = Member.new
178
- subject.ordered_members += [member, member_2]
179
- subject.save
178
+ image.ordered_members += [member, member_2]
179
+ image.save
180
180
  allow(ActiveFedora::Base).to receive(:find).and_call_original
181
181
 
182
- reloaded = subject.class.find(subject.id)
182
+ reloaded = image.class.find(image.id)
183
183
  reloaded.ordered_members.insert_at(0, member)
184
184
 
185
185
  expect(ActiveFedora::Base).not_to have_received(:find).with(member_2.id)
@@ -189,179 +189,179 @@ describe ActiveFedora::Orders do
189
189
  describe "append_target" do
190
190
  it "doesn't add all members" do
191
191
  member = Member.new
192
- subject.members << member
193
- expect(subject.ordered_members).to eq []
192
+ image.members << member
193
+ expect(image.ordered_members).to eq []
194
194
  end
195
195
  it "can handle adding many objects" do
196
196
  member = Member.new
197
197
  60.times do
198
- subject.ordered_member_proxies.append_target member
198
+ image.ordered_member_proxies.append_target member
199
199
  end
200
- expect(subject.ordered_member_proxies.to_a.length).to eq 60
200
+ expect(image.ordered_member_proxies.to_a.length).to eq 60
201
201
  end
202
202
  it "can't add items not accepted by indirect container" do
203
203
  bad_class = BadClass.new
204
- expect { subject.ordered_member_proxies.append_target bad_class }.to raise_error ActiveFedora::AssociationTypeMismatch
204
+ expect { image.ordered_member_proxies.append_target bad_class }.to raise_error ActiveFedora::AssociationTypeMismatch
205
205
  end
206
206
  it "adds a member if it doesn't exist in members" do
207
207
  member = Member.new
208
- subject.ordered_member_proxies.append_target member
209
- expect(subject.members).to eq [member]
210
- expect(subject.ordered_members).to eq [member]
208
+ image.ordered_member_proxies.append_target member
209
+ expect(image.members).to eq [member]
210
+ expect(image.ordered_members).to eq [member]
211
211
  end
212
212
  it "doesn't add a member twice" do
213
213
  member = Member.new
214
- subject.ordered_member_proxies.append_target member
215
- subject.ordered_member_proxies.append_target member
216
- expect(subject.members).to eq [member]
217
- expect(subject.ordered_members).to eq [member, member]
214
+ image.ordered_member_proxies.append_target member
215
+ image.ordered_member_proxies.append_target member
216
+ expect(image.members).to eq [member]
217
+ expect(image.ordered_members).to eq [member, member]
218
218
  end
219
219
  it "survives persistence" do
220
220
  member = Member.new
221
- subject.ordered_member_proxies.append_target member
222
- subject.ordered_member_proxies.append_target member
223
- subject.save
224
- subject.reload
225
- expect(subject.ordered_members).to eq [member, member]
226
- expect(subject.ordered_member_ids).to eq [member.id, member.id]
227
- expect(subject.list_source.resource.query([nil, ::RDF::Vocab::ORE.proxyIn, subject.resource.rdf_subject]).to_a.length).to eq 2
228
- expect(subject.head_ids).to eq subject.list_source.head_id
229
- expect(subject.tail_ids).to eq subject.list_source.tail_id
221
+ image.ordered_member_proxies.append_target member
222
+ image.ordered_member_proxies.append_target member
223
+ image.save
224
+ image.reload
225
+ expect(image.ordered_members).to eq [member, member]
226
+ expect(image.ordered_member_ids).to eq [member.id, member.id]
227
+ expect(image.list_source.resource.query([nil, ::RDF::Vocab::ORE.proxyIn, image.resource.rdf_subject]).to_a.length).to eq 2
228
+ expect(image.head_ids).to eq image.list_source.head_id
229
+ expect(image.tail_ids).to eq image.list_source.tail_id
230
230
  end
231
231
  it "can add already persisted items" do
232
232
  member = Member.create
233
- subject.ordered_member_proxies.append_target member
234
- subject.save
235
- subject.reload
236
- expect(subject.ordered_members).to eq [member]
233
+ image.ordered_member_proxies.append_target member
234
+ image.save
235
+ image.reload
236
+ expect(image.ordered_members).to eq [member]
237
237
  end
238
238
  it "can append to a pre-persisted item" do
239
239
  member = Member.new
240
- subject.ordered_member_proxies.append_target member
241
- subject.save
242
- subject.reload
240
+ image.ordered_member_proxies.append_target member
241
+ image.save
242
+ image.reload
243
243
  member_2 = Member.new
244
- subject.ordered_member_proxies.append_target member_2
245
- subject.save
246
- subject.reload
247
- expect(subject.ordered_members).to eq [member, member_2]
244
+ image.ordered_member_proxies.append_target member_2
245
+ image.save
246
+ image.reload
247
+ expect(image.ordered_members).to eq [member, member_2]
248
248
  end
249
249
  end
250
250
  describe "insert_target_at" do
251
251
  it "can add between items" do
252
252
  member = Member.new
253
253
  member2 = Member.new
254
- subject.ordered_member_proxies.append_target member
255
- subject.ordered_member_proxies.append_target member
256
- subject.ordered_member_proxies.insert_target_at(1, member2)
257
- expect(subject.ordered_members).to eq [member, member2, member]
258
- subject.save
259
- subject.reload
260
- expect(subject.ordered_members).to eq [member, member2, member]
261
- subject.ordered_member_proxies.insert_target_at(2, member2)
262
- subject.save
263
- subject.reload
264
- expect(subject.ordered_members).to eq [member, member2, member2, member]
254
+ image.ordered_member_proxies.append_target member
255
+ image.ordered_member_proxies.append_target member
256
+ image.ordered_member_proxies.insert_target_at(1, member2)
257
+ expect(image.ordered_members).to eq [member, member2, member]
258
+ image.save
259
+ image.reload
260
+ expect(image.ordered_members).to eq [member, member2, member]
261
+ image.ordered_member_proxies.insert_target_at(2, member2)
262
+ image.save
263
+ image.reload
264
+ expect(image.ordered_members).to eq [member, member2, member2, member]
265
265
  end
266
266
  end
267
267
  describe "insert_target_id_at" do
268
268
  it "can add between items" do
269
269
  member = Member.create
270
270
  member2 = Member.create
271
- subject.ordered_members += [member, member2]
271
+ image.ordered_members += [member, member2]
272
272
 
273
273
  allow(ActiveFedora::Base).to receive(:find).and_call_original
274
- subject.ordered_member_proxies.insert_target_id_at(1, member2.id)
274
+ image.ordered_member_proxies.insert_target_id_at(1, member2.id)
275
275
  expect(ActiveFedora::Base).not_to have_received(:find).with(member2.id)
276
- expect(subject.ordered_members).to eq [member, member2, member2]
276
+ expect(image.ordered_members).to eq [member, member2, member2]
277
277
  expect(ActiveFedora::Base).to have_received(:find).with(member2.id)
278
278
  end
279
279
  context "when given a nil id" do
280
280
  it "raises an ArgumentError" do
281
- expect { subject.ordered_member_proxies.insert_target_id_at(0, nil) }.to raise_error ArgumentError, "ID can not be nil"
281
+ expect { image.ordered_member_proxies.insert_target_id_at(0, nil) }.to raise_error ArgumentError, "ID can not be nil"
282
282
  end
283
283
  end
284
284
  context "when given an ID not in members" do
285
285
  it "raises an ArgumentError" do
286
- expect { subject.ordered_member_proxies.insert_target_id_at(0, "test") }.to raise_error "test is not a part of members"
286
+ expect { image.ordered_member_proxies.insert_target_id_at(0, "test") }.to raise_error "test is not a part of members"
287
287
  end
288
288
  end
289
289
  end
290
290
  describe "-=" do
291
291
  it "can remove proxies" do
292
292
  member = Member.new
293
- subject.ordered_member_proxies.append_target member
294
- subject.ordered_member_proxies -= [subject.ordered_member_proxies.last]
295
- expect(subject.ordered_members).to eq []
296
- expect(subject.list_source.resource.statements.to_a.length).to eq 1
293
+ image.ordered_member_proxies.append_target member
294
+ image.ordered_member_proxies -= [image.ordered_member_proxies.last]
295
+ expect(image.ordered_members).to eq []
296
+ expect(image.list_source.resource.statements.to_a.length).to eq 1
297
297
  end
298
298
  it "can remove proxies in the middle" do
299
299
  member = Member.new
300
300
  member_2 = Member.new
301
- subject.ordered_member_proxies.append_target member
302
- subject.ordered_member_proxies.append_target member_2
303
- subject.ordered_member_proxies.append_target member
304
- subject.ordered_member_proxies -= [subject.ordered_member_proxies[1]]
305
- expect(subject.ordered_members).to eq [member, member]
301
+ image.ordered_member_proxies.append_target member
302
+ image.ordered_member_proxies.append_target member_2
303
+ image.ordered_member_proxies.append_target member
304
+ image.ordered_member_proxies -= [image.ordered_member_proxies[1]]
305
+ expect(image.ordered_members).to eq [member, member]
306
306
  end
307
307
  it "can remove proxies post-create" do
308
308
  member = Member.new
309
- subject.ordered_member_proxies.append_target member
310
- subject.ordered_member_proxies.append_target member
311
- subject.ordered_member_proxies.append_target member
312
- subject.save
313
- subject.reload
314
- subject.ordered_member_proxies -= [subject.ordered_member_proxies[1]]
315
- expect(subject.ordered_members).to eq [member, member]
316
- subject.save
317
- subject.reload
318
- expect(subject.ordered_members).to eq [member, member]
309
+ image.ordered_member_proxies.append_target member
310
+ image.ordered_member_proxies.append_target member
311
+ image.ordered_member_proxies.append_target member
312
+ image.save
313
+ image.reload
314
+ image.ordered_member_proxies -= [image.ordered_member_proxies[1]]
315
+ expect(image.ordered_members).to eq [member, member]
316
+ image.save
317
+ image.reload
318
+ expect(image.ordered_members).to eq [member, member]
319
319
  # THIS NEEDS TO PASS - can't delete fragment URI resources via sparql
320
320
  # update?
321
321
  # Blocked by https://jira.duraspace.org/browse/FCREPO-1764
322
- # expect(subject.list_source.resource.subjects.to_a.length).to eq 5
322
+ # expect(image.list_source.resource.subjects.to_a.length).to eq 5
323
323
  end
324
324
  end
325
325
  describe ".delete_at" do
326
326
  it "can remove in the middle" do
327
327
  member = Member.new
328
- subject.ordered_member_proxies.append_target member
329
- subject.ordered_member_proxies.append_target member
330
- subject.ordered_member_proxies.append_target member
331
- subject.ordered_member_proxies.delete_at(1)
332
- expect(subject.ordered_members).to eq [member, member]
328
+ image.ordered_member_proxies.append_target member
329
+ image.ordered_member_proxies.append_target member
330
+ image.ordered_member_proxies.append_target member
331
+ image.ordered_member_proxies.delete_at(1)
332
+ expect(image.ordered_members).to eq [member, member]
333
333
  end
334
334
  it "returns the node" do
335
335
  member = Member.new
336
- subject.ordered_members << member
337
- subject.ordered_members << member
338
- second_node = subject.ordered_member_proxies[1]
339
- expect(subject.ordered_member_proxies.delete_at(1)).to eq second_node
336
+ image.ordered_members << member
337
+ image.ordered_members << member
338
+ second_node = image.ordered_member_proxies[1]
339
+ expect(image.ordered_member_proxies.delete_at(1)).to eq second_node
340
340
  end
341
341
  context "when the node doesn't exist" do
342
342
  it "returns nil" do
343
- expect(subject.ordered_member_proxies.delete_at(0)).to eq nil
343
+ expect(image.ordered_member_proxies.delete_at(0)).to eq nil
344
344
  end
345
345
  end
346
346
  it "doesn't do anything if passed a bad value" do
347
347
  member = Member.new
348
- subject.ordered_member_proxies.append_target member
349
- subject.ordered_member_proxies.append_target member
350
- subject.ordered_member_proxies.append_target member
351
- subject.ordered_member_proxies.delete_at(3)
352
- subject.ordered_member_proxies.delete_at(nil)
353
- expect(subject.ordered_members).to eq [member, member, member]
348
+ image.ordered_member_proxies.append_target member
349
+ image.ordered_member_proxies.append_target member
350
+ image.ordered_member_proxies.append_target member
351
+ image.ordered_member_proxies.delete_at(3)
352
+ image.ordered_member_proxies.delete_at(nil)
353
+ expect(image.ordered_members).to eq [member, member, member]
354
354
  end
355
355
  it "can persist a deletion" do
356
356
  member = Member.new
357
- subject.ordered_member_proxies.append_target member
358
- subject.ordered_member_proxies.append_target member
359
- subject.ordered_member_proxies.append_target member
360
- expect(subject.ordered_members).to eq [member, member, member]
361
- subject.ordered_member_proxies.delete_at(1)
362
- subject.save
363
- subject.reload
364
- expect(subject.ordered_members).to eq [member, member]
357
+ image.ordered_member_proxies.append_target member
358
+ image.ordered_member_proxies.append_target member
359
+ image.ordered_member_proxies.append_target member
360
+ expect(image.ordered_members).to eq [member, member, member]
361
+ image.ordered_member_proxies.delete_at(1)
362
+ image.save
363
+ image.reload
364
+ expect(image.ordered_members).to eq [member, member]
365
365
  end
366
366
  end
367
367
  end