om 3.1.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/{COMMON_OM_PATTERNS.textile → COMMON_OM_PATTERNS.md} +136 -126
  3. data/CONTRIBUTING.md +2 -2
  4. data/GETTING_FANCY.md +153 -0
  5. data/GETTING_STARTED.md +329 -0
  6. data/Gemfile +1 -1
  7. data/History.md +164 -0
  8. data/LICENSE +15 -20
  9. data/QUERYING_DOCUMENTS.md +162 -0
  10. data/README.md +2 -2
  11. data/UPDATING_DOCUMENTS.md +6 -0
  12. data/gemfiles/gemfile.rails3 +1 -1
  13. data/gemfiles/gemfile.rails4 +1 -1
  14. data/lib/om/version.rb +1 -1
  15. data/lib/om/xml/dynamic_node.rb +42 -51
  16. data/lib/tasks/om.rake +1 -1
  17. data/om.gemspec +1 -2
  18. data/spec/integration/differentiated_elements_spec.rb +2 -2
  19. data/spec/integration/element_value_spec.rb +13 -13
  20. data/spec/integration/proxies_and_ref_spec.rb +10 -10
  21. data/spec/integration/querying_documents_spec.rb +20 -27
  22. data/spec/integration/rights_metadata_integration_example_spec.rb +4 -4
  23. data/spec/integration/selective_querying_spec.rb +1 -1
  24. data/spec/integration/serialization_spec.rb +15 -15
  25. data/spec/integration/set_reentrant_terminology_spec.rb +6 -6
  26. data/spec/integration/subclass_terminology_spec.rb +8 -8
  27. data/spec/integration/xpathy_stuff_spec.rb +10 -10
  28. data/spec/unit/container_spec.rb +27 -27
  29. data/spec/unit/document_spec.rb +24 -24
  30. data/spec/unit/dynamic_node_spec.rb +60 -49
  31. data/spec/unit/named_term_proxy_spec.rb +12 -7
  32. data/spec/unit/node_generator_spec.rb +4 -4
  33. data/spec/unit/nokogiri_sanity_spec.rb +17 -18
  34. data/spec/unit/om_spec.rb +2 -2
  35. data/spec/unit/template_registry_spec.rb +51 -51
  36. data/spec/unit/term_builder_spec.rb +45 -44
  37. data/spec/unit/term_spec.rb +55 -55
  38. data/spec/unit/term_value_operators_spec.rb +205 -205
  39. data/spec/unit/term_xpath_generator_spec.rb +33 -36
  40. data/spec/unit/terminology_builder_spec.rb +50 -47
  41. data/spec/unit/terminology_spec.rb +92 -92
  42. data/spec/unit/validation_spec.rb +12 -12
  43. data/spec/unit/xml_serialization_spec.rb +20 -20
  44. data/spec/unit/xml_spec.rb +3 -3
  45. data/spec/unit/xml_terminology_based_solrizer_spec.rb +18 -18
  46. metadata +11 -38
  47. data/GETTING_FANCY.textile +0 -145
  48. data/GETTING_STARTED.textile +0 -254
  49. data/History.textile +0 -186
  50. data/QUERYING_DOCUMENTS.textile +0 -139
  51. data/UPDATING_DOCUMENTS.textile +0 -3
@@ -68,21 +68,21 @@ describe "an example with :proxy and :ref" do
68
68
 
69
69
  describe "image" do
70
70
  it "should have the right proxy terms" do
71
- subject.ead_fedora_pid.should include "hypatia:ead_file_asset_fixture"
72
- subject.ead_ds_label.should include "my_ead.xml"
73
- subject.ead_size.should include "47570"
74
- subject.ead_md5.should include "123"
75
- subject.ead_sha1.should include "456"
71
+ expect(subject.ead_fedora_pid).to include "hypatia:ead_file_asset_fixture"
72
+ expect(subject.ead_ds_label).to include "my_ead.xml"
73
+ expect(subject.ead_size).to include "47570"
74
+ expect(subject.ead_md5).to include "123"
75
+ expect(subject.ead_sha1).to include "456"
76
76
  end
77
77
  end
78
78
 
79
79
  describe "ead" do
80
80
  it "should have the right proxy terms" do
