62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
|
|
"""Tests for profiles_store."""
|
||
|
|
|
||
|
|
import os
|
||
|
|
import json
|
||
|
|
|
||
|
|
|
||
|
|
def test_default_seeded_on_init(isolated_state, tmp_path):
|
||
|
|
p = isolated_state('profiles_store', ['_PROFILES_DIR', '_ACTIVE_FILE'])
|
||
|
|
p._init()
|
||
|
|
names = p.list_names()
|
||
|
|
# 5 defaults: default, work, game, sleep, driving
|
||
|
|
for expected in ('default', 'work', 'game', 'sleep', 'driving'):
|
||
|
|
assert expected in names, f"missing seeded profile: {expected}"
|
||
|
|
|
||
|
|
|
||
|
|
def test_active_defaults_to_default(isolated_state):
|
||
|
|
p = isolated_state('profiles_store', ['_PROFILES_DIR', '_ACTIVE_FILE'])
|
||
|
|
a = p.active()
|
||
|
|
assert a['name'] == 'default'
|
||
|
|
|
||
|
|
|
||
|
|
def test_set_active_persists(isolated_state):
|
||
|
|
p = isolated_state('profiles_store', ['_PROFILES_DIR', '_ACTIVE_FILE'])
|
||
|
|
p.set_active('work')
|
||
|
|
assert p.active_name() == 'work'
|
||
|
|
assert os.path.isfile(p._ACTIVE_FILE)
|
||
|
|
with open(p._ACTIVE_FILE, encoding='utf-8') as f:
|
||
|
|
assert f.read().strip() == 'work'
|
||
|
|
|
||
|
|
|
||
|
|
def test_set_active_unknown_raises(isolated_state):
|
||
|
|
p = isolated_state('profiles_store', ['_PROFILES_DIR', '_ACTIVE_FILE'])
|
||
|
|
try:
|
||
|
|
p.set_active('nonexistent')
|
||
|
|
assert False, "should have raised"
|
||
|
|
except ValueError:
|
||
|
|
pass
|
||
|
|
|
||
|
|
|
||
|
|
def test_allows_command_default_allows_all(isolated_state):
|
||
|
|
p = isolated_state('profiles_store', ['_PROFILES_DIR', '_ACTIVE_FILE'])
|
||
|
|
p.set_active('default')
|
||
|
|
assert p.allows_command('anything')
|
||
|
|
assert p.allows_command('games.steam.launch')
|
||
|
|
|
||
|
|
|
||
|
|
def test_allows_command_work_disables_games(isolated_state):
|
||
|
|
p = isolated_state('profiles_store', ['_PROFILES_DIR', '_ACTIVE_FILE'])
|
||
|
|
p.set_active('work')
|
||
|
|
assert not p.allows_command('games.steam.launch')
|
||
|
|
assert not p.allows_command('fun.joke')
|
||
|
|
assert p.allows_command('time.current')
|
||
|
|
|
||
|
|
|
||
|
|
def test_allows_command_driving_whitelist(isolated_state):
|
||
|
|
p = isolated_state('profiles_store', ['_PROFILES_DIR', '_ACTIVE_FILE'])
|
||
|
|
p.set_active('driving')
|
||
|
|
assert p.allows_command('music.play')
|
||
|
|
assert p.allows_command('weather.now')
|
||
|
|
assert not p.allows_command('windows.minimize')
|
||
|
|
assert not p.allows_command('screen.brightness')
|