File: test_configmanager.py

package info (click to toggle)
autokey 0.96.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,468 kB
  • sloc: python: 11,473; xml: 3,260; javascript: 249; sh: 24; makefile: 5
file content (83 lines) | stat: -rw-r--r-- 3,185 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Copyright (C) 2020 BlueDrink9

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

import typing
import sys
import os

from unittest.mock import MagicMock, patch

import pytest
from hamcrest import *
from tests.engine_helpers import *

import autokey.model.folder as akfolder
from autokey.configmanager.configmanager import ConfigManager
from autokey.configmanager.configmanager_constants import CONFIG_DEFAULT_FOLDER
import autokey.configmanager.predefined_user_files
from autokey.service import PhraseRunner
import autokey.service
from autokey.scripting import Engine

# These tests currently use the scripting API to create test phrases.
# If we can do it a better way, we probably should, to reduce dependencies for
# these tests.

def get_autokey_dir():
    return os.path.dirname(os.path.realpath(sys.argv[0]))

def test_get_item_with_hotkey(create_engine):
    engine, folder = create_engine
    # --- Setup ---
    modifiers = ["<ctrl>", "<alt>", "<super>", "<shift>"]
    key = "a"
    hotkey=(modifiers, key)
    testHK = create_test_hotkey(engine, folder, hotkey)
    resultHK = engine.configManager.get_item_with_hotkey(modifiers,
                                                         key, None)
    assert_that(resultHK, is_(equal_to(testHK)))

# TODO: check multiple folders, and global/special hotkeys.
# Check for similar tests in test_engine.
def test_item_has_same_hotkey(create_engine):
    engine, folder = create_engine
    modifiers = ["<ctrl>", "<alt>", "<super>", "<shift>"]
    key = "a"
    hotkey=(modifiers, key)
    testHK = create_test_hotkey(engine, folder, hotkey)
    assert ConfigManager.item_has_same_hotkey(testHK, modifiers, key, None)

def test_get_all_folders(create_engine):
    engine, folder = create_engine
    cm = engine.configManager

    first_child = akfolder.Folder("first child")
    first_grandchild = akfolder.Folder("first grandchild")
    second_grandchild = akfolder.Folder("second grandchild")
    first_child.add_folder(first_grandchild)
    first_child.add_folder(second_grandchild)
    cm.folders.append(first_child)

    expected = [folder, first_child, first_grandchild, second_grandchild]
    result = cm.get_all_folders()

    assert_that(result, equal_to(expected))

def test_create_predefined_user_files_my_phrases_folder(create_engine):
    engine, folder = create_engine
    # --- Setup ---
    os.makedirs(CONFIG_DEFAULT_FOLDER, exist_ok=True)
    phrases_folder = autokey.configmanager.predefined_user_files.create_my_phrases_folder()
    scripts_folder = autokey.configmanager.predefined_user_files.create_sample_scripts_folder()