Sha256: 3fe486d14fe1cb0ee73df65d94604963478c710c2dde9cf68eeef48912697d2d
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
require 'spec_helper' module XML module MappingExtensions class MyEnum include Ruby::Enum define :FOO, 'foo' define :BAR, 'bar' end class MyEnumNode < EnumNodeBase ENUM_CLASS = MyEnum end ::XML::Mapping.add_node_class(MyEnumNode) class EnumNodeBaseSpecElem include ::XML::Mapping my_enum_node :my_enum, '@my_enum', default_value: nil def self.from_str(enum_str) xml_string = enum_str ? "<elem my_enum='#{enum_str}'/>" : '<elem/>' doc = REXML::Document.new(xml_string) load_from_xml(doc.root) end end describe EnumNodeBase do def to_my_enum(str) EnumNodeBaseSpecElem.from_str(str).my_enum end def to_text(enum) elem = EnumNodeBaseSpecElem.new elem.my_enum = enum xml = elem.save_to_xml xml.attributes['my_enum'] end it 'parses an enum value' do expect(to_my_enum('foo')).to eq(MyEnum::FOO) end it 'transforms an enum to a string' do expect(to_text(MyEnum::BAR)).to eq('bar') end it 'parses a missing value as nil' do expect(to_my_enum(nil)).to be_nil end it 'doesn\'t set an attribute for a nil value' do expect(to_text(nil)).to be_nil end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
xml-mapping_extensions-0.1.1 | spec/unit/xml/mapping_extensions/enum_node_base_spec.rb |
xml-mapping_extensions-0.1.0 | spec/unit/xml/mapping_extensions/enum_node_base_spec.rb |