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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -19
  3. data/lib/active_fedora.rb +0 -17
  4. data/lib/active_fedora/associations.rb +0 -16
  5. data/lib/active_fedora/associations/builder/association.rb +3 -19
  6. data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +1 -3
  7. data/lib/active_fedora/attached_files.rb +2 -108
  8. data/lib/active_fedora/attributes.rb +4 -100
  9. data/lib/active_fedora/core.rb +0 -6
  10. data/lib/active_fedora/datastreams.rb +0 -2
  11. data/lib/active_fedora/errors.rb +0 -9
  12. data/lib/active_fedora/file.rb +9 -22
  13. data/lib/active_fedora/file_configurator.rb +1 -32
  14. data/lib/active_fedora/identifiable.rb +0 -6
  15. data/lib/active_fedora/ldp_resource.rb +0 -12
  16. data/lib/active_fedora/qualified_dublin_core_datastream.rb +1 -1
  17. data/lib/active_fedora/query_result_builder.rb +0 -17
  18. data/lib/active_fedora/rdf/datastream_indexing.rb +0 -11
  19. data/lib/active_fedora/rdf/indexing_service.rb +1 -1
  20. data/lib/active_fedora/rdf/rdf_datastream.rb +0 -10
  21. data/lib/active_fedora/relation/finder_methods.rb +2 -21
  22. data/lib/active_fedora/solr_query_builder.rb +0 -16
  23. data/lib/active_fedora/solr_service.rb +2 -89
  24. data/lib/active_fedora/version.rb +1 -1
  25. data/lib/active_fedora/versionable.rb +0 -8
  26. data/spec/config_helper.rb +0 -4
  27. data/spec/integration/attached_files_spec.rb +1 -108
  28. data/spec/integration/attributes_spec.rb +14 -94
  29. data/spec/integration/direct_container_spec.rb +2 -2
  30. data/spec/integration/file_spec.rb +23 -13
  31. data/spec/integration/indexing_spec.rb +4 -4
  32. data/spec/integration/json_serialization_spec.rb +4 -57
  33. data/spec/integration/ntriples_datastream_spec.rb +77 -139
  34. data/spec/integration/relation_delegation_spec.rb +16 -18
  35. data/spec/integration/{model_spec.rb → scoping_spec.rb} +10 -14
  36. data/spec/integration/solr_hit_spec.rb +4 -20
  37. data/spec/integration/solr_instance_loader_spec.rb +1 -13
  38. data/spec/integration/versionable_spec.rb +0 -9
  39. data/spec/samples/models/mods_article.rb +1 -6
  40. data/spec/spec_helper.rb +0 -3
  41. data/spec/unit/attached_files_spec.rb +29 -127
  42. data/spec/unit/attributes_spec.rb +51 -475
  43. data/spec/unit/base_active_model_spec.rb +12 -47
  44. data/spec/unit/base_extra_spec.rb +1 -1
  45. data/spec/unit/code_configurator_spec.rb +2 -10
  46. data/spec/unit/core_spec.rb +3 -18
  47. data/spec/unit/file_configurator_spec.rb +0 -80
  48. data/spec/unit/file_spec.rb +0 -6
  49. data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -7
  50. data/spec/unit/inheritance_spec.rb +0 -12
  51. data/spec/unit/ntriples_datastream_spec.rb +2 -74
  52. data/spec/unit/property_spec.rb +0 -3
  53. data/spec/unit/query_spec.rb +0 -7
  54. data/spec/unit/querying_spec.rb +24 -0
  55. data/spec/unit/rdf/indexing_service_spec.rb +32 -20
  56. data/spec/unit/rdf_resource_datastream_spec.rb +37 -97
  57. data/spec/unit/solr_query_builder_spec.rb +0 -8
  58. data/spec/unit/solr_service_spec.rb +0 -13
  59. metadata +6 -19
  60. data/config/predicate_mappings.yml +0 -51
  61. data/lib/active_fedora/attributes/om_attribute.rb +0 -26
  62. data/lib/active_fedora/attributes/rdf_datastream_attribute.rb +0 -44
  63. data/lib/active_fedora/attributes/stream_attribute.rb +0 -43
  64. data/lib/active_fedora/datastream.rb +0 -9
  65. data/lib/active_fedora/model.rb +0 -31
  66. data/lib/active_fedora/predicates.rb +0 -122
  67. data/lib/active_fedora/simple_datastream.rb +0 -92
  68. data/spec/fixtures/rails_root/config/predicate_mappings.yml +0 -31
  69. data/spec/integration/field_to_solr_name_spec.rb +0 -36
  70. data/spec/unit/base_datastream_management_spec.rb +0 -19
  71. data/spec/unit/model_spec.rb +0 -30
  72. data/spec/unit/predicates_spec.rb +0 -126
  73. 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
@@ -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