TestPrinterOutputDevice.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from unittest.mock import MagicMock
  2. import pytest
  3. from unittest.mock import patch
  4. from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel
  5. from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel
  6. from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice
  7. test_validate_data_get_set = [
  8. {"attribute": "connectionText", "value": "yay"},
  9. {"attribute": "connectionState", "value": 1},
  10. ]
  11. @pytest.fixture()
  12. def printer_output_device():
  13. with patch("UM.Application.Application.getInstance"):
  14. return PrinterOutputDevice("whatever")
  15. @pytest.mark.parametrize("data", test_validate_data_get_set)
  16. def test_getAndSet(data, printer_output_device):
  17. model = printer_output_device
  18. # Convert the first letter into a capital
  19. attribute = list(data["attribute"])
  20. attribute[0] = attribute[0].capitalize()
  21. attribute = "".join(attribute)
  22. # mock the correct emit
  23. setattr(model, data["attribute"] + "Changed", MagicMock())
  24. # Attempt to set the value
  25. getattr(model, "set" + attribute)(data["value"])
  26. # Check if signal fired.
  27. signal = getattr(model, data["attribute"] + "Changed")
  28. assert signal.emit.call_count == 1
  29. # Ensure that the value got set
  30. assert getattr(model, data["attribute"]) == data["value"]
  31. # Attempt to set the value again
  32. getattr(model, "set" + attribute)(data["value"])
  33. # The signal should not fire again
  34. assert signal.emit.call_count == 1
  35. def test_uniqueConfigurations(printer_output_device):
  36. printer = PrinterOutputModel(MagicMock())
  37. # Add a printer and fire the signal that ensures they get hooked up correctly.
  38. printer_output_device._printers = [printer]
  39. printer_output_device._onPrintersChanged()
  40. assert printer_output_device.uniqueConfigurations == []
  41. configuration = PrinterConfigurationModel()
  42. printer.addAvailableConfiguration(configuration)
  43. assert printer_output_device.uniqueConfigurations == [configuration]
  44. # Once the type of printer is set, it's active configuration counts as being set.
  45. # In that case, that should also be added to the list of available configurations
  46. printer.updateType("blarg!")
  47. assert printer_output_device.uniqueConfigurations == [configuration, printer.printerConfiguration]