Sha256: 536ab70b9da2bb1ac58708411657a3aec4e163f043d8accd250e466bf49fb2cf

Contents?: true

Size: 913 Bytes

Versions: 10

Compression:

Stored size: 913 Bytes

Contents

require 'spec_helper'

describe Monolens, 'coerce.date' do
  subject do
    Monolens.lens('coerce.date' => { formats: ['%d/%m/%Y'] })
  end

  it 'returns Date objects unchanged (idempotency)' do
    input = Date.today
    expect(subject.call(input)).to be(input)
  end

  it 'coerces valid dates' do
    expect(subject.call('11/12/2022')).to eql(Date.parse('2022-12-11'))
  end

  describe 'error handling' do
    let(:lens) do
      Monolens.lens({
        'array.map' => {
          :lenses => 'coerce.date'
        }
      })
    end

    subject do
      begin
        lens.call(input)
        nil
      rescue Monolens::LensError => ex
        ex
      end
    end

    let(:input) do
      ['invalid']
    end

    it 'fails on invalid dates' do
      expect(subject).to be_a(Monolens::LensError)
    end

    it 'properly sets the location' do
      expect(subject.location).to eql([0])
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
monolens-0.6.4 spec/monolens/stdlib/coerce/test_date.rb
monolens-0.6.3 spec/monolens/stdlib/coerce/test_date.rb
monolens-0.6.2 spec/monolens/stdlib/coerce/test_date.rb
monolens-0.6.1 spec/monolens/stdlib/coerce/test_date.rb
monolens-0.6.0 spec/monolens/stdlib/coerce/test_date.rb
monolens-0.5.3 spec/monolens/coerce/test_date.rb
monolens-0.5.2 spec/monolens/coerce/test_date.rb
monolens-0.5.1 spec/monolens/coerce/test_date.rb
monolens-0.5.0 spec/monolens/coerce/test_date.rb
monolens-0.4.0 spec/monolens/coerce/test_date.rb