Welcome to mirror list, hosted at ThFree Co, Russian Federation.

TestSettingVisibilityPresets.py « Settings « tests - github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 6b268bca1dac89616457797aab2db4904a688c13 (plain)
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
84
85
86
87
88
89
90
from unittest.mock import MagicMock, patch

import os.path

from UM.Preferences import Preferences
from UM.Resources import Resources
from cura.CuraApplication import CuraApplication
from cura.Machines.Models.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel
from cura.Settings.SettingVisibilityPreset import SettingVisibilityPreset

setting_visibility_preset_test_settings = {"test", "zomg", "derp", "yay", "whoo"}

Resources.addSearchPath(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "resources")))
Resources.addStorageType(CuraApplication.ResourceTypes.SettingVisibilityPreset, "setting_visibility")


def test_createVisibilityPresetFromLocalFile():
    # Simple creation test. This is separated from the visibilityFromPrevious, since we can't check for the contents
    # of the other profiles, since they might change over time.
    visibility_preset = SettingVisibilityPreset()

    visibility_preset.loadFromFile(os.path.join(os.path.dirname(os.path.abspath(__file__)), "setting_visiblity_preset_test.cfg"))
    assert setting_visibility_preset_test_settings == set(visibility_preset.settings)

    assert visibility_preset.name == "test"
    assert visibility_preset.weight == 1
    assert visibility_preset.settings.count("yay") == 1  # It's in the file twice but we should load it once.

def test_visibilityFromPrevious():
    # This test checks that all settings in basic are in advanced and all settings in advanced are in expert.
    with patch("cura.CuraApplication.CuraApplication.getInstance"):
        visibility_model = SettingVisibilityPresetsModel(Preferences())

    basic_visibility = visibility_model.getVisibilityPresetById("basic")
    advanced_visibility = visibility_model.getVisibilityPresetById("advanced")
    expert_visibility = visibility_model.getVisibilityPresetById("expert")

    # Check if there are settings that are in basic, but not in advanced.
    settings_not_in_advanced = set(basic_visibility.settings) - set(advanced_visibility.settings)
    assert len(settings_not_in_advanced) == 0  # All settings in basic should be in advanced

    # Check if there are settings that are in advanced, but not in expert.
    settings_not_in_expert = set(advanced_visibility.settings) - set(expert_visibility.settings)
    assert len(settings_not_in_expert) == 0  # All settings in advanced should be in expert.


def test_setActivePreset():
    preferences = Preferences()
    with patch("cura.CuraApplication.CuraApplication.getInstance"):
        visibility_model = SettingVisibilityPresetsModel(preferences)
    visibility_model.activePresetChanged = MagicMock()
    # Ensure that we start off with basic (since we didn't change anything just yet!)
    assert visibility_model.activePreset == "basic"

    # Everything should be the same.
    visibility_model.setActivePreset("basic")
    assert visibility_model.activePreset == "basic"
    assert visibility_model.activePresetChanged.emit.call_count == 0  # No events should be sent.

    # Change it to existing type (should work...)
    visibility_model.setActivePreset("advanced")
    assert visibility_model.activePreset == "advanced"
    assert visibility_model.activePresetChanged.emit.call_count == 1

    # Change to unknown preset. Shouldn't do anything.
    visibility_model.setActivePreset("OMGZOMGNOPE")
    assert visibility_model.activePreset == "advanced"
    assert visibility_model.activePresetChanged.emit.call_count == 1


def test_preferenceChanged():
    preferences = Preferences()
    # Set the visible_settings to something silly
    preferences.addPreference("general/visible_settings", "omgzomg")
    with patch("cura.CuraApplication.CuraApplication.getInstance"):
        visibility_model = SettingVisibilityPresetsModel(preferences)
    visibility_model.activePresetChanged = MagicMock()

    assert visibility_model.activePreset == "custom"  # This should make the model start at "custom
    assert visibility_model.activePresetChanged.emit.call_count == 0

    basic_visibility = visibility_model.getVisibilityPresetById("basic")
    new_visibility_string = ";".join(basic_visibility.settings)
    preferences.setValue("general/visible_settings", new_visibility_string)

    # Fake a signal emit (since we didn't create the application, our own signals are not fired)
    visibility_model._onPreferencesChanged("general/visible_settings")
    # Set the visibility settings to basic
    assert visibility_model.activePreset == "basic"
    assert visibility_model.activePresetChanged.emit.call_count == 1