om 1.6.1 → 1.7.0.rc1
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.
- data/Gemfile.lock +31 -19
- data/History.textile +3 -0
- data/devel/notes.txt +12 -0
- data/lib/om.rb +2 -0
- data/lib/om/version.rb +1 -1
- data/lib/om/xml/container.rb +7 -6
- data/lib/om/xml/document.rb +47 -31
- data/lib/om/xml/dynamic_node.rb +36 -6
- data/lib/om/xml/named_term_proxy.rb +9 -2
- data/lib/om/xml/term.rb +22 -1
- data/lib/om/xml/term_value_operators.rb +8 -1
- data/lib/om/xml/validation.rb +2 -5
- data/om.gemspec +3 -0
- data/spec/integration/serialization_spec.rb +53 -0
- data/spec/unit/container_spec.rb +21 -17
- data/spec/unit/dynamic_node_spec.rb +4 -1
- data/spec/unit/nokogiri_sanity_spec.rb +3 -0
- data/spec/unit/term_spec.rb +205 -166
- data/spec/unit/term_value_operators_spec.rb +21 -1
- data/spec/unit/terminology_builder_spec.rb +3 -1
- data/spec/unit/terminology_spec.rb +9 -3
- metadata +57 -6
@@ -215,6 +215,27 @@ describe "OM::XML::TermValueOperators" do
|
|
215
215
|
@article.term_values(:journal, :title_info).should == ['mork']
|
216
216
|
end
|
217
217
|
|
218
|
+
describe "delete_on_update?" do
|
219
|
+
|
220
|
+
before(:each) do
|
221
|
+
att= {[:journal, :title_info]=>{"0"=>"york", "1"=>"mangle","2"=>"mork"}}
|
222
|
+
@article.update_values(att)
|
223
|
+
@article.term_values(:journal, :title_info).should == ['york', 'mangle', 'mork']
|
224
|
+
end
|
225
|
+
|
226
|
+
it "by default, setting to empty string deletes the node" do
|
227
|
+
@article.update_values({[:journal, :title_info]=>{"1"=>""}})
|
228
|
+
@article.term_values(:journal, :title_info).should == ['york', 'mork']
|
229
|
+
end
|
230
|
+
|
231
|
+
it "if delete_on_update? returns false, setting to empty string won't delete node" do
|
232
|
+
@article.stubs('delete_on_update?').returns(false)
|
233
|
+
@article.update_values({[:journal, :title_info]=>{"1"=>""}})
|
234
|
+
@article.term_values(:journal, :title_info).should == ['york', '', 'mork']
|
235
|
+
end
|
236
|
+
|
237
|
+
end
|
238
|
+
|
218
239
|
it "should retain other child nodes when updating a text content term and shoud not append an additional text node but update text in place" do
|
219
240
|
@article.term_values(:name,:name_content).should == ["Describes a person"]
|
220
241
|
@article.update_values({[:name, :name_content]=>"Test text"})
|
@@ -259,7 +280,6 @@ describe "OM::XML::TermValueOperators" do
|
|
259
280
|
it "should support adding attribute values" do
|
260
281
|
pointer = [{:title_info=>0}, :language]
|
261
282
|
test_val = "language value"
|
262
|
-
debugger
|
263
283
|
@article.term_values_append(
|
264
284
|
:parent_select => [{:title_info=>0}],
|
265
285
|
:parent_index => 0,
|
@@ -71,11 +71,13 @@ describe "OM::XML::Terminology::Builder" do
|
|
71
71
|
t.main_title(:path=>"title", :label=>"title")
|
72
72
|
t.language(:path=>{:attribute=>"lang"})
|
73
73
|
}
|
74
|
-
t.title(:proxy=>[:title_info, :main_title])
|
74
|
+
t.title(:proxy=>[:title_info, :main_title], :index_as =>[:facetable, :not_searchable])
|
75
75
|
end
|
76
76
|
|
77
77
|
terminology = t_builder.build
|
78
78
|
terminology.retrieve_term(:title).should be_kind_of OM::XML::NamedTermProxy
|
79
|
+
terminology.retrieve_term(:title).index_as.should == [:facetable, :not_searchable]
|
80
|
+
terminology.retrieve_term(:title_info, :main_title).index_as.should == []
|
79
81
|
terminology.xpath_for(:title).should == '//oxns:titleInfo/oxns:title'
|
80
82
|
terminology.xpath_with_indexes({:title=>0}).should == "//oxns:titleInfo/oxns:title"
|
81
83
|
# @builder_with_block.build.xpath_for_pointer(:issue).should == '//oxns:part'
|
@@ -319,10 +319,16 @@ describe "OM::XML::Terminology" do
|
|
319
319
|
@test_full_terminology.xml_builder_template(:person,:person_id).should == 'xml.namePart( \'#{builder_new_value}\' )'
|
320
320
|
@test_full_terminology.xml_builder_template(:name,:affiliation).should == 'xml.affiliation( \'#{builder_new_value}\' )'
|
321
321
|
end
|
322
|
+
|
322
323
|
it "should accept extra options" do
|
323
|
-
|
324
|
-
|
325
|
-
|
324
|
+
# Expected marcrelator_role_xml_builder_template.
|
325
|
+
# Include both version to handle either ordering of the hash -- a band-aid hack to fix failing test.
|
326
|
+
e1 = %q{xml.roleTerm( '#{builder_new_value}', 'type'=>'code', 'authority'=>'marcrelator' )}
|
327
|
+
e2 = %q{xml.roleTerm( '#{builder_new_value}', 'authority'=>'marcrelator', 'type'=>'code' )}
|
328
|
+
got = @test_full_terminology.xml_builder_template(:role, :code, {:attributes=>{"authority"=>"marcrelator"}} )
|
329
|
+
[e1, e2].should include(got)
|
330
|
+
got = @test_full_terminology.xml_builder_template(:person, :role, :code, {:attributes=>{"authority"=>"marcrelator"}} )
|
331
|
+
[e1, e2].should include(got)
|
326
332
|
end
|
327
333
|
|
328
334
|
it "should work with deeply nested properties" do
|
metadata
CHANGED
@@ -1,16 +1,48 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: om
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.7.0.rc1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Matt Zumwalt
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: activemodel
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
14
46
|
- !ruby/object:Gem::Dependency
|
15
47
|
name: nokogiri
|
16
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,6 +107,22 @@ dependencies:
|
|
75
107
|
- - ! '>='
|
76
108
|
- !ruby/object:Gem::Version
|
77
109
|
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: awesome_print
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
78
126
|
- !ruby/object:Gem::Dependency
|
79
127
|
name: mocha
|
80
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,6 +183,7 @@ files:
|
|
135
183
|
- Rakefile
|
136
184
|
- UPDATING_DOCUMENTS.textile
|
137
185
|
- container_spec.rb
|
186
|
+
- devel/notes.txt
|
138
187
|
- lib/om.rb
|
139
188
|
- lib/om/samples.rb
|
140
189
|
- lib/om/samples/mods_article.rb
|
@@ -168,6 +217,7 @@ files:
|
|
168
217
|
- spec/integration/querying_documents_spec.rb
|
169
218
|
- spec/integration/rights_metadata_integration_example_spec.rb
|
170
219
|
- spec/integration/selective_querying_spec.rb
|
220
|
+
- spec/integration/serialization_spec.rb
|
171
221
|
- spec/integration/set_reentrant_terminology_spec.rb
|
172
222
|
- spec/integration/xpathy_stuff_spec.rb
|
173
223
|
- spec/spec.opts
|
@@ -204,12 +254,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
204
254
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
255
|
none: false
|
206
256
|
requirements:
|
207
|
-
- - ! '
|
257
|
+
- - ! '>'
|
208
258
|
- !ruby/object:Gem::Version
|
209
|
-
version:
|
259
|
+
version: 1.3.1
|
210
260
|
requirements: []
|
211
261
|
rubyforge_project:
|
212
|
-
rubygems_version: 1.8.
|
262
|
+
rubygems_version: 1.8.24
|
213
263
|
signing_key:
|
214
264
|
specification_version: 3
|
215
265
|
summary: ! 'OM (Opinionated Metadata): A library to help you tame sprawling XML schemas
|
@@ -228,6 +278,7 @@ test_files:
|
|
228
278
|
- spec/integration/querying_documents_spec.rb
|
229
279
|
- spec/integration/rights_metadata_integration_example_spec.rb
|
230
280
|
- spec/integration/selective_querying_spec.rb
|
281
|
+
- spec/integration/serialization_spec.rb
|
231
282
|
- spec/integration/set_reentrant_terminology_spec.rb
|
232
283
|
- spec/integration/xpathy_stuff_spec.rb
|
233
284
|
- spec/spec.opts
|