mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-16 11:17:49 -06:00
STAR-322: First tests for cloud output device
This commit is contained in:
parent
e5124532f8
commit
d482924ea2
8 changed files with 191 additions and 138 deletions
|
@ -0,0 +1,73 @@
|
|||
# Copyright (c) 2018 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
import json
|
||||
import os
|
||||
from unittest import TestCase
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
from cura.CuraApplication import CuraApplication
|
||||
from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
|
||||
from src.Cloud.CloudApiClient import CloudApiClient
|
||||
from src.Cloud.CloudOutputController import CloudOutputController
|
||||
from src.Cloud.CloudOutputDevice import CloudOutputDevice
|
||||
from .NetworkManagerMock import NetworkManagerMock
|
||||
|
||||
|
||||
@patch("cura.NetworkClient.QNetworkAccessManager")
|
||||
class TestCloudOutputDevice(TestCase):
|
||||
CLUSTER_ID = "RIZ6cZbWA_Ua7RZVJhrdVfVpf0z-MqaSHQE4v8aRTtYq"
|
||||
HOST_NAME = "ultimakersystem-ccbdd30044ec"
|
||||
URL = "https://api-staging.ultimaker.com/connect/v1/clusters/{}/status".format(CLUSTER_ID)
|
||||
with open("{}/Fixtures/getClusterStatusResponse.json".format(os.path.dirname(__file__)), "rb") as f:
|
||||
DEFAULT_RESPONSE = f.read()
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.app = CuraApplication.getInstance()
|
||||
self.network = NetworkManagerMock()
|
||||
self.account = MagicMock(isLoggedIn=True, accessToken="TestAccessToken")
|
||||
self.onError = MagicMock()
|
||||
self.device = CloudOutputDevice(CloudApiClient(self.account, self.onError), self.CLUSTER_ID, self.HOST_NAME)
|
||||
self.cluster_status = json.loads(self.DEFAULT_RESPONSE.decode())
|
||||
self.network.prepareReply("GET", self.URL, 200, self.DEFAULT_RESPONSE)
|
||||
|
||||
def tearDown(self):
|
||||
try:
|
||||
self._beforeTearDown()
|
||||
finally:
|
||||
super().tearDown()
|
||||
|
||||
## Before tear down method we check whether the state of the output device manager is what we expect based on the
|
||||
# mocked API response.
|
||||
def _beforeTearDown(self):
|
||||
# let the network send replies
|
||||
self.network.flushReplies()
|
||||
# TODO
|
||||
|
||||
def test_status(self, network_mock):
|
||||
network_mock.return_value = self.network
|
||||
self.device._update()
|
||||
self.network.flushReplies()
|
||||
|
||||
self.assertEqual([PrinterOutputModel, PrinterOutputModel], [type(printer) for printer in self.device.printers])
|
||||
|
||||
controller_fields = {
|
||||
"_output_device": self.device,
|
||||
"can_abort": False,
|
||||
"can_control_manually": False,
|
||||
"can_pause": False,
|
||||
"can_pre_heat_bed": False,
|
||||
"can_pre_heat_hotends": False,
|
||||
"can_send_raw_gcode": False,
|
||||
"can_update_firmware": False,
|
||||
}
|
||||
|
||||
self.assertEqual({printer["uuid"] for printer in self.cluster_status["data"]["printers"]},
|
||||
{printer.key for printer in self.device.printers})
|
||||
self.assertEqual([controller_fields, controller_fields],
|
||||
[printer.getController().__dict__ for printer in self.device.printers])
|
||||
|
||||
self.assertEqual({job["uuid"] for job in self.cluster_status["data"]["print_jobs"]},
|
||||
{job.key for job in self.device.printJobs})
|
||||
self.assertEqual(["Daniel Testing"], [job.owner for job in self.device.printJobs])
|
||||
self.assertEqual(["UM3_dragon"], [job.name for job in self.device.printJobs])
|
Loading…
Add table
Add a link
Reference in a new issue