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,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
|