Sha256: faa948910371e14dbb849450af0902580480433f259694bcb8a3c8ce13556b84

Contents?: true

Size: 915 Bytes

Versions: 5

Compression:

Stored size: 915 Bytes

Contents

require "test_helper"
require "dry/container"
require "trailblazer/operation/auto_inject"

class DryAutoInjectTest < Minitest::Spec
  my_container = Dry::Container.new
  my_container.register(:user_repository, -> { Object })

  AutoInject = Trailblazer::Operation::AutoInject(my_container)

  class Create < Trailblazer::Operation
    include AutoInject[:user_repository]

    pass :use_it!

    def use_it!(ctx, user_repository:, **)
      ctx[:my_repo] = user_repository
    end
  end

  it "auto-injects user_repository" do
    res = Create.(params: {})
    res[:user_repository].must_equal Object
    res[:my_repo].must_equal Object
  end

  it "allows dependency injection via ::call" do
    Create.(params: {}, user_repository: String)[:user_repository].must_equal String
  end

  describe "inheritance" do
    class Update < Create
    end

    it { Update.()[:user_repository].must_equal Object }
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
trailblazer-2.1.0.rc1 test/docs/auto_inject_test.rb
trailblazer-2.1.0.beta7 test/docs/auto_inject_test.rb
trailblazer-2.1.0.beta6 test/docs/auto_inject_test.rb
trailblazer-2.1.0.beta5 test/docs/auto_inject_test.rb
trailblazer-2.1.0.beta4 test/docs/auto_inject_test.rb