diff options
Diffstat (limited to 'tests/qml/installer/tst_installer.qml')
-rw-r--r-- | tests/qml/installer/tst_installer.qml | 140 |
1 files changed, 120 insertions, 20 deletions
diff --git a/tests/qml/installer/tst_installer.qml b/tests/qml/installer/tst_installer.qml index 8bfcc246..01bb7a32 100644 --- a/tests/qml/installer/tst_installer.qml +++ b/tests/qml/installer/tst_installer.qml @@ -49,6 +49,9 @@ TestCase { name: "Installer" when: windowShown + property var stateList: [] + property int spyTimeout: 5000 * AmTest.timeoutFactor + SignalSpy { id: taskFinishedSpy target: ApplicationInstaller @@ -56,6 +59,12 @@ TestCase { } SignalSpy { + id: taskFailedSpy + target: ApplicationInstaller + signalName: "taskFailed" + } + + SignalSpy { id: taskStateChangedSpy target: ApplicationInstaller signalName: "taskStateChanged" @@ -67,27 +76,34 @@ TestCase { signalName: "taskRequestingInstallationAcknowledge" } - property var stateList: [] - property int spyTimeout: 5000 * AmTest.timeoutFactor + SignalSpy { + id: applicationChangedSpy + target: ApplicationManager + signalName: "applicationChanged" + } - function test_states() { - // App could potentially be installed already. Remove it. + + function init() { + // Remove previous installations if (ApplicationInstaller.removePackage("test.install.app", false, true)) { taskFinishedSpy.wait(spyTimeout); compare(taskFinishedSpy.count, 1); taskFinishedSpy.clear(); } + } - ApplicationManager.applicationAdded.connect(function(appId) { - var app = ApplicationManager.application(appId); - stateList.push(app.state) + function test_states() { + ApplicationManager.applicationAdded.connect(function(id) { + var app = ApplicationManager.application(id); + stateList.push(app.state); app.stateChanged.connect(function(state) { - compare(state, app.state) - stateList.push(state) - }) - }) + compare(state, app.state); + stateList.push(state); + }); + }); - var id = ApplicationInstaller.startPackageInstallation("internal-0", "appv1.pkg") + taskStateChangedSpy.clear(); + var id = ApplicationInstaller.startPackageInstallation("internal-0", "appv1.pkg"); taskRequestingInstallationAcknowledgeSpy.wait(spyTimeout); compare(taskRequestingInstallationAcknowledgeSpy.count, 1); compare(taskRequestingInstallationAcknowledgeSpy.signalArguments[0][0], id); @@ -101,23 +117,24 @@ TestCase { taskFinishedSpy.clear(); compare(stateList.length, 2); - compare(stateList[0], ApplicationObject.BeingInstalled) - compare(stateList[1], ApplicationObject.Installed) - stateList = [] + compare(stateList[0], ApplicationObject.BeingInstalled); + compare(stateList[1], ApplicationObject.Installed); + stateList = []; id = ApplicationInstaller.startPackageInstallation("internal-0", "appv2.pkg") taskRequestingInstallationAcknowledgeSpy.wait(spyTimeout); compare(taskRequestingInstallationAcknowledgeSpy.count, 1); compare(taskRequestingInstallationAcknowledgeSpy.signalArguments[0][0], id); + taskRequestingInstallationAcknowledgeSpy.clear(); ApplicationInstaller.acknowledgePackageInstallation(id); taskFinishedSpy.wait(spyTimeout); compare(taskFinishedSpy.count, 1); taskFinishedSpy.clear(); - compare(stateList[0], ApplicationObject.BeingUpdated) - compare(stateList[1], ApplicationObject.Installed) - stateList = [] + compare(stateList[0], ApplicationObject.BeingUpdated); + compare(stateList[1], ApplicationObject.Installed); + stateList = []; id = ApplicationInstaller.removePackage(appId, false, false); @@ -125,8 +142,8 @@ TestCase { compare(taskFinishedSpy.count, 1); taskFinishedSpy.clear(); - compare(stateList[0], ApplicationObject.BeingRemoved) - stateList = [] + compare(stateList[0], ApplicationObject.BeingRemoved); + stateList = []; // Cannot compare app.state any more, since app might already be dead verify(taskStateChangedSpy.count > 10); @@ -144,4 +161,87 @@ TestCase { for (var i = 0; i < taskStates.length; i++) compare(taskStateChangedSpy.signalArguments[i][1], taskStates[i], "- index: " + i); } + + function test_cancel_update() { + var id = ApplicationInstaller.startPackageInstallation("internal-0", "appv1.pkg") + taskRequestingInstallationAcknowledgeSpy.wait(spyTimeout); + compare(taskRequestingInstallationAcknowledgeSpy.count, 1); + compare(taskRequestingInstallationAcknowledgeSpy.signalArguments[0][0], id); + var appId = taskRequestingInstallationAcknowledgeSpy.signalArguments[0][1].id + compare(appId, "test.install.app"); + taskRequestingInstallationAcknowledgeSpy.clear(); + ApplicationInstaller.acknowledgePackageInstallation(id); + + taskFinishedSpy.wait(spyTimeout); + taskFinishedSpy.clear(); + + var app = ApplicationManager.application(appId); + compare(app.icon.toString().slice(-9), "icon1.png") + compare(app.version, "v1"); + + id = ApplicationInstaller.startPackageInstallation("internal-0", "appv2.pkg") + taskRequestingInstallationAcknowledgeSpy.wait(spyTimeout); + appId = taskRequestingInstallationAcknowledgeSpy.signalArguments[0][1].id + compare(appId, "test.install.app"); + taskRequestingInstallationAcknowledgeSpy.clear(); + ApplicationInstaller.cancelTask(id); + + taskFailedSpy.wait(spyTimeout); + taskFailedSpy.clear(); + + compare(app.icon.toString().slice(-9), "icon1.png") + compare(app.version, "v1"); + } + + function test_cancel_builtin_update() { + taskStateChangedSpy.clear() + var app = ApplicationManager.application("builtin.app"); + verify(app.builtIn); + compare(app.icon.toString().slice(-9), "icon1.png") + compare(app.version, "v1"); + + var id = ApplicationInstaller.startPackageInstallation("internal-0", "builtinv2.pkg") + taskRequestingInstallationAcknowledgeSpy.wait(spyTimeout); + compare(taskRequestingInstallationAcknowledgeSpy.count, 1); + compare(taskRequestingInstallationAcknowledgeSpy.signalArguments[0][0], id); + taskRequestingInstallationAcknowledgeSpy.clear(); + ApplicationInstaller.cancelTask(id); + + taskFailedSpy.wait(spyTimeout); + taskFailedSpy.clear(); + + verify(app.builtIn); + compare(app.icon.toString().slice(-9), "icon1.png") + compare(app.version, "v1"); + } + + function test_builtin_update_downgrade() { + taskStateChangedSpy.clear() + var id = ApplicationInstaller.startPackageInstallation("internal-0", "builtinv2.pkg") + taskRequestingInstallationAcknowledgeSpy.wait(spyTimeout); + compare(taskRequestingInstallationAcknowledgeSpy.count, 1); + compare(taskRequestingInstallationAcknowledgeSpy.signalArguments[0][0], id); + taskRequestingInstallationAcknowledgeSpy.clear(); + ApplicationInstaller.acknowledgePackageInstallation(id); + + taskFinishedSpy.wait(spyTimeout); + compare(ApplicationManager.get("builtin.app").version, "v2"); + taskFinishedSpy.clear(); + applicationChangedSpy.clear(); + + // remvove is a downgrade + verify(ApplicationInstaller.removePackage("builtin.app", false, true)); + taskFinishedSpy.wait(spyTimeout); + compare(taskFinishedSpy.count, 1); + taskFinishedSpy.clear(); + + compare(applicationChangedSpy.count, 5); + compare(applicationChangedSpy.signalArguments[3][0], "builtin.app"); + compare(applicationChangedSpy.signalArguments[3][1], []); + compare(applicationChangedSpy.signalArguments[4][1], ["isBlocked"]); + + var appmodel = ApplicationManager.get("builtin.app"); + verify(!appmodel.isBlocked); + compare(appmodel.version, "v1"); + } } |