@@ -27,41 +27,45 @@ Item {
2727 width: units.gu(60)
2828 height: units.gu(80)
2929
30− Greeter {
31− id: greeter
32− width: parent.width
33− height: parent.height
34− x: 0; y: 0
30+ Loader {
31+ id: greeterLoader
32+ anchors.fill: parent
3533
36− property int minX: 0
34+ property bool itemDestroyed: false
3735
38− onXChanged: {
39− if (x < minX) {
40− minX = x;
41− }
42− }
43− }
36+ sourceComponent: Component {
37+ Greeter {
38+ anchors.fill: greeterLoader
39+
40+ property int minX: 0
41+
42+ onXChanged: {
43+ if (x < minX) {
44+ minX = x;
45+ }
46+ }
4447
45− Component {
46− id: greeterComponent
47− Greeter {
48− SignalSpy {
49− objectName: "selectedSpy"
50− target: parent
51− signalName: "selected"
48+ Component.onDestruction: {
49+ greeterLoader.itemDestroyed = true;
50+ }
51+ SignalSpy {
52+ objectName: "selectedSpy"
53+ target: parent
54+ signalName: "selected"
55+ }
5256 }
5357 }
5458 }
5559
5660 SignalSpy {
5761 id: unlockSpy
58− target: greeter
62+ target: greeterLoader.item
5963 signalName: "unlocked"
6064 }
6165
6266 SignalSpy {
6367 id: teaseSpy
64− target: greeter
68+ target: greeterLoader.item
6569 signalName: "tease"
6670 }
6771
@@ -69,8 +73,20 @@ Item {
6973 name: "SingleGreeter"
7074 when: windowShown
7175
76+ property Greeter greeter: greeterLoader.item
77+
7278 function cleanup() {
7379 AccountsService.statsWelcomeScreen = true
80+
81+ // force a reload so that we get a fresh Greeter for the next test
82+ greeterLoader.itemDestroyed = false;
83+ greeterLoader.active = false;
84+ tryCompare(greeterLoader, "itemDestroyed", true);
85+
86+ unlockSpy.clear();
87+ teaseSpy.clear();
88+
89+ greeterLoader.active = true;
7490 }
7591
7692 function test_properties() {
@@ -103,11 +119,9 @@ Item {
103119 }
104120
105121 function test_initial_selected_signal() {
106− var greeterObj = greeterComponent.createObject(this)
107− var spy = findChild(greeterObj, "selectedSpy")
108− spy.wait()
109− tryCompare(spy, "count", 1)
110− greeterObj.destroy()
122+ var selectedSpy = findChild(greeter, "selectedSpy");
123+ selectedSpy.wait();
124+ tryCompare(selectedSpy, "count", 1);
111125 }
112126 }
113127}