Handle Manager logging with events Dispatcher

This commit is contained in:
Thibault Jouan 2015-04-09 23:31:56 +00:00
parent 7b9854b499
commit d965fb2afd
4 changed files with 48 additions and 6 deletions

View File

@ -9,7 +9,9 @@ module Uh
end
def connect
@events.emit :display, :connecting, args: @display
@display.open
@events.emit :display, :connected, args: @display
end
def grab_key keysym

View File

@ -28,12 +28,12 @@ module Uh
end
def register_event_hooks
register_manager_hooks
register_key_bindings_hooks
end
def connect_manager
@manager.connect
@env.log "Connected to X server"
@manager.grab_key :q
end
@ -44,6 +44,15 @@ module Uh
private
def register_manager_hooks
@events.on(:display, :connecting) do |display|
@env.log_debug "Connecting to X server on `#{display}'"
end
@events.on(:display, :connected) do |display|
@env.log "Connected to X server on `#{display}'"
end
end
def register_key_bindings_hooks
@events.on(:key, :q) { stop! }
end

View File

@ -12,10 +12,38 @@ module Uh
end
describe '#connect' do
let(:block) { proc { } }
it 'opens the display' do
expect(manager.display).to receive :open
manager.connect
end
it 'emits :display, :connecting event with the display' do
events.on :display, :connecting, &block
expect(block).to receive(:call) do |*args|
expect(args).to eq [display]
end
manager.connect
end
it 'emits :display, :connected event with the display' do
events.on :display, :connected, &block
expect(block).to receive(:call) do |*args|
expect(args).to eq [display]
end
manager.connect
end
context 'when connection fails' do
before { allow(display).to receive(:open) { fail } }
it 'does not emit :display, :connected event' do
events.on :display, :connected, &block
expect(block).not_to receive :call
manager.connect rescue nil
end
end
end
describe '#grab_key' do

View File

@ -76,6 +76,14 @@ module Uh
end
describe '#register_event_hooks' do
context 'manager' do
it 'registers manager event hooks' do
runner.register_event_hooks
expect(runner.events[:display, :connecting]).not_to be_empty
expect(runner.events[:display, :connected]).not_to be_empty
end
end
context 'key bindings' do
it 'registers key bindings event hooks' do
runner.register_event_hooks
@ -93,11 +101,6 @@ module Uh
runner.connect_manager
end
it 'logs a message when connected' do
expect(env).to receive(:log).with /connected/i
runner.connect_manager
end
it 'tells the manager to grab keys' do
expect(runner.manager).to receive(:grab_key).with :q
runner.connect_manager