Use Layout from uh-layout as default
This commit is contained in:
parent
616b14eae2
commit
b9b2bff853
@ -26,6 +26,15 @@ module Uh
|
||||
!!@debug
|
||||
end
|
||||
|
||||
def layout
|
||||
@layout ||= if layout_class
|
||||
layout_class.new
|
||||
else
|
||||
require 'uh/layout'
|
||||
::Uh::Layout.new
|
||||
end
|
||||
end
|
||||
|
||||
def logger
|
||||
@logger ||= Logger.new(@output).tap do |o|
|
||||
o.level = debug? ? LOGGER_LEVEL_DEBUG :
|
||||
|
@ -10,14 +10,15 @@ module Uh
|
||||
end
|
||||
end
|
||||
|
||||
attr_reader :env, :events, :manager, :layout
|
||||
extend Forwardable
|
||||
def_delegator :@env, :layout
|
||||
|
||||
attr_reader :env, :events, :manager
|
||||
|
||||
def initialize env, manager: nil, stopped: false
|
||||
raise ArgumentError, 'missing env layout class' unless env.layout_class
|
||||
@env = env
|
||||
@events = Dispatcher.new
|
||||
@manager = manager || Manager.new(@events)
|
||||
@layout = @env.layout_class.new
|
||||
@stopped = stopped
|
||||
end
|
||||
|
||||
@ -58,7 +59,7 @@ module Uh
|
||||
|
||||
def register_layout_event_hooks
|
||||
@events.on(:connected) do |display|
|
||||
@layout.register display
|
||||
layout.register display
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -53,6 +53,24 @@ module Uh
|
||||
end
|
||||
end
|
||||
|
||||
describe '#layout' do
|
||||
context 'when a layout class is set' do
|
||||
let(:some_layout) { Class.new }
|
||||
|
||||
before { env.layout_class = some_layout }
|
||||
|
||||
it 'returns a new instance of this layout class' do
|
||||
expect(env.layout).to be_an_instance_of some_layout
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a layout class is not set' do
|
||||
it 'returns an instance of the default layout' do
|
||||
expect(env.layout).to be_an_instance_of ::Uh::Layout
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#logger' do
|
||||
it 'returns a logger' do
|
||||
expect(env.logger).to be_a Logger
|
||||
|
@ -55,17 +55,6 @@ module Uh
|
||||
it 'is not stopped' do
|
||||
expect(runner).not_to be_stopped
|
||||
end
|
||||
|
||||
it 'assigns a new layout instance' do
|
||||
expect(runner.layout).to be_an_instance_of SomeLayout
|
||||
end
|
||||
|
||||
context 'when the env has no layout set' do
|
||||
before { env.layout_class = nil }
|
||||
it 'raises an ArgumentError' do
|
||||
expect { runner }.to raise_error WM::ArgumentError
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#stopped?' do
|
||||
@ -101,7 +90,7 @@ module Uh
|
||||
|
||||
it 'registers layout hook for :connected event' do
|
||||
runner.register_event_hooks
|
||||
expect(runner.layout).to receive(:register).with :display
|
||||
expect(env.layout).to receive(:register).with :display
|
||||
runner.events.emit :connected, args: :display
|
||||
end
|
||||
|
||||
|
@ -15,6 +15,7 @@ Gem::Specification.new do |s|
|
||||
s.executables = s.files.grep(/\Abin\//) { |f| File.basename(f) }
|
||||
|
||||
s.add_dependency 'uh', '2.0.0.pre'
|
||||
s.add_dependency 'uh-layout', '0.2.0.pre'
|
||||
|
||||
s.add_development_dependency 'aruba', '~> 0.6'
|
||||
s.add_development_dependency 'cucumber', '~> 2.0'
|
||||
|
Loading…
x
Reference in New Issue
Block a user