[core] Add test for Fog::Parsers::Base

Test multiline and nested values.
This commit is contained in:
Aaron Suggs 2011-05-12 17:43:47 -04:00
parent 27bf76d1f8
commit ff72d4c647
1 changed files with 67 additions and 0 deletions

View File

@ -0,0 +1,67 @@
Shindo.tests('Fog::Parsers', 'core') do
class TestParser < Fog::Parsers::Base
def reset
super
reset_my_array
end
def reset_my_array
@my_array = []
end
def end_element(name)
case name
when 'key1', 'key2', 'key3', 'longText'
@response[name] = value
when 'myArray'
@response[name] = @my_array
reset_my_array
when 'id'
@my_array << value.to_i
end
end
end
@xml = %{
<MyResponse>
<MyObject>
<key1>value1</key1>
<key2>value2</key2>
<myArray>
<id>1</id>
<id>2</id>
<id>3</id>
</myArray>
<longText>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec quis metus arcu, quis cursus turpis.
Aliquam leo lacus, luctus vel iaculis id,
posuere eu odio. Donec sodales, ante porta condimentum
</longText>
<key3>value3</key3>
</MyObject>
<MyResponse>
}
@response = {
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
'myArray' => [1,2,3],
'longText' => %{
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec quis metus arcu, quis cursus turpis.
Aliquam leo lacus, luctus vel iaculis id,
posuere eu odio. Donec sodales, ante porta condimentum
}
}
tests('TestParser').returns(@response) do
test_parser = TestParser.new
Nokogiri::XML::SAX::Parser.new(test_parser).parse(@xml)
test_parser.response
end
end