~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to gis/dhis-gis-geostat/mfbase/mapfish/tests/core/test_Offline.html

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html>
 
2
<html>
 
3
  <head>
 
4
    <link rel="stylesheet" type="text/css" href="../../ext/resources/css/ext-all.css" />
 
5
 
 
6
    <script type="text/javascript" src="../../../openlayers/lib/Firebug/firebug.js"></script>
 
7
    <script type="text/javascript" src="../../../openlayers/lib/OpenLayers.js"></script>
 
8
 
 
9
    <script type="text/javascript" src="../../../ext/adapter/ext/ext-base.js"></script>
 
10
    <script type="text/javascript" src="../../../ext/ext-all-debug.js"></script>
 
11
 
 
12
    <script type="text/javascript">
 
13
      // Because of a bug in Firefox 2 we need to specify the MapFish base path.
 
14
      // See https://bugzilla.mozilla.org/show_bug.cgi?id=351282
 
15
      var gMfLocation = "../../../mapfish/";
 
16
    </script>
 
17
    <script type="text/javascript" src="../../../mapfish/MapFish.js"></script>
 
18
 
 
19
    <script type="text/javascript"><!--
 
20
 
 
21
    function test_Offline(t) {
 
22
        t.plan(51);
 
23
 
 
24
        var MO = mapfish.Offline;
 
25
        var TIMEOUT = 200;
 
26
 
 
27
        t.wait_result(5);
 
28
 
 
29
        var lastSyncTaskLabel;
 
30
        var activeSyncTasks = 0;
 
31
        function syncTaskEventHandler(syncTaskEvent) {
 
32
            if (syncTaskEvent.type == "syncTaskAdded") {
 
33
                activeSyncTasks++;
 
34
            } else if (syncTaskEvent.type == "syncTaskDone") {
 
35
                activeSyncTasks--;
 
36
            } else {
 
37
                throw new Error("Unknown syncTask type " + syncTaskEvent.type);
 
38
            }
 
39
            lastSyncTaskLabel = syncTaskEvent.syncTask.label;
 
40
        }
 
41
 
 
42
        var seenDownloadDone = false;
 
43
        var seenUploadDone = false;
 
44
        function syncEventHandler(type) {
 
45
            if (type == "downloadDone") {
 
46
                seenDownloadDone = true;
 
47
            }
 
48
            if (type == "uploadDone") {
 
49
                seenUploadDone = true;
 
50
            }
 
51
        }
 
52
 
 
53
        function next_0() {
 
54
            t.eq(MO.isOnline, true, "online at startup");
 
55
            MO.goOffline();
 
56
            var seenOfflineEvent = false;
 
57
            MO.events.register("network", null, function(status) {
 
58
                MO.events.unregister("network", null, arguments.callee);
 
59
                if (status == "offline")
 
60
                    seenOfflineEvent = true;
 
61
            });
 
62
            setTimeout(function() {
 
63
                t.eq(seenOfflineEvent, true, "offline event fired");
 
64
                next_1();
 
65
            }, TIMEOUT);
 
66
        }
 
67
 
 
68
        function next_1() {
 
69
            t.eq(MO.isOnline, false, "went offline");
 
70
 
 
71
            // Shouldn't fire network event if already offline
 
72
            var seenEvent = false;
 
73
            MO.events.register("network", null, function(status) {
 
74
                MO.events.unregister("network", null, arguments.callee);
 
75
                seenEvent = true;
 
76
            });
 
77
            setTimeout(function() {
 
78
                t.eq(seenEvent, false, "No event fired");
 
79
 
 
80
                MO.goOnline();
 
81
                setTimeout(function() {
 
82
                    next_2();
 
83
                }, TIMEOUT);
 
84
            }, TIMEOUT);
 
85
        }
 
86
 
 
87
        function next_2() {
 
88
            t.eq(MO.isOnline, true, "went online");
 
89
 
 
90
            var syncTaskId1, syncTaskId2, syncTaskId3;
 
91
            MO.events.register("synctask", null, syncTaskEventHandler);
 
92
 
 
93
            MO.events.register("sync", null, function(type) {
 
94
                if (type == "download") {
 
95
                    MO.events.unregister("sync", null, arguments.callee);
 
96
                    t.eq(activeSyncTasks, 0, "no syncTask yet")
 
97
 
 
98
                    syncTaskId1 = MO.addSyncTask("Sample syncTask 1");
 
99
                    t.eq(activeSyncTasks, 1, "1 active syncTask")
 
100
                    t.eq(lastSyncTaskLabel, "Sample syncTask 1", "correct last task label");
 
101
 
 
102
                    // for syncTask 2, addSyncTask and syncTaskDone are called
 
103
                    // in the same execution flow, in that case check that downloadDone is
 
104
                    // not fired after syncTaskDone
 
105
                    syncTaskId2 = MO.addSyncTask("Sample syncTask 2");
 
106
                    t.eq(activeSyncTasks, 2, "2 active syncTasks")
 
107
                    t.eq(lastSyncTaskLabel, "Sample syncTask 2", "correct last task label");
 
108
                    MO.syncTaskDone(syncTaskId2);
 
109
                    t.eq(seenDownloadDone, false, "downloadDone not yet fired");
 
110
                    t.eq(activeSyncTasks, 1, "1 active syncTasks");
 
111
 
 
112
                    syncTaskId3 = MO.addSyncTask("Sample syncTask 3");
 
113
                    t.eq(activeSyncTasks, 2, "2 active syncTasks")
 
114
                    t.eq(lastSyncTaskLabel, "Sample syncTask 3", "correct last task label");
 
115
                }
 
116
            });
 
117
 
 
118
            MO.events.register("sync", null, syncEventHandler);
 
119
 
 
120
            t.eq(MO.syncState, null, "not syncing");
 
121
            MO.goOffline();
 
122
 
 
123
            setTimeout(function() {
 
124
                t.eq(MO.isOnline, true, "Not yet offline, syncTasks are pending");
 
125
                t.eq(MO.syncState, "download", "sync download");
 
126
 
 
127
                t.eq(activeSyncTasks, 2, "2 active tasks")
 
128
                MO.syncTaskDone(syncTaskId1);
 
129
                t.eq(activeSyncTasks, 1, "1 active tasks")
 
130
                t.eq(lastSyncTaskLabel, "Sample syncTask 1", "correct last task label");
 
131
                t.eq(seenDownloadDone, false, "downloadDone not yet fired");
 
132
 
 
133
                t.eq(MO.isOnline, true, "Not yet offline, syncTasks are pending");
 
134
                MO.syncTaskDone(syncTaskId3);
 
135
                t.eq(activeSyncTasks, 0, "0 active tasks")
 
136
                t.eq(lastSyncTaskLabel, "Sample syncTask 3", "correct last task label");
 
137
                t.eq(seenDownloadDone, false, "downloadDone not yet fired");
 
138
 
 
139
                MO.events.unregister("synctask", null, syncTaskEventHandler);
 
140
                setTimeout(function() {
 
141
                    MO.events.unregister("sync", null, syncEventHandler);
 
142
                    next_3();
 
143
                }, TIMEOUT);
 
144
            }, TIMEOUT);
 
145
        }
 
146
 
 
147
        function next_3() {
 
148
            t.eq(seenDownloadDone, true, "downloadDone fired");
 
149
            seenDownloadDone = false;
 
150
            t.eq(MO.isOnline, false, "went offline, syncTasks are done");
 
151
            t.eq(MO.syncState, null, "finished sync");
 
152
 
 
153
            var syncTaskId1, syncTaskId2, syncTaskId3;
 
154
            MO.events.register("synctask", null, syncTaskEventHandler);
 
155
 
 
156
            MO.events.register("sync", null, function(type) {
 
157
                if (type == "upload") {
 
158
                    MO.events.unregister("sync", null, arguments.callee);
 
159
                    t.eq(activeSyncTasks, 0, "no syncTask yet")
 
160
 
 
161
                    syncTaskId1 = MO.addSyncTask("Sample syncTask 1");
 
162
                    t.eq(activeSyncTasks, 1, "1 active syncTask")
 
163
                    t.eq(lastSyncTaskLabel, "Sample syncTask 1", "correct last task label");
 
164
 
 
165
                    // for syncTask 2, addSyncTask and syncTaskDone are called
 
166
                    // in the same execution flow, in that case check that downloadDone is
 
167
                    // not fired after syncTaskDone
 
168
                    syncTaskId2 = MO.addSyncTask("Sample syncTask 2");
 
169
                    t.eq(activeSyncTasks, 2, "2 active syncTasks")
 
170
                    t.eq(lastSyncTaskLabel, "Sample syncTask 2", "correct last task label");
 
171
                    MO.syncTaskDone(syncTaskId2);
 
172
                    t.eq(seenUploadDone, false, "uploadDone not yet fired");
 
173
                    t.eq(activeSyncTasks, 1, "1 active syncTasks");
 
174
 
 
175
                    syncTaskId3 = MO.addSyncTask("Sample syncTask 3");
 
176
                    t.eq(activeSyncTasks, 2, "2 active syncTasks")
 
177
                    t.eq(lastSyncTaskLabel, "Sample syncTask 3", "correct last task label");
 
178
                }
 
179
            });
 
180
 
 
181
            MO.events.register("sync", null, syncEventHandler);
 
182
 
 
183
            t.eq(MO.syncState, null, "not syncing");
 
184
            MO.goOnline();
 
185
 
 
186
            setTimeout(function() {
 
187
                t.eq(MO.isOnline, true, "went online, synchronizing upload");
 
188
                t.eq(MO.syncState, "upload", "sync upload");
 
189
 
 
190
                t.eq(activeSyncTasks, 2, "2 active tasks")
 
191
                MO.syncTaskDone(syncTaskId1);
 
192
                t.eq(activeSyncTasks, 1, "1 active tasks")
 
193
                t.eq(lastSyncTaskLabel, "Sample syncTask 1", "correct last task label");
 
194
                t.eq(seenUploadDone, false, "uploadDone not yet fired");
 
195
 
 
196
                t.eq(MO.isOnline, true, "Not yet offline, syncTasks are pending");
 
197
                MO.syncTaskDone(syncTaskId3);
 
198
                t.eq(activeSyncTasks, 0, "0 active tasks")
 
199
                t.eq(lastSyncTaskLabel, "Sample syncTask 3", "correct last task label");
 
200
                t.eq(seenUploadDone, false, "uploadDone not yet fired");
 
201
 
 
202
                setTimeout(function() {
 
203
                    MO.events.unregister("sync", null, syncEventHandler);
 
204
                    next_4();
 
205
                }, TIMEOUT);
 
206
            }, TIMEOUT);
 
207
        }
 
208
 
 
209
        function next_4() {
 
210
            t.eq(seenUploadDone, true, "uploadDone fired");
 
211
            seenUploadDone = false;
 
212
            t.eq(MO.isOnline, true, "went online, syncTasks are done");
 
213
            t.eq(MO.syncState, null, "finished sync");
 
214
        }
 
215
 
 
216
        next_0();
 
217
 
 
218
    }
 
219
--></script>
 
220
 
 
221
  </head>
 
222
  <body>
 
223
  </body>
 
224
</html>