"""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')