mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-17 03:37:48 -06:00
Connect sync timer to sync() for consistency and add unit tests.
Also rename a function to camelCase CURA-7473
This commit is contained in:
parent
4f1a18f102
commit
294afdb7ca
3 changed files with 56 additions and 3 deletions
|
@ -94,7 +94,7 @@ class Account(QObject):
|
||||||
self._update_timer.setInterval(int(self.SYNC_INTERVAL * 1000))
|
self._update_timer.setInterval(int(self.SYNC_INTERVAL * 1000))
|
||||||
# The timer is restarted explicitly after an update was processed. This prevents 2 concurrent updates
|
# The timer is restarted explicitly after an update was processed. This prevents 2 concurrent updates
|
||||||
self._update_timer.setSingleShot(True)
|
self._update_timer.setSingleShot(True)
|
||||||
self._update_timer.timeout.connect(self.syncRequested)
|
self._update_timer.timeout.connect(self.sync)
|
||||||
|
|
||||||
self._sync_services = {} # type: Dict[str, int]
|
self._sync_services = {} # type: Dict[str, int]
|
||||||
"""contains entries "service_name" : SyncState"""
|
"""contains entries "service_name" : SyncState"""
|
||||||
|
@ -282,7 +282,7 @@ class Account(QObject):
|
||||||
self._sync()
|
self._sync()
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def update_packages(self):
|
def onUpdatePackagesClicked(self):
|
||||||
if self._update_packages_action is not None:
|
if self._update_packages_action is not None:
|
||||||
self._update_packages_action()
|
self._update_packages_action()
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ Row // Sync state icon + message
|
||||||
MouseArea
|
MouseArea
|
||||||
{
|
{
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onClicked: Cura.API.account.update_packages()
|
onClicked: Cura.API.account.onUpdatePackagesClicked()
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
onEntered: updatePackagesButton.font.underline = true
|
onEntered: updatePackagesButton.font.underline = true
|
||||||
onExited: updatePackagesButton.font.underline = false
|
onExited: updatePackagesButton.font.underline = false
|
||||||
|
|
|
@ -3,6 +3,7 @@ from unittest.mock import MagicMock, patch
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from cura.API import Account
|
from cura.API import Account
|
||||||
|
from cura.API.Account import SyncState
|
||||||
from cura.OAuth2.Models import UserProfile
|
from cura.OAuth2.Models import UserProfile
|
||||||
|
|
||||||
|
|
||||||
|
@ -117,3 +118,55 @@ def test_userProfile(user_profile):
|
||||||
|
|
||||||
mocked_auth_service.getUserProfile = MagicMock(return_value=None)
|
mocked_auth_service.getUserProfile = MagicMock(return_value=None)
|
||||||
assert account.userProfile is None
|
assert account.userProfile is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_sync_success():
|
||||||
|
account = Account(MagicMock())
|
||||||
|
|
||||||
|
service1 = "test_service1"
|
||||||
|
service2 = "test_service2"
|
||||||
|
|
||||||
|
account.setSyncState(service1, SyncState.SYNCING)
|
||||||
|
assert account.syncState == SyncState.SYNCING
|
||||||
|
|
||||||
|
account.setSyncState(service2, SyncState.SYNCING)
|
||||||
|
assert account.syncState == SyncState.SYNCING
|
||||||
|
|
||||||
|
account.setSyncState(service1, SyncState.SUCCESS)
|
||||||
|
# service2 still syncing
|
||||||
|
assert account.syncState == SyncState.SYNCING
|
||||||
|
|
||||||
|
account.setSyncState(service2, SyncState.SUCCESS)
|
||||||
|
assert account.syncState == SyncState.SUCCESS
|
||||||
|
|
||||||
|
|
||||||
|
def test_sync_update_action():
|
||||||
|
account = Account(MagicMock())
|
||||||
|
|
||||||
|
service1 = "test_service1"
|
||||||
|
|
||||||
|
mockUpdateCallback = MagicMock()
|
||||||
|
|
||||||
|
account.setSyncState(service1, SyncState.SYNCING)
|
||||||
|
assert account.syncState == SyncState.SYNCING
|
||||||
|
|
||||||
|
account.setUpdatePackagesAction(mockUpdateCallback)
|
||||||
|
account.onUpdatePackagesClicked()
|
||||||
|
mockUpdateCallback.assert_called_once_with()
|
||||||
|
account.setSyncState(service1, SyncState.SUCCESS)
|
||||||
|
|
||||||
|
account.sync() # starting a new sync resets the update action to None
|
||||||
|
|
||||||
|
account.setSyncState(service1, SyncState.SYNCING)
|
||||||
|
assert account.syncState == SyncState.SYNCING
|
||||||
|
|
||||||
|
account.onUpdatePackagesClicked() # Should not be connected to an action anymore
|
||||||
|
mockUpdateCallback.assert_called_once_with() # No additional calls
|
||||||
|
assert account.updatePackagesEnabled is False
|
||||||
|
account.setSyncState(service1, SyncState.SUCCESS)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue