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.
- 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
@@ -38,25 +38,25 @@ describe "Nesting attribute behavior of RDF resources" do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
context "with an AT resource as a property" do
|
41
|
-
subject { ComplexResource.new }
|
41
|
+
subject(:complex_resource) { ComplexResource.new }
|
42
42
|
|
43
43
|
let(:params) { [{ subject: 'Foo' }, { subject: 'Bar' }] }
|
44
44
|
|
45
45
|
before do
|
46
46
|
ComplexResource.accepts_nested_attributes_for(*args)
|
47
|
-
|
47
|
+
complex_resource.topic_attributes = params
|
48
48
|
end
|
49
49
|
|
50
50
|
context "when no options are set" do
|
51
51
|
let(:args) { [:topic] }
|
52
52
|
|
53
53
|
it "sets the attributes" do
|
54
|
-
expect(
|
55
|
-
expect(
|
54
|
+
expect(complex_resource.topic.size).to eq 2
|
55
|
+
expect(complex_resource.topic.map(&:subject)).to contain_exactly ['Foo'], ['Bar']
|
56
56
|
end
|
57
57
|
|
58
58
|
it "marks the attributes as changed" do
|
59
|
-
expect(
|
59
|
+
expect(complex_resource.changed_attributes.keys).to eq ["topic"]
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -66,7 +66,7 @@ describe "Nesting attribute behavior of RDF resources" do
|
|
66
66
|
let(:params) { [{ subject: 'Foo' }, { subject: 'Bar' }] }
|
67
67
|
|
68
68
|
it "does not add terms for which the proc is true" do
|
69
|
-
expect(
|
69
|
+
expect(complex_resource.topic.map(&:subject)).to eq [['Foo']]
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -25,30 +25,30 @@ describe ActiveFedora::Base do
|
|
25
25
|
let!(:instance2) { TestClass.create!(foo: ['Alpha'], bar: ['Peanuts']) }
|
26
26
|
let!(:instance3) { TestClass.create!(foo: ['Sigma'], bar: ['Peanuts']) }
|
27
27
|
|
28
|
-
subject { TestClass.where(bar: 'Peanuts') }
|
28
|
+
subject(:peanuts) { TestClass.where(bar: 'Peanuts') }
|
29
29
|
|
30
30
|
it "maps" do
|
31
|
-
expect(
|
31
|
+
expect(peanuts.map(&:id)).to contain_exactly instance2.id, instance3.id
|
32
32
|
end
|
33
33
|
|
34
34
|
it "collects" do
|
35
|
-
expect(
|
35
|
+
expect(peanuts.collect(&:id)).to contain_exactly instance2.id, instance3.id
|
36
36
|
end
|
37
37
|
|
38
38
|
it "has each" do
|
39
39
|
t = double
|
40
40
|
expect(t).to receive(:foo).twice
|
41
|
-
|
41
|
+
peanuts.each { t.foo }
|
42
42
|
end
|
43
43
|
|
44
44
|
it "has all?" do
|
45
|
-
expect(
|
46
|
-
expect(
|
45
|
+
expect(peanuts.all? { |t| t.foo == ['Alpha'] }).to be false
|
46
|
+
expect(peanuts.all? { |t| t.bar == ['Peanuts'] }).to be true
|
47
47
|
end
|
48
48
|
|
49
49
|
it "has include?" do
|
50
|
-
expect(
|
51
|
-
expect(
|
50
|
+
expect(peanuts.include?(instance1)).to be false
|
51
|
+
expect(peanuts.include?(instance2)).to be true
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -15,15 +15,13 @@ describe ActiveFedora::Base do
|
|
15
15
|
Object.send(:remove_const, :Book)
|
16
16
|
end
|
17
17
|
|
18
|
-
subject { Library.all }
|
18
|
+
subject(:libraries) { Library.all }
|
19
19
|
|
20
20
|
it "is a relation" do
|
21
|
-
expect(
|
21
|
+
expect(libraries.class).to be ActiveFedora::Relation
|
22
22
|
end
|
23
23
|
|
24
|
-
it
|
25
|
-
expect(subject).to respond_to(:each_with_index)
|
26
|
-
end
|
24
|
+
it { is_expected.to respond_to(:each_with_index) }
|
27
25
|
|
28
26
|
context "when some records exist" do
|
29
27
|
before do
|
@@ -34,43 +32,42 @@ describe ActiveFedora::Base do
|
|
34
32
|
|
35
33
|
describe "is cached" do
|
36
34
|
before do
|
37
|
-
|
35
|
+
libraries.to_a # trigger initial load
|
38
36
|
end
|
39
37
|
|
40
|
-
it
|
41
|
-
|
42
|
-
end
|
38
|
+
it { is_expected.to be_loaded }
|
39
|
+
|
43
40
|
it "does not reload" do
|
44
41
|
expect_any_instance_of(ActiveFedora::Relation).to_not receive :find_each
|
45
|
-
|
42
|
+
libraries[0]
|
46
43
|
end
|
47
44
|
end
|
48
45
|
|
49
46
|
describe "#find" do
|
50
47
|
it "finds one of them" do
|
51
|
-
expect(
|
48
|
+
expect(libraries.find(library1.id)).to eq library1
|
52
49
|
end
|
53
50
|
it "finds with a block" do
|
54
|
-
expect(
|
51
|
+
expect(libraries.find { |l| l.id == library1.id }).to eq library1
|
55
52
|
end
|
56
53
|
end
|
57
54
|
|
58
55
|
describe "#select" do
|
59
56
|
it "finds with a block" do
|
60
|
-
expect(
|
57
|
+
expect(libraries.select { |l| l.id == library1.id }).to eq [library1]
|
61
58
|
end
|
62
59
|
end
|
63
60
|
|
64
61
|
context "unpermitted methods" do
|
65
62
|
it "excludes them" do
|
66
|
-
expect {
|
63
|
+
expect { libraries.sort! }.to raise_error NoMethodError
|
67
64
|
end
|
68
65
|
end
|
69
66
|
|
70
67
|
context "when limit is applied" do
|
71
|
-
subject { Library.create books: [Book.create, Book.create] }
|
68
|
+
subject(:libraries) { Library.create books: [Book.create, Book.create] }
|
72
69
|
it "limits the number of books" do
|
73
|
-
expect(
|
70
|
+
expect(libraries.books.limit(1).size).to eq 1
|
74
71
|
end
|
75
72
|
end
|
76
73
|
end
|
@@ -19,14 +19,14 @@ describe ActiveFedora::SolrHit do
|
|
19
19
|
) }
|
20
20
|
|
21
21
|
let(:doc) { obj.to_solr }
|
22
|
-
|
22
|
+
subject(:solr_hit) { described_class.new(doc) }
|
23
23
|
|
24
24
|
describe "#reify" do
|
25
|
-
|
25
|
+
let(:solr_reified) { solr_hit.reify }
|
26
26
|
|
27
27
|
it "finds the document in solr" do
|
28
|
-
expect(
|
29
|
-
expect(
|
28
|
+
expect(solr_reified).to be_instance_of Foo
|
29
|
+
expect(solr_reified.title).to eq 'My Title'
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -12,45 +12,45 @@ describe ActiveFedora::Versionable do
|
|
12
12
|
Object.send(:remove_const, :WithVersions)
|
13
13
|
end
|
14
14
|
|
15
|
-
subject { WithVersions.new }
|
15
|
+
subject(:object) { WithVersions.new }
|
16
16
|
|
17
17
|
let(:current_year) { DateTime.now.year.to_s }
|
18
18
|
|
19
19
|
context "saved with no versions" do
|
20
20
|
it "does not have versions" do
|
21
|
-
|
22
|
-
expect(
|
21
|
+
object.update(title: ["Greetings Earthlings"])
|
22
|
+
expect(object).not_to have_versions
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
context "saved with versions" do
|
27
27
|
it "has versions" do
|
28
|
-
|
29
|
-
|
30
|
-
expect(
|
28
|
+
object.update(title: ["Greetings Earthlings"])
|
29
|
+
object.create_version
|
30
|
+
expect(object).to have_versions
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
34
|
describe 'sorting versions' do
|
35
35
|
before do
|
36
|
-
allow(
|
36
|
+
allow(graph).to receive(:fedora_versions) { versions }
|
37
37
|
end
|
38
38
|
|
39
39
|
let(:version1) { double('version1', uri: 'http://localhost:8983/fedora/rest/test/84/61/63/98/84616398-f63a-4572-ba01-0689339e4fcb/fcr:versions/87a0a8c317f1e711aa993d-e1d2-4a65-93ee-3a12fc9541ab', label: 'version1', created: '2015-04-02T19:54:45.962Z') }
|
40
40
|
let(:version2) { double('version2', uri: 'http://localhost:8983/fedora/rest/test/84/61/63/98/84616398-f63a-4572-ba01-0689339e4fcb/fcr:versions/87a0a8c317f1e790373a67-c9ee-447d-b740-4faa882b1a1f', label: 'version2', created: '2015-04-02T19:54:45.96Z') }
|
41
41
|
let(:versions) { [version1, version2] }
|
42
42
|
|
43
|
-
subject { ActiveFedora::VersionsGraph.new }
|
43
|
+
subject(:graph) { ActiveFedora::VersionsGraph.new }
|
44
44
|
|
45
45
|
it 'sorts by DateTime' do
|
46
|
-
expect(
|
46
|
+
expect(graph.first).to eq version2
|
47
47
|
end
|
48
48
|
|
49
49
|
context 'with an unparseable created date' do
|
50
50
|
let(:version2) { double('version2', uri: 'http://localhost:8983/fedora/rest/test/84/61/63/98/84616398-f63a-4572-ba01-0689339e4fcb/fcr:versions/87a0a8c317f1e790373a67-c9ee-447d-b740-4faa882b1a1f', label: 'version2', created: '') }
|
51
51
|
|
52
52
|
it 'raises an exception' do
|
53
|
-
expect {
|
53
|
+
expect { graph.first }.to raise_error(ActiveFedora::VersionLacksCreateDate)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -63,62 +63,62 @@ describe ActiveFedora::Versionable do
|
|
63
63
|
let(:version2) { double('version2', uri: 'http://localhost:8983/fedora/rest/test/84/61/63/98/84616398-f63a-4572-ba01-0689339e4fcb/fcr:versions/87a0a8c317f1e790373a67-c9ee-447d-b740-4faa882b1a1f', label: 'version2') }
|
64
64
|
|
65
65
|
it 'raises an exception' do
|
66
|
-
expect {
|
66
|
+
expect { graph.first }.to raise_error(ActiveFedora::VersionLacksCreateDate)
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
71
|
context "after saving" do
|
72
72
|
before do
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
object.title = ["Greetings Earthlings"]
|
74
|
+
object.save
|
75
|
+
object.create_version
|
76
76
|
end
|
77
77
|
|
78
78
|
it { is_expected.to have_versions }
|
79
79
|
|
80
80
|
it "has one version" do
|
81
|
-
expect(
|
82
|
-
expect(
|
83
|
-
expect(
|
84
|
-
expect(
|
81
|
+
expect(object.versions).to be_kind_of ActiveFedora::VersionsGraph
|
82
|
+
expect(object.versions.all.first).to be_kind_of ActiveFedora::VersionsGraph::ResourceVersion
|
83
|
+
expect(object.versions.all.first.label).to eql "version1"
|
84
|
+
expect(object.versions.all.first.created).to start_with current_year
|
85
85
|
end
|
86
86
|
|
87
87
|
context "two times" do
|
88
88
|
before do
|
89
|
-
|
90
|
-
|
91
|
-
|
89
|
+
object.title = ["Surrender and prepare to be boarded"]
|
90
|
+
object.save
|
91
|
+
object.create_version
|
92
92
|
end
|
93
93
|
|
94
94
|
it "has two versions" do
|
95
|
-
expect(
|
96
|
-
|
97
|
-
expect(
|
98
|
-
expect(
|
95
|
+
expect(object.versions.all.size).to eq 2
|
96
|
+
object.versions.all.each_index do |index|
|
97
|
+
expect(object.versions.all[index].label).to end_with "version" + (index + 1).to_s
|
98
|
+
expect(object.versions.all[index].created).to start_with current_year
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
102
|
context "then restoring" do
|
103
103
|
let(:first_version) { "version1" }
|
104
104
|
before do
|
105
|
-
|
105
|
+
object.restore_version(first_version)
|
106
106
|
end
|
107
107
|
|
108
108
|
it "will return to the first version's values" do
|
109
|
-
expect(
|
109
|
+
expect(object.title).to eq(["Greetings Earthlings"])
|
110
110
|
end
|
111
111
|
|
112
112
|
context "and creating additional versions" do
|
113
113
|
before do
|
114
|
-
|
115
|
-
|
116
|
-
|
114
|
+
object.title = ["Now, surrender and prepare to be boarded"]
|
115
|
+
object.save!
|
116
|
+
object.create_version
|
117
117
|
end
|
118
118
|
|
119
119
|
it "has three versions" do
|
120
|
-
expect(
|
121
|
-
expect(
|
120
|
+
expect(object.versions.all.size).to eq 3
|
121
|
+
expect(object.title).to eq(["Now, surrender and prepare to be boarded"])
|
122
122
|
end
|
123
123
|
end
|
124
124
|
end
|
@@ -146,7 +146,7 @@ describe ActiveFedora::Versionable do
|
|
146
146
|
MockAFBase.create
|
147
147
|
end
|
148
148
|
|
149
|
-
subject { test_object.descMetadata }
|
149
|
+
subject(:desc_metadata) { test_object.descMetadata }
|
150
150
|
|
151
151
|
let(:current_year) { DateTime.now.year.to_s }
|
152
152
|
|
@@ -155,96 +155,96 @@ describe ActiveFedora::Versionable do
|
|
155
155
|
|
156
156
|
context "before creating the file" do
|
157
157
|
it "does not have versions" do
|
158
|
-
expect(
|
158
|
+
expect(desc_metadata.versions).to be_empty
|
159
159
|
end
|
160
160
|
it "does not have a title" do
|
161
|
-
expect(
|
161
|
+
expect(desc_metadata.title).to be_empty
|
162
162
|
end
|
163
163
|
end
|
164
164
|
|
165
165
|
context "after creating the file" do
|
166
166
|
before do
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
@original_size =
|
167
|
+
desc_metadata.title = "Greetings Earthlings"
|
168
|
+
desc_metadata.save
|
169
|
+
desc_metadata.create_version
|
170
|
+
@original_size = desc_metadata.size
|
171
171
|
end
|
172
172
|
|
173
173
|
it "links to versions endpoint" do
|
174
|
-
expect(
|
174
|
+
expect(desc_metadata.metadata.ldp_source.graph.query(predicate: ::RDF::Vocab::Fcrepo4.hasVersions).objects).to_not be_empty
|
175
175
|
end
|
176
176
|
|
177
177
|
it "has one version" do
|
178
|
-
expect(
|
178
|
+
expect(desc_metadata.versions.first.label).to eql "version1"
|
179
179
|
end
|
180
180
|
|
181
181
|
it "has a title" do
|
182
|
-
expect(
|
182
|
+
expect(desc_metadata.title).to eq(["Greetings Earthlings"])
|
183
183
|
end
|
184
184
|
|
185
185
|
it "has a size" do
|
186
|
-
expect(
|
186
|
+
expect(desc_metadata.size).to_not be_nil
|
187
187
|
end
|
188
188
|
|
189
189
|
context "two times" do
|
190
190
|
before do
|
191
|
-
|
192
|
-
|
193
|
-
|
191
|
+
desc_metadata.title = "Surrender and prepare to be boarded"
|
192
|
+
desc_metadata.save
|
193
|
+
desc_metadata.create_version
|
194
194
|
end
|
195
195
|
|
196
196
|
it "has two versions" do
|
197
|
-
expect(
|
198
|
-
|
199
|
-
expect(
|
200
|
-
expect(
|
197
|
+
expect(desc_metadata.versions.all.size).to eq 2
|
198
|
+
desc_metadata.versions.all.each_index do |index|
|
199
|
+
expect(desc_metadata.versions.all[index].label).to end_with "version" + (index + 1).to_s
|
200
|
+
expect(desc_metadata.versions.all[index].created).to start_with current_year
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
204
204
|
it "has the new title" do
|
205
|
-
expect(
|
205
|
+
expect(desc_metadata.title).to eq(["Surrender and prepare to be boarded"])
|
206
206
|
end
|
207
207
|
|
208
208
|
it "has a new size" do
|
209
|
-
expect(
|
210
|
-
expect(
|
209
|
+
expect(desc_metadata.size).to_not be_nil
|
210
|
+
expect(desc_metadata.size).to_not eq(@original_size)
|
211
211
|
end
|
212
212
|
|
213
213
|
context "then restoring" do
|
214
214
|
let(:first_version) { "version1" }
|
215
215
|
before do
|
216
|
-
|
216
|
+
desc_metadata.restore_version(first_version)
|
217
217
|
end
|
218
218
|
|
219
219
|
it "has two unique versions" do
|
220
|
-
expect(
|
220
|
+
expect(desc_metadata.versions.all.size).to eq 2
|
221
221
|
end
|
222
222
|
|
223
223
|
it "loads the restored file's content" do
|
224
|
-
expect(
|
224
|
+
expect(desc_metadata.title).to eq(["Greetings Earthlings"])
|
225
225
|
end
|
226
226
|
|
227
227
|
it "is the same size as the original file" do
|
228
|
-
expect(
|
228
|
+
expect(desc_metadata.size).to eq @original_size
|
229
229
|
end
|
230
230
|
|
231
231
|
context "and creating additional versions" do
|
232
232
|
before do
|
233
|
-
|
234
|
-
|
235
|
-
|
233
|
+
desc_metadata.title = "Now, surrender and prepare to be boarded"
|
234
|
+
desc_metadata.save
|
235
|
+
desc_metadata.create_version
|
236
236
|
end
|
237
237
|
|
238
238
|
it "has three unique versions" do
|
239
|
-
expect(
|
239
|
+
expect(desc_metadata.versions.all.size).to eq 3
|
240
240
|
end
|
241
241
|
|
242
242
|
it "has a new title" do
|
243
|
-
expect(
|
243
|
+
expect(desc_metadata.title).to eq(["Now, surrender and prepare to be boarded"])
|
244
244
|
end
|
245
245
|
|
246
246
|
it "has a new size" do
|
247
|
-
expect(
|
247
|
+
expect(desc_metadata.size).to_not eq @original_size
|
248
248
|
end
|
249
249
|
end
|
250
250
|
end
|
@@ -272,7 +272,7 @@ describe ActiveFedora::Versionable do
|
|
272
272
|
Object.send(:remove_const, :VersionableDatastream)
|
273
273
|
end
|
274
274
|
|
275
|
-
subject { test_object.descMetadata }
|
275
|
+
subject(:desc_metadata) { test_object.descMetadata }
|
276
276
|
|
277
277
|
let(:current_year) { DateTime.now.year.to_s }
|
278
278
|
|
@@ -281,97 +281,97 @@ describe ActiveFedora::Versionable do
|
|
281
281
|
|
282
282
|
context "before creating the file" do
|
283
283
|
it "does not have versions" do
|
284
|
-
expect(
|
284
|
+
expect(desc_metadata.versions).to be_empty
|
285
285
|
end
|
286
286
|
it "does not have a title" do
|
287
|
-
expect(
|
287
|
+
expect(desc_metadata.title).to be_empty
|
288
288
|
end
|
289
289
|
end
|
290
290
|
|
291
291
|
context "after creating the file" do
|
292
292
|
before do
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
@original_size =
|
293
|
+
desc_metadata.title = "Greetings Earthlings"
|
294
|
+
desc_metadata.save
|
295
|
+
desc_metadata.create_version
|
296
|
+
@original_size = desc_metadata.size
|
297
297
|
end
|
298
298
|
|
299
299
|
it "links to versions endpoint" do
|
300
|
-
expect(
|
300
|
+
expect(desc_metadata.metadata.ldp_source.graph.query(predicate: ::RDF::Vocab::Fcrepo4.hasVersions).objects).to_not be_empty
|
301
301
|
end
|
302
302
|
|
303
303
|
it "has one version" do
|
304
|
-
expect(
|
305
|
-
expect(
|
304
|
+
expect(desc_metadata.versions.first.label).to eql "version1"
|
305
|
+
expect(desc_metadata.versions.first.created).to start_with current_year
|
306
306
|
end
|
307
307
|
|
308
308
|
it "has a title" do
|
309
|
-
expect(
|
309
|
+
expect(desc_metadata.title).to eql(["Greetings Earthlings"])
|
310
310
|
end
|
311
311
|
|
312
312
|
it "has a size" do
|
313
|
-
expect(
|
313
|
+
expect(desc_metadata.size).to_not be_nil
|
314
314
|
end
|
315
315
|
|
316
316
|
context "two times" do
|
317
317
|
before do
|
318
|
-
|
319
|
-
|
320
|
-
|
318
|
+
desc_metadata.title = "Surrender and prepare to be boarded"
|
319
|
+
desc_metadata.save
|
320
|
+
desc_metadata.create_version
|
321
321
|
end
|
322
322
|
|
323
323
|
it "has two unique versions" do
|
324
|
-
expect(
|
325
|
-
|
326
|
-
expect(
|
327
|
-
expect(
|
324
|
+
expect(desc_metadata.versions.all.size).to eq 2
|
325
|
+
desc_metadata.versions.all.each_index do |index|
|
326
|
+
expect(desc_metadata.versions.all[index].label).to end_with "version" + (index + 1).to_s
|
327
|
+
expect(desc_metadata.versions.all[index].created).to start_with current_year
|
328
328
|
end
|
329
329
|
end
|
330
330
|
|
331
331
|
it "has the new title" do
|
332
|
-
expect(
|
332
|
+
expect(desc_metadata.title).to eql(["Surrender and prepare to be boarded"])
|
333
333
|
end
|
334
334
|
|
335
335
|
it "has a new size" do
|
336
|
-
expect(
|
337
|
-
expect(
|
336
|
+
expect(desc_metadata.size).to_not be_nil
|
337
|
+
expect(desc_metadata.size).to_not eq(@original_size)
|
338
338
|
end
|
339
339
|
|
340
340
|
context "then restoring" do
|
341
341
|
let(:first_version) { "version1" }
|
342
342
|
before do
|
343
|
-
|
343
|
+
desc_metadata.restore_version(first_version)
|
344
344
|
end
|
345
345
|
|
346
346
|
it "stills have two unique versions" do
|
347
|
-
expect(
|
347
|
+
expect(desc_metadata.versions.all.size).to eq 2
|
348
348
|
end
|
349
349
|
|
350
350
|
it "loads the restored file's content" do
|
351
|
-
expect(
|
351
|
+
expect(desc_metadata.title).to eql(["Greetings Earthlings"])
|
352
352
|
end
|
353
353
|
|
354
354
|
it "is the same size as the original file" do
|
355
|
-
expect(
|
355
|
+
expect(desc_metadata.size).to eq @original_size
|
356
356
|
end
|
357
357
|
|
358
358
|
context "and creating additional versions" do
|
359
359
|
before do
|
360
|
-
|
361
|
-
|
362
|
-
|
360
|
+
desc_metadata.title = "Now, surrender and prepare to be boarded"
|
361
|
+
desc_metadata.save
|
362
|
+
desc_metadata.create_version
|
363
363
|
end
|
364
364
|
|
365
365
|
it "has three unique versions" do
|
366
|
-
expect(
|
366
|
+
expect(desc_metadata.versions.all.size).to eq 3
|
367
367
|
end
|
368
368
|
|
369
369
|
it "has a new title" do
|
370
|
-
expect(
|
370
|
+
expect(desc_metadata.title).to eql(["Now, surrender and prepare to be boarded"])
|
371
371
|
end
|
372
372
|
|
373
373
|
it "has a new size" do
|
374
|
-
expect(
|
374
|
+
expect(desc_metadata.size).to_not eq @original_size
|
375
375
|
end
|
376
376
|
end
|
377
377
|
end
|
@@ -395,7 +395,7 @@ describe ActiveFedora::Versionable do
|
|
395
395
|
Object.send(:remove_const, :BinaryDatastream)
|
396
396
|
end
|
397
397
|
|
398
|
-
|
398
|
+
let(:content) { test_object.content }
|
399
399
|
|
400
400
|
let(:current_year) { DateTime.now.year.to_s }
|
401
401
|
|
@@ -404,7 +404,7 @@ describe ActiveFedora::Versionable do
|
|
404
404
|
|
405
405
|
context "before creating the file" do
|
406
406
|
it "does not have versions" do
|
407
|
-
expect(
|
407
|
+
expect(content.versions).to be_empty
|
408
408
|
end
|
409
409
|
end
|
410
410
|
|
@@ -412,48 +412,48 @@ describe ActiveFedora::Versionable do
|
|
412
412
|
let(:first_file) { File.new(File.join(File.dirname(__FILE__), "../fixtures/dino.jpg")) }
|
413
413
|
let(:first_name) { "dino.jpg" }
|
414
414
|
before do
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
415
|
+
content.content = first_file
|
416
|
+
content.original_name = first_name
|
417
|
+
content.save
|
418
|
+
content.create_version
|
419
419
|
end
|
420
420
|
|
421
421
|
it "links to versions endpoint" do
|
422
|
-
expect(
|
422
|
+
expect(content.metadata.ldp_source.graph.query(predicate: ::RDF::Vocab::Fcrepo4.hasVersions).objects).to_not be_empty
|
423
423
|
end
|
424
424
|
|
425
425
|
it "has one version" do
|
426
|
-
expect(
|
427
|
-
expect(
|
428
|
-
expect(
|
429
|
-
expect(
|
430
|
-
expect(
|
426
|
+
expect(content.versions.all.size).to eq 1
|
427
|
+
expect(content.original_name).to eql(first_name)
|
428
|
+
expect(content.content.size).to eq first_file.size
|
429
|
+
expect(content.versions.first.label).to eql "version1"
|
430
|
+
expect(content.versions.first.created).to start_with current_year
|
431
431
|
end
|
432
432
|
|
433
433
|
context "two times" do
|
434
434
|
let(:second_file) { File.new(File.join(File.dirname(__FILE__), "../fixtures/minivan.jpg")) }
|
435
435
|
let(:second_name) { "minivan.jpg" }
|
436
436
|
before do
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
437
|
+
content.content = second_file
|
438
|
+
content.original_name = second_name
|
439
|
+
content.save
|
440
|
+
content.create_version
|
441
441
|
end
|
442
442
|
|
443
443
|
it "has two unique versions" do
|
444
|
-
expect(
|
445
|
-
expect(
|
446
|
-
expect(
|
447
|
-
|
448
|
-
expect(
|
449
|
-
expect(
|
444
|
+
expect(content.versions.all.size).to eq 2
|
445
|
+
expect(content.original_name).to eql(second_name)
|
446
|
+
expect(content.content.size).to eq second_file.size
|
447
|
+
content.versions.all.each_index do |index|
|
448
|
+
expect(content.versions.all[index].label).to end_with "version" + (index + 1).to_s
|
449
|
+
expect(content.versions.all[index].created).to start_with current_year
|
450
450
|
end
|
451
451
|
end
|
452
452
|
|
453
453
|
context "with fixity checking" do
|
454
454
|
let(:results) do
|
455
455
|
results = []
|
456
|
-
|
456
|
+
content.versions.all.each do |version|
|
457
457
|
results << ActiveFedora::FixityService.new(version.uri).check
|
458
458
|
end
|
459
459
|
return results
|
@@ -469,36 +469,36 @@ describe ActiveFedora::Versionable do
|
|
469
469
|
context "then restoring" do
|
470
470
|
let(:first_version) { "version1" }
|
471
471
|
before do
|
472
|
-
|
472
|
+
content.restore_version(first_version)
|
473
473
|
end
|
474
474
|
|
475
475
|
it "stills have two unique versions" do
|
476
|
-
expect(
|
476
|
+
expect(content.versions.all.size).to eq 2
|
477
477
|
end
|
478
478
|
|
479
479
|
it "loads the restored file's content" do
|
480
|
-
expect(
|
480
|
+
expect(content.content.size).to eq first_file.size
|
481
481
|
end
|
482
482
|
|
483
483
|
it "loads the restored file's original name" do
|
484
|
-
expect(
|
484
|
+
expect(content.original_name).to eql(first_name)
|
485
485
|
end
|
486
486
|
|
487
487
|
context "and creating additional versions" do
|
488
488
|
before do
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
489
|
+
content.content = first_file
|
490
|
+
content.original_name = first_name
|
491
|
+
content.save
|
492
|
+
content.create_version
|
493
493
|
end
|
494
494
|
|
495
495
|
it "has three unique versions" do
|
496
|
-
expect(
|
497
|
-
expect(
|
498
|
-
expect(
|
499
|
-
|
500
|
-
expect(
|
501
|
-
expect(
|
496
|
+
expect(content.versions.all.size).to eq 3
|
497
|
+
expect(content.original_name).to eql(first_name)
|
498
|
+
expect(content.content.size).to eq first_file.size
|
499
|
+
content.versions.all.each_index do |index|
|
500
|
+
expect(content.versions.all[index].label).to end_with "version" + (index + 1).to_s
|
501
|
+
expect(content.versions.all[index].created).to start_with current_year
|
502
502
|
end
|
503
503
|
end
|
504
504
|
end
|