require "dry-monads" require "dry-auto_inject" RSpec.describe "Using dry-auto_inject" do let(:transaction) { Class.new do include Dry::Transaction(container: Test::Container) include Test::Inject[:extract_email] step :symbolize def call(input) super(input).bind(extract_email) end end.new } before do module Test Container = { symbolize: -> input { Dry::Monads::Right(name: input["name"], email: input["email"]) }, extract_email: -> input { Dry::Monads::Right(email: input[:email]) }, } Inject = Dry::AutoInject(container: Container) end end it "support auto-injection of dependencies alongside step operations" do expect(transaction.("name" => "Jane", "email" => "jane@example.com").value).to eq(email: "jane@example.com") end end