Sha256: d2baf8bc8cd2217ab94251e30f354a1116c4870d9f97267eb934a591a49be6db

Contents?: true

Size: 847 Bytes

Versions: 4

Compression:

Stored size: 847 Bytes

Contents

# BUNDLE_GEMFILE=Gemfile_builder_test.rb be rake test_builder

require "test_helper"

require "disposable/twin/builder"

class BuilderTest < MiniTest::Spec
  module Model
    Song = Struct.new(:id, :title)
    Hit = Struct.new(:id, :title)
    Evergreen = Struct.new(:id, :title)
  end

  class Twin < Disposable::Twin
    property :id
    property :title
    # option   :is_released

    include Builder
    builds ->(model, options) do
      return Hit       if model.is_a? Model::Hit
      return Evergreen if options[:evergreen]
    end
  end

  class Hit < Twin
  end

  class Evergreen < Twin
  end


  it { expect(Twin.build(Model::Song.new)).must_be_instance_of Twin }
  it { expect(Twin.build(Model::Hit.new)).must_be_instance_of  Hit }
  it { expect(Twin.build(Model::Evergreen.new, evergreen: true)).must_be_instance_of Evergreen }
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
disposable-0.6.3 test/twin/builder_test.rb
disposable-0.6.2 test/twin/builder_test.rb
disposable-0.6.1 test/twin/builder_test.rb
disposable-0.6.0 test/twin/builder_test.rb