81
- subject.image_fedora_pid.should include "hypatia:coll_img_file_asset_fixture"
82
- subject.image_ds_label.should include "my_image.jpg"
83
- subject.image_size.should include "302080"
84
- subject.image_md5.should include "789"
85
- subject.image_sha1.should include "666"
81
+ expect(subject.image_fedora_pid).to include "hypatia:coll_img_file_asset_fixture"
82
+ expect(subject.image_ds_label).to include "my_image.jpg"
83
+ expect(subject.image_size).to include "302080"
84
+ expect(subject.image_md5).to include "789"
85
+ expect(subject.image_sha1).to include "666"
86
86
  end
87
87
  end
88
88
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Rspec tests for QUERYING_DOCUMENTS.textile" do
3
+ describe "Rspec tests for QUERYING_DOCUMENTS.md" do
4
4
 
5
5
  before(:all) do
6
6
  @xml_file = "mods_articles/hydrangea_article1.xml"
@@ -11,31 +11,26 @@ describe "Rspec tests for QUERYING_DOCUMENTS.textile" do
11
11
  end
12
12
 
13
13
  it "xpath_for()" do
14
- @term.xpath_for(:name).should ==
15
- '//oxns:name'
16
- @term.xpath_for(:person).should ==
17
- '//oxns:name[@type="personal"]'
18
- @term.xpath_for(:organization).should ==
19
- '//oxns:name[@type="corporate"]'
20
- @term.xpath_for(:person, :first_name).should ==
21
- '//oxns:name[@type="personal"]/oxns:namePart[@type="given"]'
22
- @term.xpath_for(:journal, :issue, :pages, :start).should ==
23
- '//oxns:relatedItem[@type="host"]/oxns:part/oxns:extent[@unit="pages"]/oxns:start'
14
+ expect(@term.xpath_for(:name)).to eq '//oxns:name'
15
+ expect(@term.xpath_for(:person)).to eq '//oxns:name[@type="personal"]'
16
+ expect(@term.xpath_for(:organization)).to eq '//oxns:name[@type="corporate"]'
17
+ expect(@term.xpath_for(:person, :first_name)).to eq '//oxns:name[@type="personal"]/oxns:namePart[@type="given"]'
18
+ expect(@term.xpath_for(:journal, :issue, :pages, :start)).to eq '//oxns:relatedItem[@type="host"]/oxns:part/oxns:extent[@unit="pages"]/oxns:start'
24
19
  end
25
20
 
26
21
  it "term_values()" do
27
- @doc.term_values(:person, :first_name).should == ["GIVEN NAMES", "Siddartha"]
28
- @doc.term_values(:person, :last_name).should == ["FAMILY NAME", "Gautama"]
29
- @doc.term_values(:organization, :namePart).should == ['NSF']
30
- @doc.term_values(:journal, :issue, :pages, :start).should == ['195']
31
- @doc.term_values(:journal, :title_info, :main_title).should == ["TITLE OF HOST JOURNAL"]
22
+ expect(@doc.term_values(:person, :first_name)).to eq ["GIVEN NAMES", "Siddartha"]
23
+ expect(@doc.term_values(:person, :last_name)).to eq ["FAMILY NAME", "Gautama"]
24
+ expect(@doc.term_values(:organization, :namePart)).to eq ['NSF']
25
+ expect(@doc.term_values(:journal, :issue, :pages, :start)).to eq ['195']
26
+ expect(@doc.term_values(:journal, :title_info, :main_title)).to eq ["TITLE OF HOST JOURNAL"]
32
27
  end
33
28
 
34
29
  it "xpath_for(): relative vs absolute" do
35
30
  xp_rel = '//oxns:titleInfo/oxns:title'
36
31
  xp_abs = '//oxns:mods/oxns:titleInfo/oxns:title'
37
- @term.xpath_for( :title_info, :main_title).should == xp_rel
38
- @term.xpath_for(:mods, :title_info, :main_title).should == xp_abs
32
+ expect(@term.xpath_for( :title_info, :main_title)).to eq xp_rel
33
+ expect(@term.xpath_for(:mods, :title_info, :main_title)).to eq xp_abs
39
34
  end
40
35
 
41
36
  it "term_values(): relative vs absolute" do
@@ -45,16 +40,16 @@ describe "Rspec tests for QUERYING_DOCUMENTS.textile" do
45
40
  "TITLE OF HOST JOURNAL",
