Sha256: cfe1a495df7520921c6bc8bfe1264608afe9cedb866b5e2a4d1e2d6c5ab7bce3

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

require 'spec_helper'

module XML
  module MappingExtensions
    class DateNodeSpecElem
      include ::XML::Mapping
      date_node :date, '@date', default_value: nil

      def self.from_str(date_str)
        xml_string = "<elem date='#{date_str}'/>"
        doc = REXML::Document.new(xml_string)
        load_from_xml(doc.root)
      end
    end
    describe DateNode do

      def to_date(str)
        DateNodeSpecElem.from_str(str).date
      end

      def to_text(date)
        elem = DateNodeSpecElem.new
        elem.date = date
        xml = elem.save_to_xml
        xml.attributes['date']
      end

      it 'parses a date' do
        actual = to_date('2002-09-24')
        expected = Date.new(2002, 9, 24)
        expect(actual).to eq(expected)
      end

      it 'parses a UTC "zulu" date (time zone designator "Z")' do
        actual = to_date('2002-09-24Z')
        expected = Date.new(2002, 9, 24)
        expect(actual).to eq(expected)
      end

      it 'parses a date with a numeric timezone offset' do
        actual = to_date('2002-09-24-06:00')
        expected = Date.new(2002, 9, 24)
        expect(actual).to eq(expected)
      end

      it 'outputs a date' do
        expected = '2002-09-24'
        actual = to_text(Date.new(2002, 9, 24))
        expect(actual).to eq(expected)
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
xml-mapping_extensions-0.1.0 spec/unit/xml/mapping_extensions/date_node_spec.rb