Sha256: 19b0c8a7f64bad4ba20a4b90752a399f673111f5a7b906161ceddf7d6f0c0e55

Contents?: true

Size: 993 Bytes

Versions: 4

Compression:

Stored size: 993 Bytes

Contents

require "test_helper"
require "dry/container"

class DryContainerTest < Minitest::Spec
  Song = Struct.new(:id, :title)

  class MyContract < Reform::Form
    property :title
    validates :title, length: 2..33
  end

  my_container = Dry::Container.new
  my_container.register("contract.default.class", MyContract)
  # my_container.namespace("contract") do
  #   register("create") { Array }
  # end

  #---
  #- dependency injection
  #- with Dry-container
  class Create < Trailblazer::Operation
    step Model( Song, :new )
    step Contract::Build()
    step Contract::Validate()
    step Contract::Persist( method: :sync )
  end
  #:key end

  it { Create.({ params: { title: "A" } }, my_container).inspect(:model).must_equal %{<Result:false [#<struct DryContainerTest::Song id=nil, title=nil>] >} }
  it { Create.({ params: { title: "Anthony's Song" } }, my_container).inspect(:model).must_equal %{<Result:true [#<struct DryContainerTest::Song id=nil, title="Anthony's Song">] >} }
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
trailblazer-macro-contract-2.1.0.rc1 test/docs/dry_test.rb
trailblazer-macro-contract-2.1.0.beta4 test/docs/dry_test.rb
trailblazer-macro-contract-2.1.0.beta3 test/docs/dry_test.rb
trailblazer-macro-contract-2.1.0.beta2 test/docs/dry_test.rb