active-fedora 8.4.1 → 8.4.2
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/lib/active_fedora/simple_datastream.rb +16 -21
- data/lib/active_fedora/version.rb +1 -1
- data/spec/unit/simple_datastream_spec.rb +21 -6
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a785fa56e5709791afe64fc36b3eaf3f51fd5557
|
4
|
+
data.tar.gz: a4871a6e43d779bdfea81e96726532131d8bde9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54a6209639d2a5f51d1d41b0478b5a712d8eeec86fb1358ff7ea5e567ae4ecc18a8e5c325c3f4fafff26277b0de3e472e61a84c235278cec783a8808fdd181b6
|
7
|
+
data.tar.gz: 086cbeb31c69b9c61ab31dd4750588dee86442f82fff454de9c096bc3f5aac7ef3f3d558f861aca90fd73d669731845c2f57275de0615141b36386f6ef561875
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module ActiveFedora
|
2
|
-
#This class represents a simple xml datastream.
|
2
|
+
#This class represents a simple xml datastream.
|
3
3
|
class SimpleDatastream < OmDatastream
|
4
4
|
|
5
5
|
class_attribute :class_fields
|
6
6
|
attr_accessor :fields
|
7
7
|
self.class_fields = []
|
8
|
-
|
9
|
-
|
8
|
+
|
9
|
+
|
10
10
|
set_terminology do |t|
|
11
11
|
t.root(:path=>"fields", :xmlns=>nil)
|
12
12
|
end
|
@@ -16,7 +16,7 @@ module ActiveFedora
|
|
16
16
|
xml.text(name)
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
|
21
21
|
#Constructor. this class will call self.field for each DCTERM. In short, all DCTERMS fields will already exist
|
22
22
|
#when this method returns. Each term is marked as a multivalue string.
|
@@ -27,15 +27,15 @@ module ActiveFedora
|
|
27
27
|
|
28
28
|
# This method generates the various accessor and mutator methods on self for the datastream metadata attributes.
|
29
29
|
# each field will have the 2 magic methods:
|
30
|
-
# name=(arg)
|
31
|
-
# name
|
30
|
+
# name=(arg)
|
31
|
+
# name
|
32
32
|
#
|
33
33
|
#
|
34
34
|
# 'datatype' is a datatype, currently :string, :integer and :date are supported.
|
35
35
|
#
|
36
36
|
# opts is an options hash, which will affect the generation of the xml representation of this datastream.
|
37
37
|
#
|
38
|
-
# Currently supported modifiers:
|
38
|
+
# Currently supported modifiers:
|
39
39
|
# For +SimpleDatastream+:
|
40
40
|
# :element_attrs =>{:foo=>:bar} - hash of xml element attributes
|
41
41
|
# :xml_node => :nodename - The xml node to be used to represent this object (in dcterms namespace)
|
@@ -45,8 +45,8 @@ module ActiveFedora
|
|
45
45
|
#
|
46
46
|
#There is quite a good example of this class in use in spec/examples/oral_history.rb
|
47
47
|
#
|
48
|
-
#!! Careful: If you declare two fields that correspond to the same xml node without any qualifiers to differentiate them,
|
49
|
-
#you will end up replicating the values in the underlying datastream, resulting in mysterious dubling, quadrupling, etc.
|
48
|
+
#!! Careful: If you declare two fields that correspond to the same xml node without any qualifiers to differentiate them,
|
49
|
+
#you will end up replicating the values in the underlying datastream, resulting in mysterious dubling, quadrupling, etc.
|
50
50
|
#whenever you edit the field's values.
|
51
51
|
def field(name, datatype=:string, opts={})
|
52
52
|
fields ||= {}
|
@@ -59,9 +59,9 @@ module ActiveFedora
|
|
59
59
|
self.class.terminology.add_term(term)
|
60
60
|
term.generate_xpath_queries!
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
def update_indexed_attributes(params={}, opts={})
|
66
66
|
raise "can't modify frozen #{self.class}" if frozen?
|
67
67
|
# if the params are just keys, not an array, make then into an array.
|
@@ -75,25 +75,20 @@ module ActiveFedora
|
|
75
75
|
end
|
76
76
|
super(new_params, opts)
|
77
77
|
end
|
78
|
-
|
79
78
|
|
80
79
|
def self.xml_template
|
81
|
-
|
80
|
+
Nokogiri::XML::Document.parse("<fields/>")
|
82
81
|
end
|
83
82
|
|
84
83
|
def to_solr(solr_doc = Hash.new) # :nodoc:
|
85
84
|
@fields.each do |field_key, field_info|
|
86
85
|
next if field_key == :location ## FIXME HYDRA-825
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
things.val.each do |val|
|
91
|
-
::Solrizer::Extractor.insert_solr_field_value(solr_doc, field_symbol, val.to_s )
|
92
|
-
end
|
86
|
+
field_symbol = ActiveFedora::SolrService.solr_name(field_key, type: field_info[:type])
|
87
|
+
om_term_values(field_key).each do |val|
|
88
|
+
::Solrizer::Extractor.insert_solr_field_value(solr_doc, field_symbol, val.to_s)
|
93
89
|
end
|
94
90
|
end
|
95
|
-
|
91
|
+
solr_doc
|
96
92
|
end
|
97
|
-
|
98
93
|
end
|
99
94
|
end
|
@@ -3,26 +3,40 @@ require 'spec_helper'
|
|
3
3
|
describe ActiveFedora::SimpleDatastream do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@sample_xml = "<fields><coverage>coverage1</coverage><coverage>coverage2</coverage><creation_date>2012-01-15</creation_date><mydate>fake-date</mydate><publisher>publisher1</publisher></fields>"
|
6
|
+
@sample_xml = "<fields><coverage>coverage1</coverage><coverage>coverage2</coverage><creation_date>2012-01-15</creation_date><mydate>fake-date</mydate><prefix>foobar</prefix><publisher>publisher1</publisher></fields>"
|
7
7
|
@test_ds = ActiveFedora::SimpleDatastream.from_xml(@sample_xml )
|
8
8
|
@test_ds.field :coverage
|
9
9
|
@test_ds.field :creation_date, :date
|
10
10
|
@test_ds.field :mydate
|
11
|
+
@test_ds.field :prefix
|
11
12
|
@test_ds.field :publisher
|
12
|
-
|
13
13
|
end
|
14
|
+
|
14
15
|
it "from_xml should parse everything correctly" do
|
15
16
|
expect(@test_ds.ng_xml).to be_equivalent_to @sample_xml
|
16
17
|
end
|
17
18
|
|
18
|
-
|
19
|
+
describe "#to_solr" do
|
20
|
+
it "should work as expected" do
|
21
|
+
expect(@test_ds.to_solr).to eq(
|
22
|
+
{
|
23
|
+
'coverage_tesim' => ['coverage1', 'coverage2'],
|
24
|
+
'creation_date_dtsim' => '2012-01-15',
|
25
|
+
'mydate_tesim' => 'fake-date',
|
26
|
+
'prefix_tesim' => 'foobar',
|
27
|
+
'publisher_tesim' => 'publisher1'
|
28
|
+
}
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
19
33
|
describe '#new' do
|
20
|
-
describe "model methods" do
|
34
|
+
describe "model methods" do
|
21
35
|
|
22
36
|
[:coverage, :mydate, :publisher].each do |el|
|
23
37
|
it "should respond to getters and setters for the string typed #{el} element" do
|
24
38
|
value = "Hey #{el}"
|
25
|
-
@test_ds.send("#{el.to_s}=", value)
|
39
|
+
@test_ds.send("#{el.to_s}=", value)
|
26
40
|
expect(@test_ds.send(el).first).to eq(value) #Looking at first because creator has 2 nodes
|
27
41
|
end
|
28
42
|
end
|
@@ -34,7 +48,7 @@ describe ActiveFedora::SimpleDatastream do
|
|
34
48
|
end
|
35
49
|
end
|
36
50
|
end
|
37
|
-
|
51
|
+
|
38
52
|
describe '.to_xml' do
|
39
53
|
it 'should output the fields hash as Qualified Dublin Core XML' do
|
40
54
|
@test_ds.publisher= "charlie"
|
@@ -46,6 +60,7 @@ describe ActiveFedora::SimpleDatastream do
|
|
46
60
|
<coverage>20%</coverage>
|
47
61
|
<creation_date>2012-01-15</creation_date>
|
48
62
|
<mydate>fake-date</mydate>
|
63
|
+
<prefix>foobar</prefix>
|
49
64
|
<publisher>charlie</publisher>
|
50
65
|
</fields>')
|
51
66
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.4.
|
4
|
+
version: 8.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-03-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|
@@ -563,7 +563,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
563
563
|
version: '0'
|
564
564
|
requirements: []
|
565
565
|
rubyforge_project:
|
566
|
-
rubygems_version: 2.
|
566
|
+
rubygems_version: 2.5.1
|
567
567
|
signing_key:
|
568
568
|
specification_version: 4
|
569
569
|
summary: A convenience libary for manipulating documents in the Fedora Repository.
|