active-fedora 9.13.0 → 10.0.0.beta1
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/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,36 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "An object with RDF backed attributes" do
|
4
|
-
before do
|
5
|
-
class MyMetadata < ActiveFedora::NtriplesRDFDatastream
|
6
|
-
Deprecation.silence(ActiveFedora::RDFDatastream) do
|
7
|
-
property :title, predicate: ::RDF::Vocab::DC.title do |index|
|
8
|
-
index.as :stored_searchable
|
9
|
-
end
|
10
|
-
property :date_uploaded, predicate: ::RDF::Vocab::DC.dateSubmitted do |index|
|
11
|
-
index.type :date
|
12
|
-
index.as :stored_searchable, :sortable
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
class TestOne < ActiveFedora::Base
|
17
|
-
has_subresource 'descMetadata', class_name: 'MyMetadata'
|
18
|
-
Deprecation.silence(ActiveFedora::Attributes) do
|
19
|
-
has_attributes :title, :date_uploaded, datastream: 'descMetadata'
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
after do
|
25
|
-
Object.send(:remove_const, :TestOne)
|
26
|
-
Object.send(:remove_const, :MyMetadata)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "is able to grab the solr name" do
|
30
|
-
expect(TestOne.delegated_attributes[:title].primary_solr_name).to eq 'desc_metadata__title_tesim'
|
31
|
-
end
|
32
|
-
|
33
|
-
it "is able to grab the solr name for a date" do
|
34
|
-
expect(TestOne.delegated_attributes[:date_uploaded].primary_solr_name).to eq 'desc_metadata__date_uploaded_dtsim'
|
35
|
-
end
|
36
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Base do
|
4
|
-
describe '.attach_file' do
|
5
|
-
let(:test_object) { described_class.new }
|
6
|
-
let(:ds) { ActiveFedora::File.new(@test_object, 'ds_to_add') }
|
7
|
-
|
8
|
-
it "does not call File.save" do
|
9
|
-
expect(ds).to receive(:save).never
|
10
|
-
test_object.attach_file(ds, 'ds1')
|
11
|
-
end
|
12
|
-
|
13
|
-
it "adds the datastream to the datastreams_in_memory array" do
|
14
|
-
expect(test_object.attached_files).to_not have_key(:ds_to_add)
|
15
|
-
test_object.attach_file(ds, 'ds_to_add')
|
16
|
-
expect(test_object.attached_files).to have_key(:ds_to_add)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/spec/unit/model_spec.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Model do
|
4
|
-
before(:all) do
|
5
|
-
module SpecModel
|
6
|
-
class Basic < ActiveFedora::Base
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
after(:all) do
|
12
|
-
Object.send(:remove_const, :SpecModel)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '.solr_query_handler' do
|
16
|
-
subject { SpecModel::Basic.solr_query_handler }
|
17
|
-
after do
|
18
|
-
# reset to default
|
19
|
-
SpecModel::Basic.solr_query_handler = 'standard'
|
20
|
-
end
|
21
|
-
|
22
|
-
it { should eq 'standard' }
|
23
|
-
|
24
|
-
context "when setting to something besides the default" do
|
25
|
-
before { SpecModel::Basic.solr_query_handler = 'search' }
|
26
|
-
|
27
|
-
it { should eq 'search' }
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,126 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Predicates do
|
4
|
-
describe "#short_predicate" do
|
5
|
-
it 'parses strings' do
|
6
|
-
expect(described_class.short_predicate('http://www.openarchives.org/OAI/2.0/itemID')).to eq :oai_item_id
|
7
|
-
end
|
8
|
-
it 'parses uris' do
|
9
|
-
expect(described_class.short_predicate(RDF::Vocab::DC.creator)).to eq 'dc_terms_creator'
|
10
|
-
expect(described_class.short_predicate(RDF::SKOS.hasTopConcept)).to eq '2004_02_skos_core_has_top_concept'
|
11
|
-
end
|
12
|
-
before do
|
13
|
-
@original_mapping = described_class.predicate_config[:predicate_mapping]
|
14
|
-
end
|
15
|
-
after do
|
16
|
-
described_class.predicate_config[:predicate_mapping] = @original_mapping
|
17
|
-
end
|
18
|
-
it "finds predicates regardless of order loaded or shared namespace prefixes" do
|
19
|
-
described_class.predicate_config[:predicate_mapping] = {
|
20
|
-
"http://example.org/" => { ceo: 'Manager' },
|
21
|
-
"http://example.org/zoo/wolves/" => { alpha: 'Manager' },
|
22
|
-
"http://example.org/zoo/" => { keeper: 'Manager' }
|
23
|
-
}
|
24
|
-
expect(described_class.short_predicate("http://example.org/zoo/Manager")).to eq :keeper
|
25
|
-
expect(described_class.short_predicate("http://example.org/zoo/wolves/Manager")).to eq :alpha
|
26
|
-
expect(described_class.short_predicate("http://example.org/Manager")).to eq :ceo
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'provides .default_predicate_namespace' do
|
31
|
-
expect(described_class.default_predicate_namespace).to eq 'info:fedora/fedora-system:def/relations-external#'
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "#predicate_mappings" do
|
35
|
-
it 'returns a hash' do
|
36
|
-
expect(described_class.predicate_mappings).to be_kind_of Hash
|
37
|
-
end
|
38
|
-
|
39
|
-
it "provides mappings to the fedora ontology via the info:fedora/fedora-system:def/relations-external# default namespace mapping" do
|
40
|
-
expect(described_class.predicate_mappings.keys.include?(described_class.default_predicate_namespace)).to be true
|
41
|
-
expect(described_class.predicate_mappings[described_class.default_predicate_namespace]).to be_kind_of Hash
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'provides predicate mappings for entire Fedora Relationship Ontology' do
|
45
|
-
desired_mappings = Hash[is_member_of: "isMemberOf",
|
46
|
-
has_member: "hasMember",
|
47
|
-
is_part_of: "isPartOf",
|
48
|
-
has_part: "hasPart",
|
49
|
-
is_member_of_collection: "isMemberOfCollection",
|
50
|
-
has_collection_member: "hasCollectionMember",
|
51
|
-
is_constituent_of: "isConstituentOf",
|
52
|
-
has_constituent: "hasConstituent",
|
53
|
-
is_subset_of: "isSubsetOf",
|
54
|
-
has_subset: "hasSubset",
|
55
|
-
is_derivation_of: "isDerivationOf",
|
56
|
-
has_derivation: "hasDerivation",
|
57
|
-
is_dependent_of: "isDependentOf",
|
58
|
-
has_dependent: "hasDependent",
|
59
|
-
is_description_of: "isDescriptionOf",
|
60
|
-
has_description: "hasDescription",
|
61
|
-
is_metadata_for: "isMetadataFor",
|
62
|
-
has_metadata: "hasMetadata",
|
63
|
-
is_annotation_of: "isAnnotationOf",
|
64
|
-
has_annotation: "hasAnnotation",
|
65
|
-
has_equivalent: "hasEquivalent",
|
66
|
-
conforms_to: "conformsTo",
|
67
|
-
has_model: "hasModel"]
|
68
|
-
desired_mappings.each_pair do |k, v|
|
69
|
-
expect(described_class.predicate_mappings[described_class.default_predicate_namespace]).to have_key(k)
|
70
|
-
expect(described_class.predicate_mappings[described_class.default_predicate_namespace][k]).to eq v
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'provides #predicate_lookup that maps symbols to common RELS-EXT predicates' do
|
76
|
-
expect(described_class).to respond_to(:predicate_lookup)
|
77
|
-
expect(described_class.predicate_lookup(:is_part_of)).to eq "isPartOf"
|
78
|
-
expect(described_class.predicate_lookup(:is_member_of)).to eq "isMemberOf"
|
79
|
-
expect(described_class.predicate_lookup("isPartOfCollection")).to eq "isPartOfCollection"
|
80
|
-
described_class.predicate_config[:predicate_mapping]["some_namespace"] = { has_foo: "hasFOO" }
|
81
|
-
expect(described_class.find_predicate(:has_foo)).to eq ["hasFOO", "some_namespace"]
|
82
|
-
expect(described_class.predicate_lookup(:has_foo, "some_namespace")).to eq "hasFOO"
|
83
|
-
expect(lambda { described_class.predicate_lookup(:has_foo) }).to raise_error ActiveFedora::UnregisteredPredicateError
|
84
|
-
end
|
85
|
-
|
86
|
-
context 'initialization' do
|
87
|
-
before :each do
|
88
|
-
@old_predicate_config = Marshal.load(Marshal.dump(described_class.predicate_config))
|
89
|
-
end
|
90
|
-
|
91
|
-
after :each do
|
92
|
-
described_class.predicate_config = @old_predicate_config
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'allows explicit initialization of predicates' do
|
96
|
-
expect(described_class.find_predicate(:is_part_of)).to eq ["isPartOf", "info:fedora/fedora-system:def/relations-external#"]
|
97
|
-
described_class.predicate_config = {
|
98
|
-
default_namespace: 'http://example.com/foo',
|
99
|
-
predicate_mapping: {
|
100
|
-
'http://example.com/foo' => { has_bar: 'hasBAR' }
|
101
|
-
}
|
102
|
-
}
|
103
|
-
expect(described_class.find_predicate(:has_bar)).to eq ["hasBAR", "http://example.com/foo"]
|
104
|
-
expect(lambda { described_class.find_predicate(:is_part_of) }).to raise_error ActiveFedora::UnregisteredPredicateError
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'ensures that the configuration has the correct keys' do
|
108
|
-
expect(lambda { described_class.predicate_config = { foo: 'invalid!' } }).to raise_error TypeError
|
109
|
-
end
|
110
|
-
|
111
|
-
it "allows adding predicates without wiping out existing predicates" do
|
112
|
-
described_class.set_predicates("http://projecthydra.org/ns/relations#" => { has_profile: "hasProfile" },
|
113
|
-
"info:fedora/fedora-system:def/relations-external#" => {
|
114
|
-
references: "references",
|
115
|
-
has_derivation: "cameFrom"
|
116
|
-
})
|
117
|
-
# New & Modified Predicates
|
118
|
-
expect(described_class.find_predicate(:has_profile)).to eq ["hasProfile", "http://projecthydra.org/ns/relations#"]
|
119
|
-
expect(described_class.find_predicate(:references)).to eq ["references", "info:fedora/fedora-system:def/relations-external#"]
|
120
|
-
expect(described_class.find_predicate(:has_derivation)).to eq ["cameFrom", "info:fedora/fedora-system:def/relations-external#"]
|
121
|
-
# Pre-Existing predicates should be unharmed
|
122
|
-
expect(described_class.find_predicate(:is_part_of)).to eq ["isPartOf", "info:fedora/fedora-system:def/relations-external#"]
|
123
|
-
expect(described_class.find_predicate(:is_governed_by)).to eq ["isGovernedBy", "http://projecthydra.org/ns/relations#"]
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
@@ -1,101 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::SimpleDatastream do
|
4
|
-
let(:sample_xml) { "<fields><coverage>coverage1</coverage><coverage>coverage2</coverage><creation_date>2012-01-15</creation_date><mydate>fake-date</mydate><publisher>publisher1</publisher></fields>" }
|
5
|
-
|
6
|
-
before do
|
7
|
-
@original_behavior = Deprecation.default_deprecation_behavior
|
8
|
-
Deprecation.default_deprecation_behavior = :silence
|
9
|
-
@test_ds = described_class.new
|
10
|
-
allow(@test_ds).to receive(:retrieve_content).and_return('') # DS grabs the old content to compare against the new
|
11
|
-
@test_ds.content = sample_xml
|
12
|
-
@test_ds.field :coverage
|
13
|
-
@test_ds.field :creation_date, :date
|
14
|
-
@test_ds.field :mydate
|
15
|
-
@test_ds.field :publisher
|
16
|
-
end
|
17
|
-
|
18
|
-
it "ng_xml should parse everything correctly" do
|
19
|
-
expect(@test_ds.ng_xml).to be_equivalent_to sample_xml
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '#new' do
|
23
|
-
describe "model methods" do
|
24
|
-
[:coverage, :mydate, :publisher].each do |el|
|
25
|
-
it "should respond to getters and setters for the string typed #{el} element" do
|
26
|
-
value = "Hey #{el}"
|
27
|
-
@test_ds.send("#{el}=", value)
|
28
|
-
expect(@test_ds.send(el).first).to eq value # Looking at first because creator has 2 nodes
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
it "sets date elements" do
|
33
|
-
d = Date.parse('1939-05-23')
|
34
|
-
@test_ds.creation_date = d
|
35
|
-
expect(@test_ds.creation_date.first).to eq d
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe '.to_xml' do
|
41
|
-
it 'outputs the fields hash as Qualified Dublin Core XML' do
|
42
|
-
@test_ds.publisher = "charlie"
|
43
|
-
@test_ds.coverage = ["80%", "20%"]
|
44
|
-
|
45
|
-
expect(@test_ds.to_xml).to be_equivalent_to('
|
46
|
-
<fields>
|
47
|
-
<coverage>80%</coverage>
|
48
|
-
<coverage>20%</coverage>
|
49
|
-
<creation_date>2012-01-15</creation_date>
|
50
|
-
<mydate>fake-date</mydate>
|
51
|
-
<publisher>charlie</publisher>
|
52
|
-
</fields>')
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "#to_solr" do
|
57
|
-
it "has title" do
|
58
|
-
solr = @test_ds.to_solr
|
59
|
-
expect(solr[ActiveFedora.index_field_mapper.solr_name('publisher', type: :string)]).to eq "publisher1"
|
60
|
-
expect(solr[ActiveFedora.index_field_mapper.solr_name('creation_date', type: :date)]).to eq "2012-01-15"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "datastream configuration" do
|
65
|
-
let(:foo) do
|
66
|
-
ActiveFedora::Base.create! do |obj|
|
67
|
-
obj.add_file(%(<?xml version="1.0"?>\n<fields><fubar>test</fubar></fields>), path: 'someData')
|
68
|
-
end
|
69
|
-
end
|
70
|
-
let(:resource) { Ldp::Resource::RdfSource.new(ActiveFedora.fedora.connection, foo.uri) }
|
71
|
-
let(:orm) { Ldp::Orm.new(resource) }
|
72
|
-
|
73
|
-
before do
|
74
|
-
class FooHistory < ActiveFedora::Base
|
75
|
-
extend Deprecation
|
76
|
-
Deprecation.silence(FooHistory) do
|
77
|
-
has_metadata type: ActiveFedora::SimpleDatastream, name: "someData" do |m|
|
78
|
-
m.field "fubar", :string
|
79
|
-
end
|
80
|
-
end
|
81
|
-
Deprecation.silence(ActiveFedora::Attributes) do
|
82
|
-
has_attributes :fubar, datastream: 'someData', multiple: false
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
orm.graph.delete([orm.resource.subject_uri, ActiveFedora::RDF::Fcrepo::Model.hasModel, nil])
|
87
|
-
orm.graph.insert([orm.resource.subject_uri, ActiveFedora::RDF::Fcrepo::Model.hasModel, 'FooHistory'])
|
88
|
-
orm.save
|
89
|
-
foo.reload
|
90
|
-
foo.update_index
|
91
|
-
end
|
92
|
-
|
93
|
-
after do
|
94
|
-
Object.send(:remove_const, :FooHistory)
|
95
|
-
Deprecation.default_deprecation_behavior = @original_behavior
|
96
|
-
end
|
97
|
-
|
98
|
-
subject { FooHistory.find(foo.id) }
|
99
|
-
its(:fubar) { is_expected.to eq 'test' }
|
100
|
-
end
|
101
|
-
end
|