Sha256: 081e01d94f0551709becdd1f19c2d9b3d34aef4350c212474eff51c61aab1db6

Contents?: true

Size: 1.41 KB

Versions: 6

Compression:

Stored size: 1.41 KB

Contents

require 'test_helper'

module Vedeu

  class TestClass
    include Coercions

    attr_reader :attributes

    def initialize(attributes = {})
      @attributes = attributes
      @name       = attributes[:name]
    end
  end # TestClass

  describe Coercions do

    describe '.coercer' do
      [nil, [], {}].each do |empty_value|
        it 'returns an empty collection when nil or empty' do
          TestClass.coercer(empty_value).must_equal([])
        end
      end

      it 'returns when an object' do
        klass = TestClass.new

        TestClass.coercer([klass]).must_equal([klass])
      end

      it 'returns a collection of models when a single hash' do
        coerced = TestClass.coercer({ :name => 'test1' })
        coerced.must_be_instance_of(Array)
        coerced.first.attributes.must_equal({ name: "test1" })
      end

      it 'returns a collection of models when multiple hashes' do
        coerced = TestClass.coercer([
          { :name => 'test1' }, { :name => 'test2' }
        ])
        coerced.size.must_equal(2)
        coerced.map(&:attributes).must_equal(
          [{ name: "test1" }, { name: "test2" }]
        )
      end

      it 'returns a collection of models when a single array' do
        coerced = TestClass.coercer([{ :name => 'test3' }])
        coerced.size.must_equal(1)
        coerced.first.attributes.must_equal({ name: "test3" })
      end
    end

  end # Coercions

end # Vedeu

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
vedeu-0.2.10 test/lib/vedeu/support/coercions_test.rb
vedeu-0.2.9 test/lib/vedeu/support/coercions_test.rb
vedeu-0.2.8 test/lib/vedeu/support/coercions_test.rb
vedeu-0.2.7 test/lib/vedeu/support/coercions_test.rb
vedeu-0.2.6 test/lib/vedeu/support/coercions_test.rb
vedeu-0.2.5 test/lib/vedeu/support/coercions_test.rb