46
41
  ]
47
42
  xp_abs = '//oxns:mods/oxns:titleInfo/oxns:title'
48
- @doc.term_values( :title_info, :main_title).should == exp
49
- @doc.term_values(:mods, :title_info, :main_title).should == exp[0..1]
43
+ expect(@doc.term_values( :title_info, :main_title)).to eq exp
44
+ expect(@doc.term_values(:mods, :title_info, :main_title)).to eq exp[0..1]
50
45
  end
51
46
 
52
47
  it "find_by_terms()" do
53
48
  exp_xml_role = '<role><roleTerm authority="marcrelator" type="text">funder</roleTerm></role>'
54
49
  exp_xml_start = '<start>195</start>'
55
- @doc.find_by_terms(:organization, :role).class.should == Nokogiri::XML::NodeSet
56
- @doc.find_by_terms(:organization, :role).to_xml.should be_equivalent_to exp_xml_role
57
- @doc.find_by_terms(:journal, :issue, :pages, :start).to_xml.should == exp_xml_start
50
+ expect(@doc.find_by_terms(:organization, :role).class).to eq Nokogiri::XML::NodeSet
51
+ expect(@doc.find_by_terms(:organization, :role).to_xml).to be_equivalent_to exp_xml_role
52
+ expect(@doc.find_by_terms(:journal, :issue, :pages, :start).to_xml).to eq exp_xml_start
58
53
  end
59
54
 
60
55
  it "find_by_terms() error" do
@@ -63,10 +58,8 @@ describe "Rspec tests for QUERYING_DOCUMENTS.textile" do
63
58
  end
64
59
 
65
60
  it "proxies" do
66
- @term.xpath_for(:title).should ==
67
- '//oxns:titleInfo/oxns:title'
68
- @term.xpath_for(:journal_title)
69
- '//oxns:relatedItem[@type="host"]/oxns:titleInfo/oxns:title'
61
+ expect(@term.xpath_for(:title)).to eq '//oxns:titleInfo/oxns:title'
62
+ expect(@term.xpath_for(:journal_title)).to eq'//oxns:relatedItem[@type="host"]/oxns:titleInfo/oxns:title'
70
63
  end
71
64
 
72
65
  end
@@ -66,10 +66,10 @@ describe "OM::XML::Accessors" do
66
66
  describe "update_properties" do
67
67
  it "should update the declared properties" do
68
68
  skip "nesting is too deep..."
69
- @sample.retrieve(*[:edit_access, :machine, :person]).length.should == 0
70
- @sample.update_properties([:edit_access, :machine, :person]=>"user id").should == {"edit_access_machine_person"=>{"-1"=>"user id"}}
71
- @sample.retrieve(*[:edit_access, :machine, :person]).length.should == 1
72
- @sample.retrieve(*[:edit_access, :machine, :person]).first.text.should == "user id"
69
+ expect(@sample.retrieve(*[:edit_access, :machine, :person]).length).to eq 0
70
+ expect(@sample.update_properties([:edit_access, :machine, :person]=>"user id")).to eq({"edit_access_machine_person"=>{"-1"=>"user id"}})
71
+ expect(@sample.retrieve(*[:edit_access, :machine, :person]).length).to eq 1
72
+ expect(@sample.retrieve(*[:edit_access, :machine, :person]).first.text).to eq "user id"
73
73
  end
74
74
  end
75
75
 
@@ -83,7 +83,7 @@ describe "Selecting nodes based on (a) position in hierarchy and (b) attributes"
83
83
  [ 'inner_note_a', %w( i3a i4a) ],
84
84
  [ 'inner_note_not_a', %w( i1 i2 ) ],
85
85
  ]
86
- tests.each { |meth, exp| @doc.send(meth).should == exp }
86
+ tests.each { |meth, exp| expect(@doc.send(meth)).to eq exp }
87
87
  end
88
88
 
89
89
  end
@@ -35,16 +35,16 @@ EOF
35
35
  subject { datastream }
36
36
  describe "reading values" do
37
37
  it "should deserialize date" do
38
- subject.my_date.should == [Date.parse('2012-10-30')]
38
+ expect(subject.my_date).to eq [Date.parse('2012-10-30')]
39
39
  end
40
40
  it "should deserialize time" do
