Handle Manager logging with events Dispatcher
This commit is contained in:
parent
7b9854b499
commit
d965fb2afd
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user