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