Sha256: edbd26f61d07173357703ee1513aa19ea84d102c04aab9eacd38d0a7908414ac

Contents?: true

Size: 1.61 KB

Versions: 5

Compression:

Stored size: 1.61 KB

Contents

require 'spec_helper'

describe Acfs::Resource::Attributes::DateTime do
  let(:model) { Class.new Acfs::Resource }
  let(:params) { {} }
  subject { Acfs::Resource::Attributes::DateTime.new params }

  describe 'cast' do
    it 'should return same object, if obj is already of DateTime class' do
      date_time = DateTime.now
      retval = subject.cast(date_time)
      expect(retval).to be == date_time
    end

    it 'should return parsed object, if obj is of Time class' do
      time = Time.now
      retval = subject.cast(time)
      expect(retval).to be == DateTime.iso8601(time.iso8601)
    end

    it 'should return parsed object, if obj is of Date class' do
      date = Date.today
      retval = subject.cast(date)
      expect(retval).to be == DateTime.iso8601(date.iso8601)
    end

    it 'should return parsed object, if obj is of String class in ISO-8601 format' do
      date_time_string = DateTime.now.iso8601
      retval = subject.cast(date_time_string)
      expect(retval).to be == DateTime.iso8601(date_time_string)
    end

    it 'should raise an error if obj is of String class not in valid ISO-8601 format' do
      malformed_string = 'qwe123'
      expect do
        subject.cast(malformed_string)
      end.to raise_error ArgumentError
    end

    it 'should raise an error if obj is of wrong class (Fixnum)' do
      fixnum = 12
      expect do
        subject.cast(fixnum)
      end.to raise_error TypeError
    end

    context 'with allow_nil option' do
      let(:params) { {allow_nil: true} }

      it 'should accept empty string as nil' do
        expect(subject.cast('')).to eq nil
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
acfs-0.45.0 spec/acfs/resource/attributes/date_time_spec.rb
acfs-0.44.0 spec/acfs/resource/attributes/date_time_spec.rb
acfs-0.43.2 spec/acfs/resource/attributes/date_time_spec.rb
acfs-0.43.1 spec/acfs/resource/attributes/date_time_spec.rb
acfs-0.43.0 spec/acfs/resource/attributes/date_time_spec.rb