Implement Client#kill and Client#kill!

This commit is contained in:
Thibault Jouan
2015-04-28 11:52:15 +00:00
parent 4050d52af7
commit f26e16fe6e
3 changed files with 50 additions and 3 deletions

View File

@@ -17,11 +17,12 @@ module Factories
modifier_mask: modifier_mask
end
def mock_window override_redirect: false
def mock_window override_redirect: false, icccm_wm_protocols: []
instance_spy Uh::Window, 'window',
to_s: 'wid',
name: 'wname',
wclass: 'wclass',
override_redirect?: override_redirect
override_redirect?: override_redirect,
icccm_wm_protocols: icccm_wm_protocols
end
end

View File

@@ -1,7 +1,8 @@
module Uh
module WM
RSpec.describe Client do
let(:window) { mock_window }
let(:protocols) { [] }
let(:window) { mock_window icccm_wm_protocols: protocols }
let(:geo) { build_geo }
subject(:client) { described_class.new window, geo }
@@ -143,6 +144,37 @@ module Uh
expect(client.focus).to be client
end
end
describe '#kill' do
it 'kills the window' do
expect(window).to receive :kill
client.kill
end
it 'returns self' do
expect(client.kill).to be client
end
context 'when window supports icccm wm delete' do
let(:protocols) { [:WM_DELETE_WINDOW] }
it 'icccm deletes the window' do
expect(window).to receive :icccm_wm_delete
client.kill
end
end
end
describe '#kill!' do
it 'kills the window' do
expect(window).to receive :kill
client.kill!
end
it 'returns self' do
expect(client.kill!).to be client
end
end
end
end
end