Sha256: 181614be7c7fa3a1e2edb635e00bee2794d2a949088ceb3df065838ed4df098d

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require "dry/operation"

RSpec.describe "Operation / Extensions", :app_integration do
  before do
    @env = ENV.to_h
    allow(Hanami::Env).to receive(:loaded?).and_return(false)
  end

  after { ENV.replace(@env) }

  specify "Transaction interface is made available automatically" do
    with_tmp_directory(Dir.mktmpdir) do
      write "config/app.rb", <<~RUBY
        require "hanami"

        module TestApp
          class App < Hanami::App
          end
        end
      RUBY

      write "app/operation.rb", <<~RUBY
        module TestApp
          class Operation < Dry::Operation
          end
        end
      RUBY

      write "slices/main/operation.rb", <<~RUBY
        module Main
          class Operation < Dry::Operation
          end
        end
      RUBY

      write "db/.keep", ""
      write "app/relations/.keep", ""

      write "slices/main/db/.keep", ""
      write "slices/main/relations/.keep", ""

      ENV["DATABASE_URL"] = "sqlite::memory"
      ENV["MAIN__DATABASE_URL"] = "sqlite::memory"

      require "hanami/prepare"

      app = TestApp::Operation.new
      main = Main::Operation.new

      expect(app).to respond_to(:transaction)

      expect(app.rom).to be TestApp::App["db.rom"]
      expect(app.rom).not_to be Main::Slice["db.rom"]
      expect(main.rom).to be Main::Slice["db.rom"]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
hanami-2.2.1 spec/integration/operations/extension_spec.rb
hanami-2.2.0 spec/integration/operations/extension_spec.rb
hanami-2.2.0.rc1 spec/integration/operations/extension_spec.rb