hanami/spec/integration/container/shutdown_spec.rb

92 lines
2.1 KiB
Ruby

# frozen_string_literal: true
RSpec.describe "App shutdown", :app_integration do
specify "App shutdown stops providers in both the app and slices" do
with_tmp_directory(Dir.mktmpdir) do
write "config/app.rb", <<~RUBY
# frozen_string_literal: true
require "hanami"
module TestApp
class App < Hanami::App
end
end
RUBY
write "config/providers/connection.rb", <<~RUBY
# frozen_string_literal: true
Hanami.app.register_provider :connection do
prepare do
module TestApp
class Connection
attr_reader :connected
def initialize
@connected = true
end
def disconnect
@connected = false
end
end
end
end
start do
register("connection", TestApp::Connection.new)
end
stop do
container["connection"].disconnect
end
end
RUBY
write "slices/main/config/providers/connection.rb", <<~RUBY
# frozen_string_literal: true
Main::Slice.register_provider :connection do
prepare do
module Main
class Connection
attr_reader :connected
def initialize
@connected = true
end
def disconnect
@connected = false
end
end
end
end
start do
register "connection", Main::Connection.new
end
stop do
container["connection"].disconnect
end
end
RUBY
require "hanami/boot"
app_connection = Hanami.app["connection"]
slice_connection = Main::Slice["connection"]
expect(app_connection.connected).to be true
expect(slice_connection.connected).to be true
Hanami.shutdown
expect(app_connection.connected).to be false
expect(slice_connection.connected).to be false
end
end
end