41
- subject.my_time.should == [DateTime.parse('2012-10-30T12:22:33Z')]
41
+ expect(subject.my_time).to eq [DateTime.parse('2012-10-30T12:22:33Z')]
42
42
  end
43
43
  it "should deserialize ints" do
44
- subject.my_int.should == [7]
44
+ expect(subject.my_int).to eq [7]
45
45
  end
46
46
  it "should deserialize boolean" do
47
- subject.active.should == [true]
47
+ expect(subject.active).to eq [true]
48
48
  end
49
49
  end
50
50
  describe "Writing to xml" do
@@ -52,7 +52,7 @@ EOF
52
52
  context "with a valid time" do
53
53
  subject { datastream.to_xml }
54
54
  before { datastream.my_time = [DateTime.parse('2011-01-30T03:45:15Z')] }
55
- it { should be_equivalent_to '<?xml version="1.0"?>
55
+ it { is_expected.to be_equivalent_to '<?xml version="1.0"?>
56
56
  <outer outerId="hypatia:outer" type="outer type">
57
57
  <my_date>2012-10-30</my_date>
58
58
  <my_time>2011-01-30T03:45:15Z</my_time>
@@ -77,7 +77,7 @@ EOF
77
77
  context "with a valid date" do
78
78
 
79
79
  before { datastream.my_date = [Date.parse('2012-09-22')] }
80
- it { should be_equivalent_to '<?xml version="1.0"?>
80
+ it { is_expected.to be_equivalent_to '<?xml version="1.0"?>
81
81
  <outer outerId="hypatia:outer" type="outer type">
82
82
  <my_date>2012-09-22</my_date>
83
83
  <my_time>2012-10-30T12:22:33Z</my_time>
@@ -89,7 +89,7 @@ EOF
89
89
 
90
90
  it "should serialize ints" do
91
91
  subject.my_int = [9]
92
- subject.to_xml.should be_equivalent_to '<?xml version="1.0"?>
92
+ expect(subject.to_xml).to be_equivalent_to '<?xml version="1.0"?>
93
93
  <outer outerId="hypatia:outer" type="outer type">
94
94
  <my_date>2012-10-30</my_date>
95
95
  <my_time>2012-10-30T12:22:33Z</my_time>
@@ -99,7 +99,7 @@ EOF
99
99
  end
100
100
  it "should serialize boolean" do
101
101
  subject.active = [false]
102
- subject.to_xml.should be_equivalent_to '<?xml version="1.0"?>
102
+ expect(subject.to_xml).to be_equivalent_to '<?xml version="1.0"?>
103
103
  <outer outerId="hypatia:outer" type="outer type">
104
104
  <my_date>2012-10-30</my_date>
105
105
  <my_time>2012-10-30T12:22:33Z</my_time>
@@ -122,19 +122,19 @@ EOF
122
122
  end
123
123
  describe "reading values" do
124
124
  it "should deserialize date" do
125
- subject.my_date.should == [nil]
125
+ expect(subject.my_date).to eq [nil]
126
126
  end
127
127
  it "should deserialize ints" do
128
- subject.my_int.should == [nil]
128
+ expect(subject.my_int).to eq [nil]
129
129
  end
130
130
  it "should deserialize bools" do
131
- subject.active.should == [false]
131
+ expect(subject.active).to eq [false]
132
132
  end
133
133
  end
134
134
  describe "Writing to xml" do
135
135
  it "should serialize date" do
136
136
  subject.my_date = [Date.parse('2012-09-22')]
137
- subject.to_xml.should be_equivalent_to '<?xml version="1.0"?>
137
+ expect(subject.to_xml).to be_equivalent_to '<?xml version="1.0"?>
138
138
  <outer outerId="hypatia:outer" type="outer type">
139
139
  <my_date>2012-09-22</my_date>
140
140
  <my_int></my_int>
@@ -143,7 +143,7 @@ EOF
143
143
  end
144
144
  it "should serialize ints" do
145
145
  subject.my_int = [9]
146
- subject.to_xml.should be_equivalent_to '<?xml version="1.0"?>
146
+ expect(subject.to_xml).to be_equivalent_to '<?xml version="1.0"?>
147
147
  <outer outerId="hypatia:outer" type="outer type">
148
148
  <my_date></my_date>
149
149
  <my_int>9</my_int>
@@ -152,7 +152,7 @@ EOF
152
152
  end
153
153
  it "should serialize booleans" do
154
154
  subject.active = [true]
155
- subject.to_xml.should be_equivalent_to '<?xml version="1.0"?>
155
+ expect(subject.to_xml).to be_equivalent_to '<?xml version="1.0"?>
156
156
  <outer outerId="hypatia:outer" type="outer type">
157
157
  <my_date></my_date>
158
158
  <my_int></my_int>
@@ -163,7 +163,7 @@ EOF
163
163
  subject.my_int = [nil]
164
164
  subject.my_date = [nil]
165
165
  subject.active = [nil]
166
- subject.to_xml.should be_equivalent_to '<?xml version="1.0"?>
166
+ expect(subject.to_xml).to be_equivalent_to '<?xml version="1.0"?>
167
167
  <outer outerId="hypatia:outer" type="outer type">
168
168
  </outer>'
169
169
  end
@@ -21,7 +21,7 @@ describe "calling set_terminology more than once" do
21
21
  end
22
22
 
23
23
  it "can get foo" do
24
- subject.foo.should == ['fooval']
24
+ expect(subject.foo).to eq ['fooval']
25
25
  end
26
26
 
27
27
  it "cannot get bar" do
@@ -51,7 +51,7 @@ describe "calling set_terminology more than once" do
51
51
  end
52
52
 
53
53
  it "can now get bar" do
54
- subject.bar.should == ['barval']
54
+ expect(subject.bar).to eq ['barval']
55
55
  end
56
56
 
57
57
  end
@@ -80,11 +80,11 @@ describe "calling set_terminology more than once" do
80
80
  end
81
81
 
82
82
  it "can get foo" do
83
- subject.foo.should == ['fooval']
83
+ expect(subject.foo).to eq ['fooval']
84
84
  end
85
85
 
86
86
  it "can get bar" do
87
- subject.bar.should == ['barval']
87
+ expect(subject.bar).to eq ['barval']
88
88
  end
89
89
 
90
90
  end
@@ -122,11 +122,11 @@ describe "calling set_terminology more than once" do
122
122
  end
123
123
 
124
124
  it "can get foo" do
125
- subject.foo.should == ['fooval']
125
+ expect(subject.foo).to eq ['fooval']
126
126
  end
127
127
 
128
128
  it "can get bar" do
129
- subject.bar.should == ['barval']
129
+ expect(subject.bar).to eq ['barval']
130
130
  end
131
131
 
132
132
  end
@@ -31,12 +31,12 @@ describe "Inherited terminology" do
31
31
 
32
32
  it "should inherit terminology" do
33
33
  subject.foo = "Test value"
34
- subject.foo.should == ["Test value"]
34
+ expect(subject.foo).to eq ["Test value"]
35
35
  end
36
36
 
37
37
  it "should have extended terminology" do
38
38
  subject.bar = "Test value"
39
- subject.bar.should == ["Test value"]
39
+ expect(subject.bar).to eq ["Test value"]
40
40
  end
41
41
  end
42
42
 
@@ -48,7 +48,7 @@ describe "Inherited terminology" do
48
48
 
49
49
  it "should have terminology" do
50
50
  subject.foo = "Test value"
51
- subject.foo.should == ["Test value"]
51
+ expect(subject.foo).to eq ["Test value"]
52
52
  end
53
53
 
54
54
  it "should not have extended terminology" do
@@ -99,14 +99,14 @@ describe "Inherited terminology" do
99
99
 
100
100
  it "should inherit templates" do
101
101
  subject.add_child_node subject.ng_xml.root, :creator, 'Test author', 'Primary'
102
- subject.ng_xml.xpath('//pbcoreCreator/creatorRole[@source="PBCore creatorRole"]').text.should == "Primary"
102
+ expect(subject.ng_xml.xpath('//pbcoreCreator/creatorRole[@source="PBCore creatorRole"]').text).to eq "Primary"
103
103
  end
104
104
 
105
105
  it "should inherit but not extend its parent's templates" do
106
- OtherConcreteTerminology.template_registry.should have_node_type(:creator)
107
- OtherConcreteTerminology.template_registry.should have_node_type(:foo)
108
- AbstractTerminology.template_registry.should_not have_node_type(:foo)
109
- ConcreteTerminology.template_registry.should_not have_node_type(:foo)
106
+ expect(OtherConcreteTerminology.template_registry).to have_node_type(:creator)
107
+ expect(OtherConcreteTerminology.template_registry).to have_node_type(:foo)
108
+ expect(AbstractTerminology.template_registry).not_to have_node_type(:foo)
109
+ expect(ConcreteTerminology.template_registry).not_to have_node_type(:foo)
110
110
  end
111
111
  end
112
112
  end
@@ -51,11 +51,11 @@ describe "an example of xpath-y stuff, also using :proxy and :ref and namespaces
51
51
  end
52
52
 
53
53
  it "should have a content term" do
54
- subject.content.first.should =~ /content/
54
+ expect(subject.content.first).to match /content/
55
55
  end
56
56
 
57
57
  it "should have an html term" do
58
- subject.html.first.should =~ /html/
58
+ expect(subject.html.first).to match /html/
59
59
  end
60
60
 
61
61
 
@@ -121,14 +121,14 @@ describe "an example of xpath-y stuff, also using :proxy and :ref and namespaces
121
121
 
122
122
  it "should have the terms :author_given and :author_family to get the author name" do
123
123
  skip "This doesn't seem to work?"
124
- subject.author_given.should include("Mary")
125
- subject.author_family.should include("Pickral")
124
+ expect(subject.author_given).to include("Mary")
125
+ expect(subject.author_family).to include("Pickral")
126
126
  end
127
127
 
128
128
  it "should have the terms :advisor_given and :advisor_family to get the advisor name" do
129
129
  skip "This doesn't seem to work?"
130
- subject.advisor_given.should include("David")
131
- subject.advisor_family.should include("Small")
130
+ expect(subject.advisor_given).to include("David")
131
+ expect(subject.advisor_family).to include("Small")
132
132
  end
133
133
 
134
134
  end
@@ -185,19 +185,19 @@ describe "an example of xpath-y stuff, also using :proxy and :ref and namespaces
185
185
  end
186
186
 
187
187
  it "should give a creator value" do
188
- subject.creator.should include "David Small"
188
+ expect(subject.creator).to include "David Small"
189
189
  end
190
190
 
191
191
  it "should give a repository value" do
192
- subject.repository.should include "Graphic Novel Repository"
192
+ expect(subject.repository).to include "Graphic Novel Repository"
193
193
  end
194
194
 
195
195
  it "should have a person term 'for more generic xml'" do
196
- subject.person.should include "David Small"
196
+ expect(subject.person).to include "David Small"
197
197
  end
198
198
 
199
199
  it "should have a corporate term 'for more generic xml'" do
200
- subject.corporate.should include "Graphic Novel Repository"
200
+ expect(subject.corporate).to include "Graphic Novel Repository"
201
201
  end
202
202
  end
203
203
  end
@@ -1,80 +1,80 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "OM::XML::Container" do
4
-
4
+
5
5
  before(:all) do
6
6
  class ContainerTest
7
7
  include OM::XML::Container
8
8
  end
9
9
  end
10
-
10
+
11
11
  subject {
12
12
  ContainerTest.from_xml("<foo><bar>1</bar></foo>")
13
13
  }
14
14
 
15
15
  it "should add .ng_xml accessor" do
16
- subject.should respond_to(:ng_xml)
17
- subject.should respond_to(:ng_xml=)
16
+ expect(subject).to respond_to(:ng_xml)
17
+ expect(subject).to respond_to(:ng_xml=)
18
18
  end
19
19
 
20
20
  it "should initialize" do
21
- ContainerTest.new.ng_xml.should be_a_kind_of Nokogiri::XML::Document
21
+ expect(ContainerTest.new.ng_xml).to be_a_kind_of Nokogiri::XML::Document
22
22
  end
23
-
23
+
24
24
  describe "new" do
25
25
  it "should populate ng_xml with an instance of Nokogiri::XML::Document" do
26
- subject.ng_xml.class.should == Nokogiri::XML::Document
26
+ expect(subject.ng_xml.class).to eq Nokogiri::XML::Document
27
27
  end
28
28
  end
29
29
 
30
30
  describe "#from_xml" do
31
31
  it "should accept a String, parse it and store it in .ng_xml" do
32
- Nokogiri::XML::Document.should_receive(:parse).and_return("parsed xml")
32
+ expect(Nokogiri::XML::Document).to receive(:parse).and_return("parsed xml")
33
33
  container1 = ContainerTest.from_xml("<foo><bar>1</bar></foo>")
34
- container1.ng_xml.should == "parsed xml"
34
+ expect(container1.ng_xml).to eq "parsed xml"
35
35
  end
36
36
  it "should accept a File, parse it and store it in .ng_xml" do
37
37
  file = fixture(File.join("mods_articles", "hydrangea_article1.xml"))
38
- Nokogiri::XML::Document.should_receive(:parse).and_return("parsed xml")
38
+ expect(Nokogiri::XML::Document).to receive(:parse).and_return("parsed xml")
39
39
  container1 = ContainerTest.from_xml(file)
40
- container1.ng_xml.should == "parsed xml"
40
+ expect(container1.ng_xml).to eq "parsed xml"
41
41
  end
42
42
  it "should accept Nokogiri nodes as input and leave them as-is" do
43
43
  parsed_xml = Nokogiri::XML::Document.parse("<foo><bar>1</bar></foo>")
44
44
  container1 = ContainerTest.from_xml(parsed_xml)
45
- container1.ng_xml.should == parsed_xml
45
+ expect(container1.ng_xml).to eq parsed_xml
46
46
  end
47
47
  end
48
-
48
+
49
49
  describe ".to_xml" do
50
50
  it "should call .ng_xml.to_xml" do
51
- subject.ng_xml.should_receive(:to_xml).and_return("ng xml")
52
- subject.to_xml.should == "ng xml"
51
+ expect(subject.ng_xml).to receive(:to_xml).and_return("ng xml")
52
+ expect(subject.to_xml).to eq("ng xml")
53
53
  end
54
-
54
+
55
55
  it 'should accept an optional Nokogiri::XML Document as an argument and insert its fields into that (mocked test)' do
56
56
  doc = Nokogiri::XML::Document.parse("<test_xml/>")
57
57
  mock_new_node = double("new node")
58
- doc.root.should_receive(:add_child).with(subject.ng_xml.root).and_return(mock_new_node)
58
+ expect(doc.root).to receive(:add_child).with(subject.ng_xml.root).and_return(mock_new_node)
59
59
  result = subject.to_xml(doc)
60
60
  end
61
-
61
+
62
62
  it 'should accept an optional Nokogiri::XML Document as an argument and insert its fields into that (functional test)' do
63
63
  doc = Nokogiri::XML::Document.parse("<test_xml/>")
64
- subject.to_xml(doc).should == "<?xml version=\"1.0\"?>\n<test_xml>\n <foo>\n <bar>1</bar>\n </foo>\n</test_xml>\n"
64
+ expect(subject.to_xml(doc)).to eq "<?xml version=\"1.0\"?>\n<test_xml>\n <foo>\n <bar>1</bar>\n </foo>\n</test_xml>\n"
65
65
  end
66
-
66
+
67
67
  it 'should add to root of Nokogiri::XML::Documents, but add directly to the elements if a Nokogiri::XML::Node is passed in' do
68
68
  mock_new_node = double("new node")
69
- mock_new_node.stub(:to_xml).and_return("foo")
70
-
69
+ allow(mock_new_node).to receive(:to_xml).and_return("foo")
71
70
  doc = Nokogiri::XML::Document.parse("<test_document/>")
72
71
  el = Nokogiri::XML::Node.new("test_element", Nokogiri::XML::Document.new)
73
- doc.root.should_receive(:add_child).with(subject.ng_xml.root).and_return(mock_new_node)
74
- el.should_receive(:add_child).with(subject.ng_xml.root).and_return(mock_new_node)
75
- subject.to_xml(doc).should
76
- subject.to_xml(el)
72
+ skip "Test not fully implemented"
73
+ expect(doc.root).to receive(:add_child).with(subject.ng_xml.root).and_return(mock_new_node)
74
+ expect(el).to receive(:add_child).with(subject.ng_xml.root).and_return(mock_new_node)
75
+ # expect(subject.to_xml(doc)).to be_equivalent_to
76
+ # expect(subject.to_xml(el )).to be_equivalent_to
77
77
  end
78
78
  end
79
-
79
+
80
80
  end