Instantiate and assign a Layout in the Runner

This commit is contained in:
Thibault Jouan 2015-04-10 07:11:29 +00:00
parent b65e989c38
commit a848e6b936
2 changed files with 20 additions and 3 deletions

View File

@ -10,12 +10,14 @@ module Uh
end end
end end
attr_reader :env, :events, :manager attr_reader :env, :events, :manager, :layout
def initialize env, manager: nil, stopped: false def initialize env, manager: nil, stopped: false
raise ArgumentError, 'missing env layout class' unless env.layout_class
@env = env @env = env
@events = Dispatcher.new @events = Dispatcher.new
@manager = manager || Manager.new(@events) @manager = manager || Manager.new(@events)
@layout = @env.layout_class.new
@stopped = stopped @stopped = stopped
end end

View File

@ -1,7 +1,11 @@
SomeLayout = Class.new
module Uh module Uh
module WM module WM
RSpec.describe Runner do RSpec.describe Runner do
let(:env) { Env.new(StringIO.new) } let(:env) do
Env.new(StringIO.new).tap { |o| o.layout_class = SomeLayout }
end
subject(:runner) { described_class.new env } subject(:runner) { described_class.new env }
describe '.run' do describe '.run' do
@ -49,6 +53,17 @@ module Uh
it 'is not stopped' do it 'is not stopped' do
expect(runner).not_to be_stopped expect(runner).not_to be_stopped
end 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 end
describe '#stopped?' do describe '#stopped?' do