active-fedora 9.13.0 → 10.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -19
- data/lib/active_fedora.rb +0 -17
- data/lib/active_fedora/associations.rb +0 -16
- data/lib/active_fedora/associations/builder/association.rb +3 -19
- data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +1 -3
- data/lib/active_fedora/attached_files.rb +2 -108
- data/lib/active_fedora/attributes.rb +4 -100
- data/lib/active_fedora/core.rb +0 -6
- data/lib/active_fedora/datastreams.rb +0 -2
- data/lib/active_fedora/errors.rb +0 -9
- data/lib/active_fedora/file.rb +9 -22
- data/lib/active_fedora/file_configurator.rb +1 -32
- data/lib/active_fedora/identifiable.rb +0 -6
- data/lib/active_fedora/ldp_resource.rb +0 -12
- data/lib/active_fedora/qualified_dublin_core_datastream.rb +1 -1
- data/lib/active_fedora/query_result_builder.rb +0 -17
- data/lib/active_fedora/rdf/datastream_indexing.rb +0 -11
- data/lib/active_fedora/rdf/indexing_service.rb +1 -1
- data/lib/active_fedora/rdf/rdf_datastream.rb +0 -10
- data/lib/active_fedora/relation/finder_methods.rb +2 -21
- data/lib/active_fedora/solr_query_builder.rb +0 -16
- data/lib/active_fedora/solr_service.rb +2 -89
- data/lib/active_fedora/version.rb +1 -1
- data/lib/active_fedora/versionable.rb +0 -8
- data/spec/config_helper.rb +0 -4
- data/spec/integration/attached_files_spec.rb +1 -108
- data/spec/integration/attributes_spec.rb +14 -94
- data/spec/integration/direct_container_spec.rb +2 -2
- data/spec/integration/file_spec.rb +23 -13
- data/spec/integration/indexing_spec.rb +4 -4
- data/spec/integration/json_serialization_spec.rb +4 -57
- data/spec/integration/ntriples_datastream_spec.rb +77 -139
- data/spec/integration/relation_delegation_spec.rb +16 -18
- data/spec/integration/{model_spec.rb → scoping_spec.rb} +10 -14
- data/spec/integration/solr_hit_spec.rb +4 -20
- data/spec/integration/solr_instance_loader_spec.rb +1 -13
- data/spec/integration/versionable_spec.rb +0 -9
- data/spec/samples/models/mods_article.rb +1 -6
- data/spec/spec_helper.rb +0 -3
- data/spec/unit/attached_files_spec.rb +29 -127
- data/spec/unit/attributes_spec.rb +51 -475
- data/spec/unit/base_active_model_spec.rb +12 -47
- data/spec/unit/base_extra_spec.rb +1 -1
- data/spec/unit/code_configurator_spec.rb +2 -10
- data/spec/unit/core_spec.rb +3 -18
- data/spec/unit/file_configurator_spec.rb +0 -80
- data/spec/unit/file_spec.rb +0 -6
- data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -7
- data/spec/unit/inheritance_spec.rb +0 -12
- data/spec/unit/ntriples_datastream_spec.rb +2 -74
- data/spec/unit/property_spec.rb +0 -3
- data/spec/unit/query_spec.rb +0 -7
- data/spec/unit/querying_spec.rb +24 -0
- data/spec/unit/rdf/indexing_service_spec.rb +32 -20
- data/spec/unit/rdf_resource_datastream_spec.rb +37 -97
- data/spec/unit/solr_query_builder_spec.rb +0 -8
- data/spec/unit/solr_service_spec.rb +0 -13
- metadata +6 -19
- data/config/predicate_mappings.yml +0 -51
- data/lib/active_fedora/attributes/om_attribute.rb +0 -26
- data/lib/active_fedora/attributes/rdf_datastream_attribute.rb +0 -44
- data/lib/active_fedora/attributes/stream_attribute.rb +0 -43
- data/lib/active_fedora/datastream.rb +0 -9
- data/lib/active_fedora/model.rb +0 -31
- data/lib/active_fedora/predicates.rb +0 -122
- data/lib/active_fedora/simple_datastream.rb +0 -92
- data/spec/fixtures/rails_root/config/predicate_mappings.yml +0 -31
- data/spec/integration/field_to_solr_name_spec.rb +0 -36
- data/spec/unit/base_datastream_management_spec.rb +0 -19
- data/spec/unit/model_spec.rb +0 -30
- data/spec/unit/predicates_spec.rb +0 -126
- data/spec/unit/simple_datastream_spec.rb +0 -101
@@ -1,19 +1,11 @@
|
|
1
1
|
module ActiveFedora
|
2
2
|
module Versionable
|
3
3
|
extend ActiveSupport::Concern
|
4
|
-
extend Deprecation
|
5
4
|
|
6
5
|
included do
|
7
6
|
class_attribute :versionable
|
8
7
|
end
|
9
8
|
|
10
|
-
module ClassMethods
|
11
|
-
def has_many_versions
|
12
|
-
Deprecation.warn Versionable, "has_many_versions is deprecated and will be removed in ActiveFedora 11."
|
13
|
-
# self.versionable = true
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
9
|
def model_type
|
18
10
|
if respond_to?(:metadata)
|
19
11
|
metadata.ldp_source.graph.query(predicate: ::RDF.type).objects
|
data/spec/config_helper.rb
CHANGED
@@ -5,10 +5,6 @@ def mock_yaml(hash, path)
|
|
5
5
|
allow(Psych).to receive(:load).and_return(hash)
|
6
6
|
end
|
7
7
|
|
8
|
-
def default_predicate_mapping_file
|
9
|
-
File.expand_path(File.join(File.dirname(__FILE__), "..", "config", "predicate_mappings.yml"))
|
10
|
-
end
|
11
|
-
|
12
8
|
def stub_rails(opts = {})
|
13
9
|
Object.const_set("Rails", Class)
|
14
10
|
Rails.send(:undef_method, :env) if Rails.respond_to?(:env)
|
@@ -26,113 +26,6 @@ describe ActiveFedora::AttachedFiles do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
describe "#has_metadata" do
|
30
|
-
describe "autosave" do
|
31
|
-
before :each do
|
32
|
-
class MockAFBaseRelationship < ActiveFedora::Base
|
33
|
-
extend Deprecation
|
34
|
-
Deprecation.silence(MockAFBaseRelationship) do
|
35
|
-
has_metadata 'foo', type: Hydra::ModsArticleDatastream
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
after :each do
|
40
|
-
Object.send(:remove_const, :MockAFBaseRelationship)
|
41
|
-
end
|
42
|
-
describe "a new document" do
|
43
|
-
before do
|
44
|
-
@obj = MockAFBaseRelationship.new
|
45
|
-
|
46
|
-
@obj.foo.person = "bob"
|
47
|
-
@obj.save
|
48
|
-
end
|
49
|
-
|
50
|
-
it "saves the datastream." do
|
51
|
-
obj = MockAFBaseRelationship.find(@obj.id)
|
52
|
-
expect(obj.foo).to_not be_new_record
|
53
|
-
expect(obj.foo.person).to eq ['bob']
|
54
|
-
person_field = ActiveFedora.index_field_mapper.solr_name('foo__person', type: :string)
|
55
|
-
solr_result = ActiveFedora::SolrService.query("{!field f=id}#{@obj.id}", fl: "id #{person_field}").first
|
56
|
-
expect(solr_result).to eq("id" => @obj.id, person_field => ['bob'])
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe "that already exists in the repo" do
|
61
|
-
before do
|
62
|
-
@release = MockAFBaseRelationship.create
|
63
|
-
@release.foo.person = "test foo content"
|
64
|
-
@release.save
|
65
|
-
end
|
66
|
-
describe "and has been changed" do
|
67
|
-
before do
|
68
|
-
@release.foo.person = 'frank'
|
69
|
-
@release.save!
|
70
|
-
end
|
71
|
-
it "saves the datastream." do
|
72
|
-
expect(MockAFBaseRelationship.find(@release.id).foo.person).to eq ['frank']
|
73
|
-
person_field = ActiveFedora.index_field_mapper.solr_name('foo__person', type: :string)
|
74
|
-
expect(ActiveFedora::SolrService.query("id:\"#{@release.id}\"", fl: "id #{person_field}").first).to eq("id" => @release.id, person_field => ['frank'])
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe "serializing datastreams" do
|
81
|
-
before do
|
82
|
-
class TestingMetadataSerializing < ActiveFedora::Base
|
83
|
-
extend Deprecation
|
84
|
-
Deprecation.silence(TestingMetadataSerializing) do
|
85
|
-
has_metadata "nokogiri_autocreate_on", autocreate: true, type: ActiveFedora::OmDatastream
|
86
|
-
has_metadata "nokogiri_autocreate_off", autocreate: false, type: ActiveFedora::OmDatastream
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
after do
|
92
|
-
Object.send(:remove_const, :TestingMetadataSerializing)
|
93
|
-
end
|
94
|
-
|
95
|
-
subject { TestingMetadataSerializing.new }
|
96
|
-
|
97
|
-
it "works" do
|
98
|
-
subject.save(validate: false)
|
99
|
-
expect(subject.nokogiri_autocreate_on).to_not be_new_record
|
100
|
-
expect(subject.nokogiri_autocreate_off).to be_new_record
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
describe "#has_file_datastream" do
|
106
|
-
before do
|
107
|
-
class HasFile < ActiveFedora::Base
|
108
|
-
extend Deprecation
|
109
|
-
Deprecation.silence(HasFile) do
|
110
|
-
has_file_datastream "file_ds"
|
111
|
-
has_file_datastream "file_ds2", autocreate: false
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
after do
|
117
|
-
has_file.delete
|
118
|
-
Object.send(:remove_const, :HasFile)
|
119
|
-
end
|
120
|
-
|
121
|
-
let(:has_file) { HasFile.create("test:ds_versionable_has_file") }
|
122
|
-
|
123
|
-
it "creates datastreams from the spec on new objects" do
|
124
|
-
has_file.file_ds.content = "blah blah blah"
|
125
|
-
expect(has_file.file_ds).to be_changed
|
126
|
-
expect(has_file.file_ds2).to_not be_changed # no autocreate
|
127
|
-
expect(has_file.file_ds2).to be_new_record
|
128
|
-
has_file.save
|
129
|
-
has_file.reload
|
130
|
-
expect(has_file.file_ds).to_not be_changed
|
131
|
-
expect(has_file.file_ds2).to_not be_changed # no autocreate
|
132
|
-
expect(has_file.file_ds2).to be_new_record
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
29
|
describe "Datastreams synched together" do
|
137
30
|
before do
|
138
31
|
class DSTest < ActiveFedora::Base
|
@@ -233,7 +126,7 @@ describe ActiveFedora::AttachedFiles do
|
|
233
126
|
let(:obj) { ActiveFedora::Base.create }
|
234
127
|
after { obj.destroy }
|
235
128
|
|
236
|
-
let(:ds) { ActiveFedora::File.new(obj.uri + '/DS1')
|
129
|
+
let(:ds) { ActiveFedora::File.new(obj.uri + '/DS1') { |ds| ds.content = "foo"; ds.save } }
|
237
130
|
|
238
131
|
it "retrieves blobs that match the saved blobs" do
|
239
132
|
obj.attach_file(ds, 'DS1')
|
@@ -2,28 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "delegating attributes" do
|
4
4
|
before :all do
|
5
|
-
class PropertiesDatastream < ActiveFedora::OmDatastream
|
6
|
-
set_terminology do |t|
|
7
|
-
t.root(path: "fields")
|
8
|
-
t.depositor index_as: [:symbol, :stored_searchable]
|
9
|
-
t.wrangler index_as: [:facetable]
|
10
|
-
end
|
11
|
-
end
|
12
5
|
class TitledObject < ActiveFedora::Base
|
13
|
-
|
14
|
-
Deprecation.silence(ActiveFedora::Attributes) do
|
15
|
-
has_attributes :title, datastream: 'foo', multiple: false
|
16
|
-
end
|
6
|
+
property :title, predicate: ::RDF::Vocab::DC.title
|
17
7
|
end
|
18
8
|
|
19
9
|
class RdfObject < ActiveFedora::Base
|
20
|
-
has_subresource 'foo', class_name: 'PropertiesDatastream'
|
21
|
-
Deprecation.silence(ActiveFedora::Attributes) do
|
22
|
-
has_attributes :depositor, datastream: :foo, multiple: false do |index|
|
23
|
-
index.as :stored_searchable
|
24
|
-
end
|
25
|
-
has_attributes :wrangler, datastream: :foo, multiple: true
|
26
|
-
end
|
27
10
|
property :resource_type, predicate: ::RDF::Vocab::DC.type do |index|
|
28
11
|
index.as :stored_searchable, :facetable
|
29
12
|
end
|
@@ -33,7 +16,6 @@ describe "delegating attributes" do
|
|
33
16
|
after :all do
|
34
17
|
Object.send(:remove_const, :TitledObject)
|
35
18
|
Object.send(:remove_const, :RdfObject)
|
36
|
-
Object.send(:remove_const, :PropertiesDatastream)
|
37
19
|
end
|
38
20
|
|
39
21
|
describe "#index_config" do
|
@@ -41,7 +23,6 @@ describe "delegating attributes" do
|
|
41
23
|
subject { RdfObject.index_config }
|
42
24
|
it "has configuration" do
|
43
25
|
expect(subject[:resource_type].behaviors).to eq [:stored_searchable, :facetable]
|
44
|
-
expect(subject[:depositor].behaviors).to eq [:stored_searchable]
|
45
26
|
end
|
46
27
|
end
|
47
28
|
|
@@ -59,7 +40,6 @@ describe "delegating attributes" do
|
|
59
40
|
|
60
41
|
it "has configuration" do
|
61
42
|
expect(subject[:resource_type].behaviors).to eq [:stored_searchable, :facetable]
|
62
|
-
expect(subject[:depositor].behaviors).to eq [:stored_searchable]
|
63
43
|
end
|
64
44
|
|
65
45
|
context "when the inherited config is modifed" do
|
@@ -75,83 +55,23 @@ describe "delegating attributes" do
|
|
75
55
|
end
|
76
56
|
end
|
77
57
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
obj = TitledObject.create
|
82
|
-
obj.title = "Hydra for Dummies"
|
83
|
-
obj.save
|
84
|
-
obj
|
85
|
-
end
|
86
|
-
it "keeps a list of changes after a successful save" do
|
87
|
-
expect(subject.previous_changes).to_not be_empty
|
88
|
-
expect(subject.previous_changes.keys).to include("title")
|
89
|
-
end
|
90
|
-
it "cleans out changes" do
|
91
|
-
expect(subject).to_not be_title_changed
|
92
|
-
expect(subject.changes).to be_empty
|
93
|
-
end
|
58
|
+
describe "previous_changes" do
|
59
|
+
subject do
|
60
|
+
TitledObject.create(title: ["Hydra for Dummies"])
|
94
61
|
end
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
subject { RdfObject.create }
|
99
|
-
|
100
|
-
describe "getting attributes" do
|
101
|
-
before do
|
102
|
-
subject.depositor = "foo"
|
103
|
-
subject.resource_type = ["bar"]
|
104
|
-
subject.save
|
105
|
-
end
|
106
|
-
|
107
|
-
specify "using strings for keys" do
|
108
|
-
expect(subject["depositor"]).to eql("foo")
|
109
|
-
expect(subject["resource_type"]).to eql(["bar"])
|
110
|
-
end
|
111
|
-
specify "using symbols for keys" do
|
112
|
-
expect(subject[:depositor]).to eql("foo")
|
113
|
-
expect(subject[:resource_type]).to eql(["bar"])
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
describe "setting attributes" do
|
118
|
-
specify "using strings for keys" do
|
119
|
-
subject["depositor"] = "foo"
|
120
|
-
subject["resource_type"] = ["bar"]
|
121
|
-
subject.save
|
122
|
-
expect(subject.depositor).to eql("foo")
|
123
|
-
expect(subject.resource_type).to eql(["bar"])
|
124
|
-
end
|
125
|
-
|
126
|
-
specify "using symbols for keys" do
|
127
|
-
subject[:depositor] = "foo"
|
128
|
-
subject[:resource_type] = ["bar"]
|
129
|
-
subject.save
|
130
|
-
expect(subject.depositor).to eql("foo")
|
131
|
-
expect(subject.resource_type).to eql(["bar"])
|
132
|
-
end
|
133
|
-
|
134
|
-
# TODO: bug logged in issue #540
|
135
|
-
describe "using shift", pending: "has_changed? not returning true" do
|
136
|
-
specify "with rdf properties" do
|
137
|
-
subject.resource_type << "bar"
|
138
|
-
subject.save
|
139
|
-
expect(subject.resource_type).to eql(["bar"])
|
140
|
-
end
|
141
|
-
specify "with om terms" do
|
142
|
-
subject.wrangler << "bar"
|
143
|
-
subject.save
|
144
|
-
expect(subject.wrangler).to eql(["bar"])
|
145
|
-
end
|
146
|
-
end
|
62
|
+
it "keeps a list of changes after a successful save" do
|
63
|
+
expect(subject.previous_changes).to_not be_empty
|
64
|
+
expect(subject.previous_changes.keys).to include("title")
|
147
65
|
end
|
148
66
|
end
|
149
67
|
|
150
|
-
describe
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
68
|
+
describe "#changes" do
|
69
|
+
subject do
|
70
|
+
TitledObject.create(title: ["Hydra for Dummies"])
|
71
|
+
end
|
72
|
+
it "cleans out changes" do
|
73
|
+
expect(subject).to_not be_title_changed
|
74
|
+
expect(subject.changes).to be_empty
|
155
75
|
end
|
156
76
|
end
|
157
77
|
end
|
@@ -226,7 +226,7 @@ describe "Direct containers" do
|
|
226
226
|
end
|
227
227
|
|
228
228
|
context "and it doesn't contain the file" do
|
229
|
-
let!(:file2) { ActiveFedora::File.new
|
229
|
+
let!(:file2) { ActiveFedora::File.new { |f| f.content = 'hmm'; f.save } }
|
230
230
|
subject { foo.reload.files.include? file2 }
|
231
231
|
it { is_expected.to be false }
|
232
232
|
end
|
@@ -241,7 +241,7 @@ describe "Direct containers" do
|
|
241
241
|
end
|
242
242
|
|
243
243
|
context "and it doesn't contain the file" do
|
244
|
-
let!(:file2) { ActiveFedora::File.new
|
244
|
+
let!(:file2) { ActiveFedora::File.new { |f| f.content = 'hmm'; f.save } }
|
245
245
|
subject { foo.files.include? file2 }
|
246
246
|
it { is_expected.to be false }
|
247
247
|
end
|
@@ -50,13 +50,10 @@ describe ActiveFedora::File do
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
context "
|
53
|
+
context "with a sub-resource that autocreates" do
|
54
54
|
before do
|
55
55
|
class MockAFBase < ActiveFedora::Base
|
56
|
-
|
57
|
-
Deprecation.silence(MockAFBase) do
|
58
|
-
has_metadata "descMetadata", type: ActiveFedora::QualifiedDublinCoreDatastream, autocreate: true
|
59
|
-
end
|
56
|
+
has_subresource "descMetadata", class_name: 'ActiveFedora::QualifiedDublinCoreDatastream', autocreate: true
|
60
57
|
end
|
61
58
|
end
|
62
59
|
|
@@ -65,13 +62,7 @@ describe ActiveFedora::File do
|
|
65
62
|
end
|
66
63
|
|
67
64
|
let(:test_object) { MockAFBase.create }
|
68
|
-
|
69
|
-
let(:descMetadata) { test_object.attached_files["descMetadata"] }
|
70
|
-
|
71
|
-
describe "the metadata file" do
|
72
|
-
subject { descMetadata }
|
73
|
-
it { should be_a_kind_of(described_class) }
|
74
|
-
end
|
65
|
+
let(:descMetadata) { test_object.descMetadata }
|
75
66
|
|
76
67
|
describe "#content" do
|
77
68
|
subject { descMetadata.content }
|
@@ -89,7 +80,6 @@ describe ActiveFedora::File do
|
|
89
80
|
before do
|
90
81
|
title.content = "Test Title"
|
91
82
|
xml_content.root.add_child title
|
92
|
-
|
93
83
|
allow(descMetadata).to receive(:before_save)
|
94
84
|
descMetadata.content = xml_content.to_s
|
95
85
|
descMetadata.save
|
@@ -100,6 +90,26 @@ describe ActiveFedora::File do
|
|
100
90
|
subject { found.xpath('//dc/title/text()').first.inner_text }
|
101
91
|
it { should eq title.content }
|
102
92
|
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context "with a sub-resource" do
|
96
|
+
before do
|
97
|
+
class MockAFBase < ActiveFedora::Base
|
98
|
+
has_subresource "descMetadata", class_name: 'ActiveFedora::QualifiedDublinCoreDatastream'
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
after do
|
103
|
+
Object.send(:remove_const, :MockAFBase)
|
104
|
+
end
|
105
|
+
|
106
|
+
let(:test_object) { MockAFBase.create }
|
107
|
+
let(:descMetadata) { test_object.descMetadata }
|
108
|
+
|
109
|
+
describe "the metadata file" do
|
110
|
+
subject { descMetadata }
|
111
|
+
it { should be_a_kind_of(described_class) }
|
112
|
+
end
|
103
113
|
|
104
114
|
context "a binary file" do
|
105
115
|
let(:path) { "ds#{Time.now.to_i}" }
|
@@ -31,15 +31,15 @@ describe ActiveFedora::Base do
|
|
31
31
|
|
32
32
|
context 'when some of the decendants are not RDFSources' do
|
33
33
|
let(:ids) { ['foo', 'foo/bar'] }
|
34
|
-
let(:
|
34
|
+
let(:file) { ActiveFedora::File.new(described_class.id_to_uri('foo/bar/bax')) }
|
35
35
|
|
36
36
|
before do
|
37
|
-
|
38
|
-
|
37
|
+
file.content = "Hello!!!"
|
38
|
+
file.save
|
39
39
|
end
|
40
40
|
|
41
41
|
it "does not put the datastream in the decendants list" do
|
42
|
-
expect(described_class.descendant_uris(root_uri(ids))).not_to include
|
42
|
+
expect(described_class.descendant_uris(root_uri(ids))).not_to include file.uri
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -5,32 +5,19 @@ describe "Objects should be serialized to JSON" do
|
|
5
5
|
expect(ActiveFedora::Base.new.to_json).to eq "{\"id\":null}"
|
6
6
|
end
|
7
7
|
|
8
|
-
context "with properties
|
8
|
+
context "with properties" do
|
9
9
|
before do
|
10
|
-
class MyDS < ActiveFedora::OmDatastream
|
11
|
-
set_terminology do |t|
|
12
|
-
t.root(path: "durh")
|
13
|
-
t.foo
|
14
|
-
t.bar
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
10
|
class Foo < ActiveFedora::Base
|
19
|
-
has_subresource 'descMetadata', class_name: 'MyDS'
|
20
|
-
Deprecation.silence(ActiveFedora::Attributes) do
|
21
|
-
has_attributes :foo, datastream: 'descMetadata', multiple: true
|
22
|
-
has_attributes :bar, datastream: 'descMetadata', multiple: false
|
23
|
-
end
|
24
11
|
property :title, predicate: ::RDF::Vocab::DC.title
|
12
|
+
property :description, predicate: ::RDF::Vocab::DC.description, multiple: false
|
25
13
|
end
|
26
14
|
end
|
27
15
|
|
28
16
|
after do
|
29
17
|
Object.send(:remove_const, :Foo)
|
30
|
-
Object.send(:remove_const, :MyDS)
|
31
18
|
end
|
32
19
|
|
33
|
-
let(:obj) { Foo.new(
|
20
|
+
let(:obj) { Foo.new(title: ['My Title'], description: 'Wonderful stuff') }
|
34
21
|
|
35
22
|
before { allow(obj).to receive(:id).and_return('test-123') }
|
36
23
|
|
@@ -38,48 +25,8 @@ describe "Objects should be serialized to JSON" do
|
|
38
25
|
|
39
26
|
it "has to_json" do
|
40
27
|
expect(subject['id']).to eq "test-123"
|
41
|
-
expect(subject['foo']).to eq ["baz"]
|
42
|
-
expect(subject['bar']).to eq "quix"
|
43
28
|
expect(subject['title']).to eq ["My Title"]
|
29
|
+
expect(subject['description']).to eq "Wonderful stuff"
|
44
30
|
end
|
45
31
|
end
|
46
|
-
|
47
|
-
context "with nested nodes" do
|
48
|
-
before do
|
49
|
-
class DummySubnode < ActiveTriples::Resource
|
50
|
-
property :relation, predicate: ::RDF::Vocab::DC[:relation]
|
51
|
-
end
|
52
|
-
|
53
|
-
class DummyResource < ActiveFedora::RDFDatastream
|
54
|
-
Deprecation.silence(ActiveFedora::RDFDatastream) do
|
55
|
-
property :license, predicate: ::RDF::Vocab::DC[:license], class_name: DummySubnode do |index|
|
56
|
-
index.as :searchable, :displayable
|
57
|
-
end
|
58
|
-
end
|
59
|
-
def serialization_format
|
60
|
-
:ntriples
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
class DummyAsset < ActiveFedora::Base
|
65
|
-
has_subresource 'descMetadata', class_name: 'DummyResource'
|
66
|
-
Deprecation.silence(ActiveFedora::Attributes) do
|
67
|
-
has_attributes :relation, datastream: 'descMetadata', at: [:license, :relation], multiple: false
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
after do
|
73
|
-
Object.send(:remove_const, "DummyAsset")
|
74
|
-
Object.send(:remove_const, "DummyResource")
|
75
|
-
Object.send(:remove_const, "DummySubnode")
|
76
|
-
end
|
77
|
-
|
78
|
-
let(:obj) { DummyAsset.new { |a| a.relation = 'Great Grandchild' } }
|
79
|
-
before { allow(obj).to receive(:id).and_return('test-123') }
|
80
|
-
|
81
|
-
subject { JSON.parse(obj.to_json) }
|
82
|
-
|
83
|
-
it { should eq("id" => "test-123", "relation" => "Great Grandchild") }
|
84
|
-
end
|
85
32
|
end
|