Cura/tests/PrinterOutput/Models/TestPrinterOutputModel.py
2019-08-22 14:32:33 +02:00

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 == []