mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-23 22:29:41 +08:00
150 lines
4.7 KiB
Python
150 lines
4.7 KiB
Python
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
import pytest
|
|
|
|
from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel
|
|
from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel
|
|
from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel
|
|
from cura.PrinterOutput.Peripheral import Peripheral
|
|
|
|
test_validate_data_get_set = [
|
|
{"attribute": "name", "value": "YAY"},
|
|
{"attribute": "targetBedTemperature", "value": 192},
|
|
{"attribute": "cameraUrl", "value": "YAY!"}
|
|
]
|
|
|
|
test_validate_data_get_update = [
|
|
{"attribute": "isPreheating", "value": True},
|
|
{"attribute": "type", "value": "WHOO"},
|
|
{"attribute": "buildplate", "value": "NFHA"},
|
|
{"attribute": "key", "value": "YAY"},
|
|
{"attribute": "name", "value": "Turtles"},
|
|
{"attribute": "bedTemperature", "value": 200},
|
|
{"attribute": "targetBedTemperature", "value": 9001},
|
|
{"attribute": "activePrintJob", "value": PrintJobOutputModel(MagicMock())},
|
|
{"attribute": "state", "value": "BEEPBOOP"},
|
|
|
|
]
|
|
|
|
|
|
@pytest.mark.parametrize("data", test_validate_data_get_set)
|
|
def test_getAndSet(data):
|
|
model = PrinterOutputModel(MagicMock())
|
|
|
|
# Convert the first letter into a capital
|
|
attribute = list(data["attribute"])
|
|
attribute[0] = attribute[0].capitalize()
|
|
attribute = "".join(attribute)
|
|
|
|
# mock the correct emit
|
|
setattr(model, data["attribute"] + "Changed", MagicMock())
|
|
|
|
# Attempt to set the value
|
|
getattr(model, "set" + attribute)(data["value"])
|
|
|
|
# Check if signal fired.
|
|
signal = getattr(model, data["attribute"] + "Changed")
|
|
assert signal.emit.call_count == 1
|
|
|
|
# Ensure that the value got set
|
|
assert getattr(model, data["attribute"]) == data["value"]
|
|
|
|
# Attempt to set the value again
|
|
getattr(model, "set" + attribute)(data["value"])
|
|
# The signal should not fire again
|
|
assert signal.emit.call_count == 1
|
|
|
|
|
|
@pytest.mark.parametrize("data", test_validate_data_get_update)
|
|
def test_getAndUpdate(data):
|
|
model = PrinterOutputModel(MagicMock())
|
|
|
|
# Convert the first letter into a capital
|
|
attribute = list(data["attribute"])
|
|
attribute[0] = attribute[0].capitalize()
|
|
attribute = "".join(attribute)
|
|
|
|
# mock the correct emit
|
|
setattr(model, data["attribute"] + "Changed", MagicMock())
|
|
|
|
# Attempt to set the value
|
|
getattr(model, "update" + attribute)(data["value"])
|
|
|
|
# Check if signal fired.
|
|
signal = getattr(model, data["attribute"] + "Changed")
|
|
assert signal.emit.call_count == 1
|
|
|
|
# Ensure that the value got set
|
|
assert getattr(model, data["attribute"]) == data["value"]
|
|
|
|
# Attempt to set the value again
|
|
getattr(model, "update" + attribute)(data["value"])
|
|
# The signal should not fire again
|
|
assert signal.emit.call_count == 1
|
|
|
|
|
|
def test_peripherals():
|
|
model = PrinterOutputModel(MagicMock())
|
|
model.peripheralsChanged = MagicMock()
|
|
|
|
peripheral = MagicMock(spec=Peripheral)
|
|
peripheral.name = "test"
|
|
peripheral2 = MagicMock(spec=Peripheral)
|
|
peripheral2.name = "test2"
|
|
|
|
model.addPeripheral(peripheral)
|
|
assert model.peripheralsChanged.emit.call_count == 1
|
|
model.addPeripheral(peripheral2)
|
|
assert model.peripheralsChanged.emit.call_count == 2
|
|
|
|
assert model.peripherals == "test, test2"
|
|
|
|
model.removePeripheral(peripheral)
|
|
assert model.peripheralsChanged.emit.call_count == 3
|
|
assert model.peripherals == "test2"
|
|
|
|
|
|
def test_availableConfigurations_addConfiguration():
|
|
model = PrinterOutputModel(MagicMock())
|
|
|
|
configuration = MagicMock(spec = PrinterConfigurationModel)
|
|
|
|
model.addAvailableConfiguration(configuration)
|
|
assert model.availableConfigurations == [configuration]
|
|
|
|
|
|
def test_availableConfigurations_addConfigTwice():
|
|
model = PrinterOutputModel(MagicMock())
|
|
|
|
configuration = MagicMock(spec=PrinterConfigurationModel)
|
|
|
|
model.setAvailableConfigurations([configuration])
|
|
assert model.availableConfigurations == [configuration]
|
|
|
|
# Adding it again should not have any effect
|
|
model.addAvailableConfiguration(configuration)
|
|
assert model.availableConfigurations == [configuration]
|
|
|
|
|
|
def test_availableConfigurations_removeConfig():
|
|
model = PrinterOutputModel(MagicMock())
|
|
|
|
configuration = MagicMock(spec=PrinterConfigurationModel)
|
|
|
|
model.addAvailableConfiguration(configuration)
|
|
model.removeAvailableConfiguration(configuration)
|
|
assert model.availableConfigurations == []
|
|
|
|
|
|
def test_removeAlreadyRemovedConfiguration():
|
|
model = PrinterOutputModel(MagicMock())
|
|
|
|
configuration = MagicMock(spec=PrinterConfigurationModel)
|
|
model.availableConfigurationsChanged = MagicMock()
|
|
model.removeAvailableConfiguration(configuration)
|
|
assert model.availableConfigurationsChanged.emit.call_count == 0
|
|
assert model.availableConfigurations == []
|
|
|