roxml 2.5.3 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +7 -0
- data/.gitmodules +3 -0
- data/History.txt +38 -1
- data/README.rdoc +8 -5
- data/Rakefile +35 -36
- data/TODO +12 -35
- data/VERSION +1 -0
- data/examples/amazon.rb +8 -6
- data/examples/posts.rb +1 -1
- data/examples/{active_record.rb → rails.rb} +2 -2
- data/examples/twitter.rb +1 -1
- data/lib/roxml.rb +86 -151
- data/lib/roxml/definition.rb +64 -152
- data/lib/roxml/hash_definition.rb +5 -40
- data/lib/roxml/xml.rb +12 -9
- data/lib/roxml/xml/parsers/libxml.rb +22 -17
- data/lib/roxml/xml/parsers/nokogiri.rb +77 -0
- data/lib/roxml/xml/references.rb +66 -57
- data/roxml.gemspec +170 -19
- data/spec/definition_spec.rb +121 -198
- data/spec/examples/active_record_spec.rb +2 -2
- data/spec/examples/amazon_spec.rb +3 -2
- data/spec/examples/current_weather_spec.rb +2 -2
- data/spec/examples/dashed_elements_spec.rb +2 -2
- data/spec/examples/library_spec.rb +11 -6
- data/spec/examples/post_spec.rb +3 -3
- data/spec/examples/twitter_spec.rb +2 -2
- data/spec/roxml_spec.rb +15 -15
- data/spec/shared_specs.rb +1 -1
- data/spec/spec_helper.rb +8 -27
- data/spec/support/libxml.rb +3 -0
- data/spec/support/nokogiri.rb +3 -0
- data/spec/xml/attributes_spec.rb +36 -0
- data/spec/xml/namespace_spec.rb +240 -0
- data/spec/xml/namespaces_spec.rb +32 -0
- data/spec/xml/parser_spec.rb +9 -30
- data/tasks/rdoc.rake +13 -0
- data/tasks/rspec.rake +21 -17
- data/tasks/test.rake +13 -20
- data/test/mocks/dictionaries.rb +8 -7
- data/test/mocks/mocks.rb +20 -20
- data/test/support/fixtures.rb +11 -0
- data/test/test_helper.rb +3 -14
- data/test/unit/definition_test.rb +21 -95
- data/test/unit/deprecations_test.rb +1 -74
- data/test/unit/to_xml_test.rb +3 -3
- data/test/unit/xml_attribute_test.rb +1 -1
- data/test/unit/xml_block_test.rb +3 -3
- data/test/unit/xml_bool_test.rb +4 -4
- data/test/unit/xml_convention_test.rb +3 -3
- data/test/unit/xml_hash_test.rb +5 -14
- data/test/unit/xml_initialize_test.rb +2 -6
- data/test/unit/xml_name_test.rb +5 -24
- data/test/unit/xml_namespace_test.rb +1 -46
- data/test/unit/xml_object_test.rb +6 -6
- data/test/unit/xml_required_test.rb +3 -2
- data/test/unit/xml_text_test.rb +2 -2
- data/website/index.html +1 -1
- metadata +68 -51
- data/Manifest.txt +0 -106
- data/lib/roxml/extensions.rb +0 -6
- data/lib/roxml/extensions/array.rb +0 -13
- data/lib/roxml/extensions/array/conversions.rb +0 -35
- data/lib/roxml/extensions/deprecation.rb +0 -33
- data/lib/roxml/extensions/string.rb +0 -21
- data/lib/roxml/extensions/string/conversions.rb +0 -43
- data/lib/roxml/extensions/string/iterators.rb +0 -12
- data/lib/roxml/xml/parsers/rexml.rb +0 -84
- data/spec/string_spec.rb +0 -15
- data/test/bugs/rexml_bugs.rb +0 -15
- data/test/release/dependencies_test.rb +0 -32
- data/test/unit/xml_construct_test.rb +0 -77
- data/vendor/override_rake_task/README +0 -30
- data/vendor/override_rake_task/init.rb +0 -1
- data/vendor/override_rake_task/install.rb +0 -46
- data/vendor/override_rake_task/lib/override_rake_task.rb +0 -16
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec/spec_helper.rb'
|
2
|
+
|
3
|
+
describe ROXML, "#xml_namespaces" do
|
4
|
+
class Tires
|
5
|
+
include ROXML
|
6
|
+
|
7
|
+
xml_namespaces \
|
8
|
+
:bobsbike => 'http://bobsbikes.example.com',
|
9
|
+
:alicesauto => 'http://alicesautosupply.example.com/'
|
10
|
+
|
11
|
+
xml_reader :bike_tires, :as => [], :from => '@name', :in => 'bobsbike:tire'
|
12
|
+
xml_reader :car_tires, :as => [], :from => '@name', :in => 'alicesauto:tire'
|
13
|
+
end
|
14
|
+
|
15
|
+
before do
|
16
|
+
@xml = %{<?xml version="1.0"?>
|
17
|
+
<inventory xmlns="http://alicesautosupply.example.com/" xmlns:bike="http://bobsbikes.example.com">
|
18
|
+
<tire name="super slick racing tire" />
|
19
|
+
<tire name="all weather tire" />
|
20
|
+
<bike:tire name="skinny street" />
|
21
|
+
</inventory>
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should remap default namespaces" do
|
26
|
+
Tires.from_xml(@xml).car_tires.should =~ ['super slick racing tire', 'all weather tire']
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should remap prefix namespaces" do
|
30
|
+
Tires.from_xml(@xml).bike_tires.should == ['skinny street']
|
31
|
+
end
|
32
|
+
end
|
data/spec/xml/parser_spec.rb
CHANGED
@@ -1,47 +1,26 @@
|
|
1
|
-
require
|
1
|
+
require 'spec/spec_helper.rb'
|
2
2
|
|
3
3
|
describe ROXML::XML::Parser do
|
4
4
|
before do
|
5
5
|
# quiet the error handler
|
6
|
-
ROXML::XML::Error.reset_handler
|
6
|
+
ROXML::XML::Error.reset_handler if ROXML::XML::Error.respond_to?(:reset_handler)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should raise on malformed xml" do
|
10
|
-
|
10
|
+
unless ROXML::XML_PARSER == 'nokogiri' # nokogiri is less strict and auto-closes for some reason
|
11
|
+
proc { Book.from_xml(fixture(:book_malformed)) }.should raise_error(ROXML::XML::Error)
|
12
|
+
end
|
11
13
|
end
|
12
14
|
|
13
15
|
it "should escape invalid characters on output to text node" do
|
14
|
-
node = ROXML::XML::Node.
|
16
|
+
node = ROXML::XML::Node.create("entities")
|
15
17
|
node.content = " < > ' \" & "
|
16
|
-
|
17
|
-
node.to_s.should == "<entities> < > ' \" & </entities>"
|
18
|
-
else
|
19
|
-
node.to_s.should == "<entities> < > ' " & </entities>"
|
20
|
-
end
|
18
|
+
node.to_s.should == "<entities> < > ' \" & </entities>"
|
21
19
|
end
|
22
20
|
|
23
21
|
it "should esape invalid characters for attribute name" do
|
24
|
-
node = ROXML::XML::Node.
|
22
|
+
node = ROXML::XML::Node.create("attr_holder")
|
25
23
|
node.attributes["entities"] = "\"'<>&"
|
26
|
-
|
27
|
-
node.to_s.should == %{<attr_holder entities=""'<>&"/>}
|
28
|
-
else
|
29
|
-
node.to_s.should == %{<attr_holder entities='"'<>&'/>}
|
30
|
-
end
|
24
|
+
node.to_s.should == %{<attr_holder entities=""'<>&"/>}
|
31
25
|
end
|
32
26
|
end
|
33
|
-
|
34
|
-
describe ROXML::XML::Document do
|
35
|
-
describe "#save" do
|
36
|
-
context "with rexml parser" do
|
37
|
-
it "should defer to existing XMLDecl" do
|
38
|
-
if ROXML::XML_PARSER == 'rexml'
|
39
|
-
@doc = ROXML::XML::Document.new
|
40
|
-
@doc << REXML::XMLDecl.new('1.1')
|
41
|
-
@doc.save('spec/xml/decl_test.xml')
|
42
|
-
ROXML::XML::Parser.parse(File.read('spec/xml/decl_test.xml')).to_s.should == ROXML::XML::Parser.parse(%{<?xml version="1.1"?>}).to_s
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
data/tasks/rdoc.rake
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rake/rdoctask'
|
2
|
+
Rake::RDocTask.new do |rdoc|
|
3
|
+
if File.exist?('VERSION')
|
4
|
+
version = File.read('VERSION')
|
5
|
+
else
|
6
|
+
version = ""
|
7
|
+
end
|
8
|
+
|
9
|
+
rdoc.rdoc_dir = 'rdoc'
|
10
|
+
rdoc.title = "roxml-new #{version}"
|
11
|
+
rdoc.rdoc_files.include('README*')
|
12
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
13
|
+
end
|
data/tasks/rspec.rake
CHANGED
@@ -1,21 +1,25 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
require 'spec/rake/spectask'
|
2
|
+
desc "Run specs"
|
3
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
4
|
+
spec.libs << 'lib' << 'spec' << 'examples'
|
5
|
+
spec.spec_opts = ['--options', "spec/spec.opts"]
|
6
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
6
7
|
end
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
|
9
|
+
namespace :spec do
|
10
|
+
[:libxml, :nokogiri].each do |parser|
|
11
|
+
desc "Spec ROXML under the #{parser} parser"
|
12
|
+
Spec::Rake::SpecTask.new(parser) do |spec|
|
13
|
+
spec.libs << 'lib' << 'spec' << 'examples'
|
14
|
+
spec.spec_opts = ['--options=spec/spec.opts']
|
15
|
+
spec.spec_files = ["spec/support/#{parser}.rb"] + FileList['spec/**/*_spec.rb']
|
16
|
+
end
|
17
|
+
end
|
15
18
|
end
|
16
19
|
|
17
|
-
desc "Run
|
18
|
-
Spec::Rake::SpecTask.new do |
|
19
|
-
|
20
|
-
|
20
|
+
desc "Run specs with rcov"
|
21
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
22
|
+
spec.libs << 'lib' << 'spec'
|
23
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
24
|
+
spec.rcov = true
|
21
25
|
end
|
data/tasks/test.rake
CHANGED
@@ -1,42 +1,35 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
t.test_files = FileList['test/bugs/*_bugs.rb']
|
7
|
-
t.verbose = true
|
1
|
+
require 'rake/testtask'
|
2
|
+
Rake::TestTask.new(:bugs) do |test|
|
3
|
+
test.libs << 'lib' << 'test'
|
4
|
+
test.pattern = 'test/bugs/*_bugs.rb'
|
5
|
+
test.verbose = true
|
8
6
|
end
|
9
7
|
|
10
|
-
remove_task :test
|
11
8
|
desc "Test ROXML using the default parser selection behavior"
|
12
9
|
task :test do
|
13
|
-
module ROXML
|
14
|
-
SILENCE_XML_NAME_WARNING = true
|
15
|
-
end
|
16
|
-
require 'lib/roxml'
|
17
10
|
require 'rake/runtest'
|
18
|
-
Rake.run_tests
|
11
|
+
Rake.run_tests 'test/unit/*_test.rb'
|
19
12
|
end
|
20
13
|
|
21
14
|
namespace :test do
|
22
|
-
desc "Test ROXML under the
|
23
|
-
task :
|
15
|
+
desc "Test ROXML under the Nokogiri parser"
|
16
|
+
task :nokogiri do
|
24
17
|
module ROXML
|
25
|
-
XML_PARSER = '
|
18
|
+
XML_PARSER = 'nokogiri'
|
26
19
|
end
|
27
20
|
Rake::Task["test"].invoke
|
28
21
|
end
|
29
22
|
|
30
|
-
|
31
|
-
task :
|
23
|
+
desc "Test ROXML under the LibXML parser"
|
24
|
+
task :libxml do
|
32
25
|
module ROXML
|
33
|
-
XML_PARSER = '
|
26
|
+
XML_PARSER = 'libxml'
|
34
27
|
end
|
35
28
|
Rake::Task["test"].invoke
|
36
29
|
end
|
37
30
|
|
38
31
|
desc "Runs tests under RCOV"
|
39
32
|
task :rcov do
|
40
|
-
system "rcov -T --no-html -x '^/' #{FileList[
|
33
|
+
system "rcov -T --no-html -x '^/' #{FileList['test/unit/*_test.rb']}"
|
41
34
|
end
|
42
35
|
end
|
data/test/mocks/dictionaries.rb
CHANGED
@@ -4,14 +4,15 @@ class DictionaryOfAttrs
|
|
4
4
|
include ROXML
|
5
5
|
|
6
6
|
xml_name :dictionary
|
7
|
-
xml_reader :definitions,
|
7
|
+
xml_reader :definitions, :as => {:key => '@dt',
|
8
|
+
:value => '@dd'}, :in => :definitions
|
8
9
|
end
|
9
10
|
|
10
11
|
class DictionaryOfTexts
|
11
12
|
include ROXML
|
12
13
|
|
13
14
|
xml_name :dictionary
|
14
|
-
xml_reader :definitions, {:key => :word,
|
15
|
+
xml_reader :definitions, :as => {:key => :word,
|
15
16
|
:value => :meaning}
|
16
17
|
end
|
17
18
|
|
@@ -19,7 +20,7 @@ class DictionaryOfMixeds
|
|
19
20
|
include ROXML
|
20
21
|
|
21
22
|
xml_name :dictionary
|
22
|
-
xml_reader :definitions,
|
23
|
+
xml_reader :definitions, :as => {:key => '@word',
|
23
24
|
:value => :content}
|
24
25
|
end
|
25
26
|
|
@@ -27,7 +28,7 @@ class DictionaryOfNames
|
|
27
28
|
include ROXML
|
28
29
|
|
29
30
|
xml_name :dictionary
|
30
|
-
xml_reader :definitions, {:key => :name,
|
31
|
+
xml_reader :definitions, :as => {:key => :name,
|
31
32
|
:value => :content}
|
32
33
|
end
|
33
34
|
|
@@ -35,7 +36,7 @@ class DictionaryOfGuardedNames
|
|
35
36
|
include ROXML
|
36
37
|
|
37
38
|
xml_name :dictionary
|
38
|
-
xml_reader :definitions, {:key => :name,
|
39
|
+
xml_reader :definitions, :as => {:key => :name,
|
39
40
|
:value => :content}, :in => :definitions
|
40
41
|
end
|
41
42
|
|
@@ -43,7 +44,7 @@ class DictionaryOfNameClashes
|
|
43
44
|
include ROXML
|
44
45
|
|
45
46
|
xml_name :dictionary
|
46
|
-
xml_reader :definitions, {:key => 'name',
|
47
|
+
xml_reader :definitions, :as => {:key => 'name',
|
47
48
|
:value => 'content'}, :from => :definition
|
48
49
|
end
|
49
50
|
|
@@ -51,6 +52,6 @@ class DictionaryOfAttrNameClashes
|
|
51
52
|
include ROXML
|
52
53
|
|
53
54
|
xml_name :dictionary
|
54
|
-
xml_reader :definitions,
|
55
|
+
xml_reader :definitions, :as => {:key => '@name',
|
55
56
|
:value => 'content'}, :from => :definition
|
56
57
|
end
|
data/test/mocks/mocks.rb
CHANGED
@@ -15,7 +15,7 @@ end
|
|
15
15
|
class Numerology
|
16
16
|
include ROXML
|
17
17
|
|
18
|
-
xml_reader :predictions, {:
|
18
|
+
xml_reader :predictions, :as => {:key => '@number', :value => '@meaning'} do |k, v|
|
19
19
|
[Integer(k), v]
|
20
20
|
end
|
21
21
|
end
|
@@ -41,7 +41,7 @@ class Book
|
|
41
41
|
xml_reader :title
|
42
42
|
xml_reader :description, :cdata => true
|
43
43
|
xml_reader :author
|
44
|
-
xml_accessor :pages, :
|
44
|
+
xml_accessor :pages, :from => 'pagecount', :as => Integer
|
45
45
|
end
|
46
46
|
|
47
47
|
class BookWithRequired
|
@@ -49,8 +49,8 @@ class BookWithRequired
|
|
49
49
|
|
50
50
|
xml_accessor :isbn, :from => '@ISBN', :required => true
|
51
51
|
xml_reader :title, :required => true
|
52
|
-
xml_reader :contributors, [Contributor], :in => 'contributor_array', :required => true
|
53
|
-
xml_reader :contributor_hash, {:
|
52
|
+
xml_reader :contributors, :as => [Contributor], :in => 'contributor_array', :required => true
|
53
|
+
xml_reader :contributor_hash, :as => {:key => '@role', :value => '@name'},
|
54
54
|
:from => 'contributor', :in => 'contributor_hash', :required => true
|
55
55
|
end
|
56
56
|
|
@@ -107,7 +107,7 @@ class BookWithDepth
|
|
107
107
|
xml_reader :title
|
108
108
|
xml_reader :description, :cdata => true
|
109
109
|
xml_reader :author
|
110
|
-
xml_reader :depth, Measurement
|
110
|
+
xml_reader :depth, :as => Measurement
|
111
111
|
end
|
112
112
|
|
113
113
|
class Author
|
@@ -124,7 +124,7 @@ class BookWithAuthors
|
|
124
124
|
xml_reader :isbn, :from => '@ISBN'
|
125
125
|
xml_reader :title
|
126
126
|
xml_reader :description, :cdata => true
|
127
|
-
xml_reader :authors, []
|
127
|
+
xml_reader :authors, :as => []
|
128
128
|
end
|
129
129
|
|
130
130
|
class BookWithAuthorTextAttribute
|
@@ -134,7 +134,7 @@ class BookWithAuthorTextAttribute
|
|
134
134
|
xml_reader :isbn, :from => '@ISBN'
|
135
135
|
xml_reader :title
|
136
136
|
xml_reader :description, :cdata => true
|
137
|
-
xml_reader :author, Author
|
137
|
+
xml_reader :author, :as => Author
|
138
138
|
end
|
139
139
|
|
140
140
|
class BookWithContributions
|
@@ -144,7 +144,7 @@ class BookWithContributions
|
|
144
144
|
xml_reader :isbn, :from => :attr
|
145
145
|
xml_reader :title
|
146
146
|
xml_reader :description
|
147
|
-
xml_reader :contributions, [Contributor], :from => 'contributor', :in => "contributions"
|
147
|
+
xml_reader :contributions, :as => [Contributor], :from => 'contributor', :in => "contributions"
|
148
148
|
end
|
149
149
|
|
150
150
|
class BookWithContributors
|
@@ -154,7 +154,7 @@ class BookWithContributors
|
|
154
154
|
xml_reader :isbn, :from => :attr
|
155
155
|
xml_reader :title
|
156
156
|
xml_reader :description
|
157
|
-
xml_reader :contributors, [Contributor]
|
157
|
+
xml_reader :contributors, :as => [Contributor]
|
158
158
|
end
|
159
159
|
|
160
160
|
class WriteableBookWithContributors
|
@@ -164,7 +164,7 @@ class WriteableBookWithContributors
|
|
164
164
|
xml_accessor :isbn, :from => :attr
|
165
165
|
xml_accessor :title
|
166
166
|
xml_accessor :description
|
167
|
-
xml_accessor :contributors, [Contributor]
|
167
|
+
xml_accessor :contributors, :as => [Contributor]
|
168
168
|
end
|
169
169
|
|
170
170
|
class NamelessBook
|
@@ -173,7 +173,7 @@ class NamelessBook
|
|
173
173
|
xml_reader :isbn, :from => :attr
|
174
174
|
xml_reader :title
|
175
175
|
xml_reader :description
|
176
|
-
xml_reader :contributors, [Contributor]
|
176
|
+
xml_reader :contributors, :as => [Contributor]
|
177
177
|
end
|
178
178
|
|
179
179
|
class Publisher
|
@@ -189,7 +189,7 @@ class BookWithPublisher
|
|
189
189
|
xml_reader :isbn, :from => :attr
|
190
190
|
xml_reader :title
|
191
191
|
xml_reader :description
|
192
|
-
xml_reader :publisher, Publisher
|
192
|
+
xml_reader :publisher, :as => Publisher
|
193
193
|
end
|
194
194
|
|
195
195
|
class BookPair
|
@@ -199,14 +199,14 @@ class BookPair
|
|
199
199
|
xml_reader :title
|
200
200
|
xml_reader :description
|
201
201
|
xml_reader :author
|
202
|
-
xml_reader :book, Book
|
202
|
+
xml_reader :book, :as => Book
|
203
203
|
end
|
204
204
|
|
205
205
|
class Library
|
206
206
|
include ROXML
|
207
207
|
|
208
208
|
xml_reader :name
|
209
|
-
xml_reader :books, [BookWithContributions]
|
209
|
+
xml_reader :books, :as => [BookWithContributions]
|
210
210
|
end
|
211
211
|
|
212
212
|
class UppercaseLibrary
|
@@ -214,14 +214,14 @@ class UppercaseLibrary
|
|
214
214
|
|
215
215
|
xml_name :library
|
216
216
|
xml_reader :name, :from => 'NAME'
|
217
|
-
xml_reader :books, [BookWithContributions], :from => 'BOOK'
|
217
|
+
xml_reader :books, :as => [BookWithContributions], :from => 'BOOK'
|
218
218
|
end
|
219
219
|
|
220
220
|
class LibraryWithBooksOfUnderivableName
|
221
221
|
include ROXML
|
222
222
|
|
223
223
|
xml_accessor :name
|
224
|
-
xml_reader :novels, [NamelessBook]
|
224
|
+
xml_reader :novels, :as => [NamelessBook]
|
225
225
|
end
|
226
226
|
|
227
227
|
class NodeWithNameConflicts
|
@@ -247,7 +247,7 @@ class Person
|
|
247
247
|
xml_accessor :name, :from => :content, :else => 'Unknown'
|
248
248
|
|
249
249
|
def self.blank
|
250
|
-
|
250
|
+
new.tap do |instance|
|
251
251
|
instance.age = 21
|
252
252
|
instance.name = 'Unknown'
|
253
253
|
end
|
@@ -259,7 +259,7 @@ class PersonWithMother
|
|
259
259
|
|
260
260
|
xml_name :person
|
261
261
|
xml_reader :name
|
262
|
-
xml_reader :mother, PersonWithMother, :from => 'mother'
|
262
|
+
xml_reader :mother, :as => PersonWithMother, :from => 'mother'
|
263
263
|
end
|
264
264
|
|
265
265
|
class PersonWithGuardedMother
|
@@ -267,7 +267,7 @@ class PersonWithGuardedMother
|
|
267
267
|
|
268
268
|
xml_name :person
|
269
269
|
xml_reader :name
|
270
|
-
xml_reader :mother, PersonWithGuardedMother, :from => :person, :in => :mother
|
270
|
+
xml_reader :mother, :as => PersonWithGuardedMother, :from => :person, :in => :mother
|
271
271
|
end
|
272
272
|
|
273
273
|
class PersonWithMotherOrMissing
|
@@ -275,5 +275,5 @@ class PersonWithMotherOrMissing
|
|
275
275
|
|
276
276
|
xml_reader :age, :from => :attr, :else => 21
|
277
277
|
xml_reader :name, :else => 'Anonymous'
|
278
|
-
xml_reader :mother
|
278
|
+
xml_reader :mother,:as => PersonWithMotherOrMissing, :else => Person.blank
|
279
279
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,22 +1,11 @@
|
|
1
|
-
require
|
1
|
+
require 'rubygems'
|
2
2
|
require 'active_support/test_case'
|
3
3
|
require 'test/mocks/mocks'
|
4
4
|
require 'test/mocks/dictionaries'
|
5
|
-
|
6
|
-
def fixture(name)
|
7
|
-
File.read(fixture_path(name))
|
8
|
-
end
|
9
|
-
|
10
|
-
def xml_fixture(name)
|
11
|
-
ROXML::XML::Parser.parse_file(fixture_path(name)).root
|
12
|
-
end
|
13
|
-
|
14
|
-
def fixture_path(name)
|
15
|
-
"test/fixtures/#{name}.xml"
|
16
|
-
end
|
5
|
+
require 'test/support/fixtures'
|
17
6
|
|
18
7
|
def to_xml_test(*names)
|
19
|
-
names = names.first if names.
|
8
|
+
names = names.first if names.size == 1 && names.first.is_a?(Hash)
|
20
9
|
names.each do |name, xml_name|
|
21
10
|
xml_name ||= name
|
22
11
|
|