commit
96f8e92822
1 changed files with 154 additions and 0 deletions
|
@ -1,5 +1,159 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
import util.cli
|
||||||
|
import core.config
|
||||||
|
import modules.contrib.amixer
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def module_mock(request):
|
||||||
|
def _module_mock(config = []):
|
||||||
|
return modules.contrib.amixer.Module(
|
||||||
|
config=core.config.Config(config),
|
||||||
|
theme=None
|
||||||
|
)
|
||||||
|
|
||||||
|
yield _module_mock
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def amixer_mock():
|
||||||
|
def _mock(device='Master', volume='10%', state='on'):
|
||||||
|
return """
|
||||||
|
Simple mixer control '{device}',0
|
||||||
|
Capabilities: pvolume pswitch pswitch-joined
|
||||||
|
Playback channels: Front Left - Front Right
|
||||||
|
Limits: Playback 0 - 65536
|
||||||
|
Mono:
|
||||||
|
Front Left: Playback 55705 [{volume}%] [{state}]
|
||||||
|
Front Right: Playback 55705 [{volume}%] [{state}]
|
||||||
|
""".format(
|
||||||
|
device=device,
|
||||||
|
volume=volume,
|
||||||
|
state=state
|
||||||
|
)
|
||||||
|
|
||||||
|
return _mock
|
||||||
|
|
||||||
def test_load_module():
|
def test_load_module():
|
||||||
__import__("modules.contrib.amixer")
|
__import__("modules.contrib.amixer")
|
||||||
|
|
||||||
|
def test_initial_full_text(module_mock, amixer_mock, mocker):
|
||||||
|
module = module_mock()
|
||||||
|
assert module.widget().full_text() == 'n/a'
|
||||||
|
|
||||||
|
def test_input_registration(mocker):
|
||||||
|
input_register = mocker.patch('core.input.register')
|
||||||
|
|
||||||
|
module = modules.contrib.amixer.Module(
|
||||||
|
config=core.config.Config([]),
|
||||||
|
theme=None
|
||||||
|
)
|
||||||
|
|
||||||
|
input_register.assert_any_call(
|
||||||
|
module,
|
||||||
|
button=core.input.WHEEL_DOWN,
|
||||||
|
cmd=module.decrease_volume
|
||||||
|
)
|
||||||
|
|
||||||
|
input_register.assert_any_call(
|
||||||
|
module,
|
||||||
|
button=core.input.WHEEL_UP,
|
||||||
|
cmd=module.increase_volume
|
||||||
|
)
|
||||||
|
|
||||||
|
input_register.assert_any_call(
|
||||||
|
module,
|
||||||
|
button=core.input.LEFT_MOUSE,
|
||||||
|
cmd=module.toggle
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_volume_update(module_mock, amixer_mock, mocker):
|
||||||
|
mocker.patch(
|
||||||
|
'util.cli.execute',
|
||||||
|
return_value=amixer_mock(volume='25%', state='on')
|
||||||
|
)
|
||||||
|
|
||||||
|
module = module_mock()
|
||||||
|
widget = module.widget()
|
||||||
|
|
||||||
|
module.update()
|
||||||
|
assert widget.full_text() == '25%'
|
||||||
|
assert module.state(widget) == ['unmuted']
|
||||||
|
|
||||||
|
def test_muted_update(module_mock, amixer_mock, mocker):
|
||||||
|
mocker.patch(
|
||||||
|
'util.cli.execute',
|
||||||
|
return_value=amixer_mock(volume='50%', state='off')
|
||||||
|
)
|
||||||
|
|
||||||
|
module = module_mock()
|
||||||
|
widget = module.widget()
|
||||||
|
|
||||||
|
module.update()
|
||||||
|
assert widget.full_text() == '50%'
|
||||||
|
assert module.state(widget) == ['warning', 'muted']
|
||||||
|
|
||||||
|
def test_exception_update(module_mock, mocker):
|
||||||
|
mocker.patch(
|
||||||
|
'util.cli.execute',
|
||||||
|
side_effect=Exception
|
||||||
|
)
|
||||||
|
|
||||||
|
module = module_mock()
|
||||||
|
widget = module.widget()
|
||||||
|
|
||||||
|
module.update()
|
||||||
|
assert widget.full_text() == 'n/a'
|
||||||
|
|
||||||
|
def test_unavailable_amixer(module_mock, mocker):
|
||||||
|
mocker.patch('util.cli.execute', return_value='Invalid')
|
||||||
|
|
||||||
|
module = module_mock()
|
||||||
|
widget = module.widget()
|
||||||
|
|
||||||
|
module.update()
|
||||||
|
assert widget.full_text() == '0%'
|
||||||
|
|
||||||
|
def test_toggle(module_mock, mocker):
|
||||||
|
command = mocker.patch('util.cli.execute')
|
||||||
|
module = module_mock()
|
||||||
|
module.toggle(False)
|
||||||
|
command.assert_called_once_with('amixer -q set Master,0 toggle')
|
||||||
|
|
||||||
|
def test_default_volume(module_mock, mocker):
|
||||||
|
module = module_mock()
|
||||||
|
|
||||||
|
command = mocker.patch('util.cli.execute')
|
||||||
|
module.increase_volume(False)
|
||||||
|
command.assert_called_once_with('amixer -q set Master,0 4%+')
|
||||||
|
|
||||||
|
command = mocker.patch('util.cli.execute')
|
||||||
|
module.decrease_volume(False)
|
||||||
|
command.assert_called_once_with('amixer -q set Master,0 4%-')
|
||||||
|
|
||||||
|
def test_custom_volume(module_mock, mocker):
|
||||||
|
module = module_mock(['-p', 'amixer.percent_change=25'])
|
||||||
|
|
||||||
|
command = mocker.patch('util.cli.execute')
|
||||||
|
module.increase_volume(False)
|
||||||
|
command.assert_called_once_with('amixer -q set Master,0 25%+')
|
||||||
|
|
||||||
|
command = mocker.patch('util.cli.execute')
|
||||||
|
module.decrease_volume(False)
|
||||||
|
command.assert_called_once_with('amixer -q set Master,0 25%-')
|
||||||
|
|
||||||
|
def test_custom_device(module_mock, mocker):
|
||||||
|
mocker.patch('util.cli.execute')
|
||||||
|
module = module_mock(['-p', 'amixer.device=CustomMaster'])
|
||||||
|
|
||||||
|
command = mocker.patch('util.cli.execute')
|
||||||
|
module.toggle(False)
|
||||||
|
command.assert_called_once_with('amixer -q set CustomMaster toggle')
|
||||||
|
|
||||||
|
command = mocker.patch('util.cli.execute')
|
||||||
|
module.increase_volume(False)
|
||||||
|
command.assert_called_once_with('amixer -q set CustomMaster 4%+')
|
||||||
|
|
||||||
|
command = mocker.patch('util.cli.execute')
|
||||||
|
module.decrease_volume(False)
|
||||||
|
command.assert_called_once_with('amixer -q set CustomMaster 4%-')
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue