active-fedora 11.0.0.rc1 → 11.0.0.rc2
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/lib/active_fedora/railtie.rb +2 -2
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/associations_spec.rb +17 -18
- data/spec/integration/attached_files_spec.rb +4 -4
- data/spec/integration/attributes_spec.rb +12 -16
- data/spec/integration/autosave_association_spec.rb +5 -5
- data/spec/integration/base_spec.rb +2 -2
- data/spec/integration/collection_association_spec.rb +2 -5
- data/spec/integration/datastream_rdf_nested_attributes_spec.rb +23 -23
- data/spec/integration/date_time_properties_spec.rb +1 -2
- data/spec/integration/direct_container_spec.rb +8 -8
- data/spec/integration/directly_contains_one_association_spec.rb +11 -13
- data/spec/integration/fedora_solr_sync_spec.rb +2 -2
- data/spec/integration/file_fixity_spec.rb +6 -8
- data/spec/integration/file_spec.rb +9 -10
- data/spec/integration/has_many_associations_spec.rb +6 -8
- data/spec/integration/indirect_container_spec.rb +8 -9
- data/spec/integration/json_serialization_spec.rb +4 -4
- data/spec/integration/ntriples_datastream_spec.rb +74 -74
- data/spec/integration/om_datastream_spec.rb +13 -13
- data/spec/integration/rdf_nested_attributes_spec.rb +6 -6
- data/spec/integration/relation_delegation_spec.rb +8 -8
- data/spec/integration/relation_spec.rb +13 -16
- data/spec/integration/solr_hit_spec.rb +4 -4
- data/spec/integration/versionable_spec.rb +132 -132
- data/spec/unit/aggregation/list_source_spec.rb +37 -37
- data/spec/unit/aggregation/ordered_reader_spec.rb +4 -4
- data/spec/unit/association_hash_spec.rb +15 -15
- data/spec/unit/attached_files_spec.rb +19 -19
- data/spec/unit/attributes_spec.rb +25 -25
- data/spec/unit/base_active_model_spec.rb +8 -8
- data/spec/unit/base_extra_spec.rb +5 -4
- data/spec/unit/base_spec.rb +9 -9
- data/spec/unit/change_set_spec.rb +5 -5
- data/spec/unit/core_spec.rb +26 -26
- data/spec/unit/default_model_mapper_spec.rb +3 -3
- data/spec/unit/fedora_spec.rb +2 -2
- data/spec/unit/file_configurator_spec.rb +92 -92
- data/spec/unit/file_spec.rb +60 -60
- data/spec/unit/files_hash_spec.rb +7 -7
- data/spec/unit/has_and_belongs_to_many_association_spec.rb +12 -12
- data/spec/unit/has_many_association_spec.rb +2 -2
- data/spec/unit/indexers/global_indexer_spec.rb +6 -6
- data/spec/unit/indexing_service_spec.rb +5 -5
- data/spec/unit/indexing_spec.rb +4 -4
- data/spec/unit/loadable_from_json_spec.rb +4 -4
- data/spec/unit/model_classifier_spec.rb +4 -4
- data/spec/unit/nom_datastream_spec.rb +8 -8
- data/spec/unit/om_datastream_spec.rb +43 -43
- data/spec/unit/ordered_spec.rb +142 -142
- data/spec/unit/orders/list_node_spec.rb +20 -20
- data/spec/unit/orders/ordered_list_spec.rb +96 -96
- data/spec/unit/orders/reflection_spec.rb +3 -3
- data/spec/unit/pathing_spec.rb +4 -4
- data/spec/unit/persistence_spec.rb +28 -28
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +8 -8
- data/spec/unit/query_spec.rb +5 -5
- data/spec/unit/rdf/indexing_service_spec.rb +17 -17
- data/spec/unit/rdf_datastream_spec.rb +10 -10
- data/spec/unit/rdf_resource_datastream_spec.rb +37 -37
- data/spec/unit/rdfxml_datastream_spec.rb +14 -14
- data/spec/unit/readonly_spec.rb +5 -4
- data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +9 -9
- data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +9 -9
- data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +9 -9
- data/spec/unit/schema_indexing_strategy_spec.rb +5 -5
- data/spec/unit/serializers_spec.rb +3 -4
- data/spec/unit/solr_hit_spec.rb +9 -9
- data/spec/unit/sparql_insert_spec.rb +2 -2
- data/spec/unit/validations_spec.rb +9 -9
- data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +2 -1
- data/spec/unit/with_metadata/metadata_node_spec.rb +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b833ffd608a93150c266715fe4a7407b4123226
|
4
|
+
data.tar.gz: 3eb0722fd8dd81dba86b8de505859e464a321145
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6956d0ea72523e17d0ae7b856565f8abab7a20f9247e3fe6a410ec56c0227468a1aa242148cf10f91d6ca47279b798b04b203fb161a5b38b2ff0dd5e4879e310
|
7
|
+
data.tar.gz: c9202017657e945638899468958d79205fc7cbe44e41b5638347a3363a61cd24e23d4e0b81ad8781faa9f0a48e3da30804f5d8453c62d1d2cbaaca8dec762dab
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ActiveFedora
|
2
2
|
class Railtie < Rails::Railtie
|
3
|
-
config.app_middleware.insert_after
|
4
|
-
|
3
|
+
config.app_middleware.insert_after ::ActionDispatch::Callbacks,
|
4
|
+
ActiveFedora::LdpCache
|
5
5
|
|
6
6
|
initializer 'active_fedora.autoload', before: :set_autoload_paths do |app|
|
7
7
|
app.config.autoload_paths << 'app/models/datastreams'
|
@@ -17,7 +17,7 @@ describe ActiveFedora::Base do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
let(:person) { Person.create }
|
20
|
-
|
20
|
+
subject(:book) { Book.new(author: person) }
|
21
21
|
|
22
22
|
it "goes" do
|
23
23
|
book.save
|
@@ -524,18 +524,19 @@ describe ActiveFedora::Base do
|
|
524
524
|
end
|
525
525
|
|
526
526
|
describe "removing association" do
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
527
|
+
let(:p1) { Page.create }
|
528
|
+
let(:p2) { Page.create }
|
529
|
+
subject(:book) do
|
530
|
+
book = LibraryBook.create
|
531
|
+
book.pages << p1 << p2
|
532
|
+
book.save!
|
533
|
+
book
|
533
534
|
end
|
534
535
|
it "saves between the before and after hooks" do
|
535
|
-
expect(
|
536
|
-
expect(
|
537
|
-
expect(
|
538
|
-
|
536
|
+
expect(book).to receive(:before_count).with(1)
|
537
|
+
expect(book).to receive(:after_count).with(0)
|
538
|
+
expect(book).to receive(:say_hi).with(p2).twice
|
539
|
+
book.pages.delete(p2)
|
539
540
|
end
|
540
541
|
end
|
541
542
|
end
|
@@ -555,14 +556,12 @@ describe ActiveFedora::Base do
|
|
555
556
|
end
|
556
557
|
|
557
558
|
describe "removing association" do
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
@p2 = subject.pages.build
|
562
|
-
end
|
559
|
+
let(:p1) { book.pages.build }
|
560
|
+
let(:p2) { book.pages.build }
|
561
|
+
let(:book) { LibraryBook.new }
|
563
562
|
it "runs the hooks" do
|
564
|
-
expect(
|
565
|
-
|
563
|
+
expect(book).to receive(:say_hi).with(p2)
|
564
|
+
book.pages.delete(p2)
|
566
565
|
end
|
567
566
|
end
|
568
567
|
end
|
@@ -65,14 +65,14 @@ describe ActiveFedora::AttachedFiles do
|
|
65
65
|
let(:obj) { ActiveFedora::Base.new }
|
66
66
|
|
67
67
|
describe ".attached_files" do
|
68
|
-
subject { obj.attached_files }
|
68
|
+
subject(:attached_files) { obj.attached_files }
|
69
69
|
it "returns a Hash of datastreams from fedora" do
|
70
|
-
expect(
|
71
|
-
expect(
|
70
|
+
expect(attached_files).to be_a_kind_of(ActiveFedora::FilesHash)
|
71
|
+
expect(attached_files).to be_empty
|
72
72
|
end
|
73
73
|
|
74
74
|
it "initializes the datastream pointers with @new_object=false" do
|
75
|
-
|
75
|
+
attached_files.each_value do |ds|
|
76
76
|
expect(ds).to_not be_new
|
77
77
|
end
|
78
78
|
end
|
@@ -20,9 +20,9 @@ describe "delegating attributes" do
|
|
20
20
|
|
21
21
|
describe "#index_config" do
|
22
22
|
context "on a class with properties" do
|
23
|
-
subject { RdfObject.index_config }
|
23
|
+
subject(:index_config) { RdfObject.index_config }
|
24
24
|
it "has configuration" do
|
25
|
-
expect(
|
25
|
+
expect(index_config[:resource_type].behaviors).to eq [:stored_searchable, :facetable]
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -36,42 +36,38 @@ describe "delegating attributes" do
|
|
36
36
|
Object.send(:remove_const, :InheritedObject)
|
37
37
|
end
|
38
38
|
|
39
|
-
subject { InheritedObject.index_config }
|
39
|
+
subject(:index_config) { InheritedObject.index_config }
|
40
40
|
|
41
41
|
it "has configuration" do
|
42
|
-
expect(
|
42
|
+
expect(index_config[:resource_type].behaviors).to eq [:stored_searchable, :facetable]
|
43
43
|
end
|
44
44
|
|
45
45
|
context "when the inherited config is modifed" do
|
46
46
|
before do
|
47
47
|
InheritedObject.index_config[:resource_type].behaviors.delete(:stored_searchable)
|
48
48
|
end
|
49
|
-
subject { RdfObject.index_config }
|
49
|
+
subject(:index_config) { RdfObject.index_config }
|
50
50
|
|
51
51
|
it "the parent config is unchanged" do
|
52
|
-
expect(
|
52
|
+
expect(index_config[:resource_type].behaviors).to eq [:stored_searchable, :facetable]
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "previous_changes" do
|
59
|
-
subject
|
60
|
-
TitledObject.create(title: ["Hydra for Dummies"])
|
61
|
-
end
|
59
|
+
subject(:titled_object) { TitledObject.create(title: ["Hydra for Dummies"]) }
|
62
60
|
it "keeps a list of changes after a successful save" do
|
63
|
-
expect(
|
64
|
-
expect(
|
61
|
+
expect(titled_object.previous_changes).to_not be_empty
|
62
|
+
expect(titled_object.previous_changes.keys).to include("title")
|
65
63
|
end
|
66
64
|
end
|
67
65
|
|
68
66
|
describe "#changes" do
|
69
|
-
|
70
|
-
TitledObject.create(title: ["Hydra for Dummies"])
|
71
|
-
end
|
67
|
+
let(:titled_object) { TitledObject.create(title: ["Hydra for Dummies"]) }
|
72
68
|
it "cleans out changes" do
|
73
|
-
expect(
|
74
|
-
expect(
|
69
|
+
expect(titled_object).to_not be_title_changed
|
70
|
+
expect(titled_object.changes).to be_empty
|
75
71
|
end
|
76
72
|
end
|
77
73
|
end
|
@@ -9,16 +9,16 @@ describe ActiveFedora::Base do
|
|
9
9
|
Object.send(:remove_const, :MockAFBaseRelationship)
|
10
10
|
end
|
11
11
|
|
12
|
-
subject { MockAFBaseRelationship.new }
|
12
|
+
subject(:relationship) { MockAFBaseRelationship.new }
|
13
13
|
|
14
14
|
context '#changed_for_autosave?' do
|
15
15
|
before(:each) do
|
16
|
-
expect(
|
17
|
-
expect(
|
18
|
-
expect(
|
16
|
+
expect(relationship).to receive(:new_record?).and_return(false)
|
17
|
+
expect(relationship).to receive(:changed?).and_return(false)
|
18
|
+
expect(relationship).to receive(:marked_for_destruction?).and_return(false)
|
19
19
|
end
|
20
20
|
it {
|
21
|
-
expect {
|
21
|
+
expect { relationship.changed_for_autosave? }.to_not raise_error
|
22
22
|
}
|
23
23
|
end
|
24
24
|
end
|
@@ -159,7 +159,7 @@ describe ActiveFedora::Base do
|
|
159
159
|
end
|
160
160
|
|
161
161
|
describe "overriding resource_class_factory" do
|
162
|
-
subject { TestBase.new }
|
162
|
+
subject(:test_base) { TestBase.new }
|
163
163
|
before do
|
164
164
|
class TestResource < ActiveTriples::Resource
|
165
165
|
end
|
@@ -174,7 +174,7 @@ describe ActiveFedora::Base do
|
|
174
174
|
Object.send(:remove_const, :TestBase)
|
175
175
|
end
|
176
176
|
it "uses that factory for #resource" do
|
177
|
-
expect(
|
177
|
+
expect(test_base.resource.class.ancestors).to include TestResource
|
178
178
|
end
|
179
179
|
end
|
180
180
|
end
|
@@ -135,10 +135,9 @@ describe ActiveFedora::Base do
|
|
135
135
|
end
|
136
136
|
|
137
137
|
let(:instance) { SpecContainer.new }
|
138
|
-
subject { instance.items }
|
139
138
|
|
140
139
|
it "raises an error" do
|
141
|
-
expect {
|
140
|
+
expect { instance.items }.to raise_error "No :inverse_of or :predicate attribute was set or could be inferred for has_many :items on SpecContainer"
|
142
141
|
end
|
143
142
|
end
|
144
143
|
|
@@ -161,9 +160,7 @@ describe ActiveFedora::Base do
|
|
161
160
|
let(:instance) { Foo::Container.new }
|
162
161
|
subject { instance.items }
|
163
162
|
|
164
|
-
it
|
165
|
-
expect(subject).to eq []
|
166
|
-
end
|
163
|
+
it { is_expected.to eq [] }
|
167
164
|
end
|
168
165
|
end
|
169
166
|
end
|
@@ -60,7 +60,7 @@ describe "Nesting attribute behavior of RDFDatastream" do
|
|
60
60
|
Object.send(:remove_const, :ComplexRDFDatastream)
|
61
61
|
Object.send(:remove_const, :DummyMADS)
|
62
62
|
end
|
63
|
-
subject { ComplexRDFDatastream.new }
|
63
|
+
subject(:complex_datastream) { ComplexRDFDatastream.new }
|
64
64
|
let(:params) do
|
65
65
|
{ myResource:
|
66
66
|
{
|
@@ -95,15 +95,15 @@ describe "Nesting attribute behavior of RDFDatastream" do
|
|
95
95
|
end
|
96
96
|
|
97
97
|
describe "on lists" do
|
98
|
-
subject { ComplexRDFDatastream::PersonalName.new(nil) }
|
98
|
+
subject(:personal_name) { ComplexRDFDatastream::PersonalName.new(nil) }
|
99
99
|
it "accepts a hash" do
|
100
|
-
|
101
|
-
expect(
|
102
|
-
expect(
|
100
|
+
personal_name.elementList_attributes = [{ topicElement_attributes: { '0' => { elementValue: "Quantum Behavior" }, '1' => { elementValue: "Wave Function" } } }]
|
101
|
+
expect(personal_name.elementList.first[0].elementValue).to eq ["Quantum Behavior"]
|
102
|
+
expect(personal_name.elementList.first[1].elementValue).to eq ["Wave Function"]
|
103
103
|
end
|
104
104
|
it "accepts an array" do
|
105
|
-
|
106
|
-
element_values =
|
105
|
+
personal_name.elementList_attributes = [{ topicElement_attributes: [{ elementValue: "Quantum Behavior" }, { elementValue: "Wave Function" }] }]
|
106
|
+
element_values = personal_name.elementList.first.map(&:elementValue)
|
107
107
|
expect(element_values).to contain_exactly ["Quantum Behavior"], ["Wave Function"]
|
108
108
|
end
|
109
109
|
end
|
@@ -111,30 +111,30 @@ describe "Nesting attribute behavior of RDFDatastream" do
|
|
111
111
|
context "from nested objects" do
|
112
112
|
before do
|
113
113
|
# Replace the graph's contents with the Hash
|
114
|
-
|
114
|
+
complex_datastream.attributes = params[:myResource]
|
115
115
|
end
|
116
116
|
|
117
117
|
it 'has attributes' do
|
118
|
-
element_values =
|
118
|
+
element_values = complex_datastream.topic.map { |x| x.elementList.first[0].elementValue }
|
119
119
|
expect(element_values).to contain_exactly ["Cosmology"], ["Quantum Behavior"]
|
120
|
-
expect(
|
121
|
-
expect(
|
120
|
+
expect(complex_datastream.personalName.first.elementList.first.fullNameElement).to contain_exactly "Jefferson, Thomas"
|
121
|
+
expect(complex_datastream.personalName.first.elementList.first.dateNameElement).to contain_exactly "1743-1826"
|
122
122
|
end
|
123
123
|
|
124
124
|
it 'builds nodes with ids' do
|
125
|
-
element_list_elements =
|
125
|
+
element_list_elements = complex_datastream.topic.flat_map { |y| y.elementList.first[0].rdf_subject }
|
126
126
|
expect(element_list_elements).to include 'http://library.ucsd.edu/ark:/20775/bb3333333x'
|
127
|
-
expect(
|
127
|
+
expect(complex_datastream.personalName.first.rdf_subject).to eq 'http://library.ucsd.edu/ark:20775/jefferson'
|
128
128
|
end
|
129
129
|
|
130
130
|
it 'fails when writing to a non-predicate' do
|
131
131
|
attributes = { topic_attributes: { '0' => { elementList_attributes: [{ topicElement_attributes: [{ fake_predicate: "Cosmology" }] }] } } }
|
132
|
-
expect {
|
132
|
+
expect { complex_datastream.attributes = attributes }.to raise_error ArgumentError
|
133
133
|
end
|
134
134
|
|
135
135
|
it 'fails when writing to a non-predicate with a setter method' do
|
136
136
|
attributes = { topic_attributes: { '0' => { elementList_attributes: [{ topicElement_attributes: [{ name: "Cosmology" }] }] } } }
|
137
|
-
expect {
|
137
|
+
expect { complex_datastream.attributes = attributes }.to raise_error ArgumentError
|
138
138
|
end
|
139
139
|
end
|
140
140
|
end
|
@@ -154,26 +154,26 @@ describe "Nesting attribute behavior of RDFDatastream" do
|
|
154
154
|
after(:each) do
|
155
155
|
Object.send(:remove_const, :SpecDatastream)
|
156
156
|
end
|
157
|
-
subject { SpecDatastream.new }
|
157
|
+
subject(:spec_datastream) { SpecDatastream.new }
|
158
158
|
before do
|
159
|
-
|
159
|
+
spec_datastream.attributes = { parts_attributes: [
|
160
160
|
{ label: 'Alternator' },
|
161
161
|
{ label: 'Distributor' },
|
162
162
|
{ label: 'Transmission' },
|
163
163
|
{ label: 'Fuel Filter' }
|
164
164
|
] }
|
165
165
|
end
|
166
|
-
let(:replace_object_id) {
|
167
|
-
let(:remove_object_id) {
|
166
|
+
let(:replace_object_id) { spec_datastream.parts.find { |x| x.label == ['Distributor'] }.rdf_subject.to_s }
|
167
|
+
let(:remove_object_id) { spec_datastream.parts.find { |x| x.label == ['Fuel Filter'] }.rdf_subject.to_s }
|
168
168
|
|
169
169
|
it "updates nested objects" do
|
170
|
-
|
170
|
+
spec_datastream.parts_attributes = [{ id: replace_object_id, label: "Universal Joint" }, { label: "Oil Pump" }, { id: remove_object_id, _destroy: '1', label: "bar1 uno" }]
|
171
171
|
|
172
|
-
expect(
|
172
|
+
expect(spec_datastream.parts.map { |p| p.label.first }).to contain_exactly 'Alternator', 'Universal Joint', 'Transmission', 'Oil Pump'
|
173
173
|
end
|
174
174
|
it "create a new object when the id is provided" do
|
175
|
-
|
176
|
-
expect(
|
175
|
+
spec_datastream.parts_attributes = [{ id: 'http://example.com/part#1', label: "Universal Joint" }]
|
176
|
+
expect(spec_datastream.parts.map(&:rdf_subject)).to include RDF::URI('http://example.com/part#1')
|
177
177
|
end
|
178
178
|
end
|
179
179
|
end
|
@@ -34,9 +34,8 @@ describe ActiveFedora::Base do
|
|
34
34
|
describe 'serializing' do
|
35
35
|
let(:object) { Foo.new(date: [date]) }
|
36
36
|
let(:triple) { object.resource.query(predicate: ::RDF::Vocab::DC.date).to_a.first }
|
37
|
-
subject { triple.to_s }
|
38
37
|
it 'time zone must have semicolin to be a cannonical XMLSchema#dateTime' do
|
39
|
-
expect(
|
38
|
+
expect(triple.to_s).to match(/\+01:00/)
|
40
39
|
end
|
41
40
|
end
|
42
41
|
end
|
@@ -32,16 +32,16 @@ describe "Direct containers" do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
describe "#first" do
|
35
|
-
subject { reloaded.files.first }
|
35
|
+
subject(:first_file) { reloaded.files.first }
|
36
36
|
it "has the content" do
|
37
|
-
expect(
|
37
|
+
expect(first_file.content).to eq 'HMMM'
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
describe "#to_a" do
|
42
|
-
subject { reloaded.files }
|
42
|
+
subject(:files) { reloaded.files }
|
43
43
|
it "has the content" do
|
44
|
-
expect(
|
44
|
+
expect(files.to_a).to eq [file]
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -102,9 +102,9 @@ describe "Direct containers" do
|
|
102
102
|
end
|
103
103
|
|
104
104
|
describe "#first" do
|
105
|
-
subject { reloaded.files.first }
|
105
|
+
subject(:first_file) { reloaded.files.first }
|
106
106
|
it "has the content" do
|
107
|
-
expect(
|
107
|
+
expect(first_file.content).to eq 'HMMM'
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
@@ -140,9 +140,9 @@ describe "Direct containers" do
|
|
140
140
|
end
|
141
141
|
|
142
142
|
describe "#first" do
|
143
|
-
subject { reloaded.files.first }
|
143
|
+
subject(:first_file) { reloaded.files.first }
|
144
144
|
it "has the content" do
|
145
|
-
expect(
|
145
|
+
expect(first_file.content).to eq 'HMMM'
|
146
146
|
end
|
147
147
|
end
|
148
148
|
end
|
@@ -36,15 +36,15 @@ describe ActiveFedora::Base do
|
|
36
36
|
primary_file.content = "I'm in a container all alone!"
|
37
37
|
page_image.save!
|
38
38
|
end
|
39
|
-
subject { reloaded_page_image.primary_file }
|
39
|
+
subject(:reloaded_file) { reloaded_page_image.primary_file }
|
40
40
|
it "initializes an object within the container" do
|
41
|
-
expect(
|
42
|
-
expect(
|
41
|
+
expect(reloaded_file.content).to eq("I'm in a container all alone!")
|
42
|
+
expect(reloaded_file.metadata_node.type).to include(::RDF::URI.new("http://example.com/primaryFile"))
|
43
43
|
end
|
44
44
|
it "relies on info from the :through association, including class_name" do
|
45
45
|
expect(page_image.files).to include(primary_file)
|
46
46
|
expect(primary_file.uri.to_s).to include("/files/")
|
47
|
-
expect(
|
47
|
+
expect(reloaded_file.class).to eq FileWithMetadata
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -61,9 +61,7 @@ describe ActiveFedora::Base do
|
|
61
61
|
primary_file.content = "I am too"
|
62
62
|
page_image.save!
|
63
63
|
end
|
64
|
-
it
|
65
|
-
expect(subject).to eq primary_file
|
66
|
-
end
|
64
|
+
it { is_expected.to eq primary_file }
|
67
65
|
end
|
68
66
|
context "if class_name is set" do
|
69
67
|
before do
|
@@ -71,10 +69,10 @@ describe ActiveFedora::Base do
|
|
71
69
|
alternative_file.content = "I am too"
|
72
70
|
page_image.save!
|
73
71
|
end
|
74
|
-
subject { reloaded_page_image.alternative_file }
|
72
|
+
subject(:reloaded_file) { reloaded_page_image.alternative_file }
|
75
73
|
it "uses the specified class to load objects" do
|
76
|
-
expect(
|
77
|
-
expect(
|
74
|
+
expect(reloaded_file).to eq alternative_file
|
75
|
+
expect(reloaded_file).to be_instance_of AlternativeFileWithMetadata
|
78
76
|
end
|
79
77
|
end
|
80
78
|
end
|
@@ -85,13 +83,13 @@ describe ActiveFedora::Base do
|
|
85
83
|
primary_file.content = "I am too"
|
86
84
|
page_image.save!
|
87
85
|
end
|
88
|
-
subject { reloaded_page_image.files }
|
86
|
+
subject(:reloaded_file) { reloaded_page_image.files }
|
89
87
|
it "replaces existing record without disturbing the other contents of the container" do
|
90
88
|
replacement_file = page_image.primary_file = FileWithMetadata.new
|
91
89
|
replacement_file.content = "I'm a replacement"
|
92
90
|
page_image.save
|
93
|
-
expect(
|
94
|
-
expect(
|
91
|
+
expect(reloaded_file).to_not include(primary_file)
|
92
|
+
expect(reloaded_file).to contain_exactly(a_file, replacement_file)
|
95
93
|
expect(reloaded_page_image.primary_file).to eq(replacement_file)
|
96
94
|
end
|
97
95
|
end
|