114 lines
2.7 KiB
Ruby
114 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe "Settings / Component loading", :app_integration do
|
|
describe "Settings are loaded from a class defined in config/settings.rb" do
|
|
specify "in app" do
|
|
with_directory(make_tmp_directory) do
|
|
write "config/app.rb", <<~'RUBY'
|
|
require "hanami"
|
|
|
|
module TestApp
|
|
class App < Hanami::App
|
|
end
|
|
end
|
|
RUBY
|
|
|
|
write "config/settings.rb", <<~'RUBY'
|
|
module TestApp
|
|
class Settings < Hanami::Settings
|
|
setting :foo
|
|
end
|
|
end
|
|
RUBY
|
|
|
|
require "hanami/prepare"
|
|
|
|
expect(Hanami.app["settings"]).to be_an_instance_of TestApp::Settings
|
|
expect(Hanami.app["settings"]).to respond_to :foo
|
|
end
|
|
end
|
|
|
|
specify "in slice" do
|
|
with_directory(make_tmp_directory) do
|
|
write "config/app.rb", <<~'RUBY'
|
|
require "hanami"
|
|
|
|
module TestApp
|
|
class App < Hanami::App
|
|
end
|
|
end
|
|
RUBY
|
|
|
|
write "slices/main/config/settings.rb", <<~'RUBY'
|
|
module Main
|
|
class Settings < Hanami::Settings
|
|
setting :foo
|
|
end
|
|
end
|
|
RUBY
|
|
|
|
require "hanami/prepare"
|
|
|
|
expect(Main::Slice["settings"]).to be_an_instance_of Main::Settings
|
|
expect(Main::Slice["settings"]).to respond_to :foo
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "Settings are loaded from a `Settings` class if already defined" do
|
|
specify "in app" do
|
|
with_directory(make_tmp_directory) do
|
|
write "config/app.rb", <<~'RUBY'
|
|
require "hanami"
|
|
require "hanami/settings"
|
|
|
|
module TestApp
|
|
class App < Hanami::App
|
|
end
|
|
|
|
class Settings < Hanami::Settings
|
|
setting :foo
|
|
end
|
|
end
|
|
RUBY
|
|
|
|
require "hanami/prepare"
|
|
|
|
expect(Hanami.app["settings"]).to be_an_instance_of TestApp::Settings
|
|
expect(Hanami.app["settings"]).to respond_to :foo
|
|
end
|
|
end
|
|
|
|
specify "in slice" do
|
|
with_directory(make_tmp_directory) do
|
|
write "config/app.rb", <<~'RUBY'
|
|
require "hanami"
|
|
|
|
module TestApp
|
|
class App < Hanami::App
|
|
end
|
|
end
|
|
RUBY
|
|
|
|
write "config/slices/main.rb", <<~'RUBY'
|
|
require "hanami/settings"
|
|
|
|
module Main
|
|
class Slice < Hanami::Slice
|
|
end
|
|
|
|
class Settings < Hanami::Settings
|
|
setting :foo
|
|
end
|
|
end
|
|
RUBY
|
|
|
|
require "hanami/prepare"
|
|
|
|
expect(Main::Slice["settings"]).to be_an_instance_of Main::Settings
|
|
expect(Main::Slice["settings"]).to respond_to :foo
|
|
end
|
|
end
|
|
end
|
|
end
|