Sha256: 44753a8d3422050d70d0474cf5706cb38a5641b9a07115a7d5cde753e909f34c

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

require 'spec_helper'

describe Transproc::ClassTransformations do
  describe '.constructor_inject' do
    let(:klass) do
      Struct.new(:name, :age) { include Equalizer.new(:name, :age) }
    end

    it 'returns a new object initialized with the given arguments' do
      constructor_inject = t(:constructor_inject, klass)

      input = ['Jane', 25]
      output = klass.new(*input)
      result = constructor_inject[*input]

      expect(result).to eql(output)
      expect(result).to be_instance_of(klass)
    end
  end

  describe '.set_ivars' do
    let(:klass) do
      Class.new do
        include Anima.new(:name, :age)

        attr_reader :test

        def initialize(*args)
          super
          @test = true
        end
      end
    end

    it 'allocates a new object and sets instance variables from hash key/value pairs' do
      set_ivars = t(:set_ivars, klass)

      input = { name: 'Jane', age: 25 }
      output = klass.new(input)
      result = set_ivars[input]

      expect(result).to eql(output)
      expect(result.test).to be(nil)
      expect(result).to be_instance_of(klass)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
transproc-0.2.4 spec/unit/class_transformations_spec.rb
transproc-0.2.3 spec/unit/class_transformations_spec.rb
transproc-0.2.2 spec/unit/class_transformations_spec.rb
transproc-0.2.1 spec/unit/class_transformations_spec.rb