Implement basic Runner

This commit is contained in:
Thibault Jouan 2015-04-08 17:35:27 +00:00
parent cd76c4e270
commit ea0034fd7e
3 changed files with 71 additions and 0 deletions

View File

@ -3,6 +3,7 @@ require 'uh'
require 'uh/wm/cli'
require 'uh/wm/env'
require 'uh/wm/manager'
require 'uh/wm/runner'
module Uh
module WM

24
lib/uh/wm/runner.rb Normal file
View File

@ -0,0 +1,24 @@
module Uh
module WM
class Runner
class << self
def run env
runner = new env
runner.connect_manager
end
end
attr_reader :env, :manager
def initialize env
@env = env
@manager = Manager.new
end
def connect_manager
@manager.connect
@env.log "Connected to X server"
end
end
end
end

46
spec/uh/wm/runner_spec.rb Normal file
View File

@ -0,0 +1,46 @@
module Uh
module WM
RSpec.describe Runner do
let(:env) { Env.new(StringIO.new) }
subject(:runner) { described_class.new env }
describe '.run' do
subject(:run) { described_class.run env }
it 'builds a new Runner with given env' do
expect(described_class).to receive(:new).with(env).and_call_original
run
end
it 'connects the manager' do
runner
allow(described_class).to receive(:new) { runner }
expect(runner).to receive(:connect_manager)
run
end
end
describe '#initialize' do
it 'assigns the env' do
expect(runner.env).to be env
end
it 'assigns a new Manager' do
expect(runner.manager).to be_a Manager
end
end
describe '#connect_manager' do
it 'connects the manager' do
expect(runner.manager).to receive :connect
runner.connect_manager
end
it 'logs a message when connected' do
expect(env).to receive(:log).with /connected/i
runner.connect_manager
end
end
end
end
end