|
1 /** |
|
2 * Any copyright is dedicated to the Public Domain. |
|
3 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
4 */ |
|
5 |
|
6 var testGenerator = testSteps(); |
|
7 |
|
8 function testSteps() |
|
9 { |
|
10 const name = this.window ? window.location.pathname : "Splendid Test"; |
|
11 |
|
12 let requests = []; |
|
13 function doOpen(version, errorCallback, upgradeNeededCallback, successCallback) { |
|
14 let request = indexedDB.open(name, version); |
|
15 request.onerror = errorCallback; |
|
16 request.onupgradeneeded = upgradeNeededCallback; |
|
17 request.onsuccess = successCallback; |
|
18 requests.push(request); |
|
19 } |
|
20 |
|
21 doOpen(1, errorHandler, grabEventAndContinueHandler, grabEventAndContinueHandler); |
|
22 doOpen(2, errorHandler, unexpectedSuccessHandler, unexpectedSuccessHandler); |
|
23 |
|
24 let event = yield undefined; |
|
25 is(event.type, "upgradeneeded", "expect an upgradeneeded event"); |
|
26 is(event.target, requests[0], "fired at the right request"); |
|
27 |
|
28 let db = event.target.result; |
|
29 db.createObjectStore("foo"); |
|
30 |
|
31 doOpen(3, errorHandler, unexpectedSuccessHandler, unexpectedSuccessHandler); |
|
32 doOpen(2, errorHandler, unexpectedSuccessHandler, unexpectedSuccessHandler); |
|
33 doOpen(3, errorHandler, unexpectedSuccessHandler, unexpectedSuccessHandler); |
|
34 |
|
35 event.target.transaction.oncomplete = grabEventAndContinueHandler; |
|
36 |
|
37 event = yield undefined; |
|
38 is(event.type, "complete", "expect a complete event"); |
|
39 is(event.target, requests[0].transaction, "expect it to be fired at the transaction"); |
|
40 |
|
41 event = yield undefined; |
|
42 is(event.type, "success", "expect a success event"); |
|
43 is(event.target, requests[0], "fired at the right request"); |
|
44 event.target.result.close(); |
|
45 |
|
46 requests[1].onupgradeneeded = grabEventAndContinueHandler; |
|
47 |
|
48 event = yield undefined; |
|
49 is(event.type, "upgradeneeded", "expect an upgradeneeded event"); |
|
50 is(event.target, requests[1], "fired at the right request"); |
|
51 |
|
52 requests[1].onsuccess = grabEventAndContinueHandler; |
|
53 |
|
54 event = yield undefined; |
|
55 is(event.type, "success", "expect a success event"); |
|
56 is(event.target, requests[1], "fired at the right request"); |
|
57 event.target.result.close(); |
|
58 |
|
59 requests[2].onupgradeneeded = grabEventAndContinueHandler; |
|
60 |
|
61 event = yield undefined; |
|
62 is(event.type, "upgradeneeded", "expect an upgradeneeded event"); |
|
63 is(event.target, requests[2], "fired at the right request"); |
|
64 |
|
65 requests[2].onsuccess = grabEventAndContinueHandler; |
|
66 |
|
67 event = yield undefined; |
|
68 is(event.type, "success", "expect a success event"); |
|
69 is(event.target, requests[2], "fired at the right request"); |
|
70 event.target.result.close(); |
|
71 |
|
72 requests[3].onerror = null; |
|
73 requests[3].addEventListener("error", new ExpectError("VersionError", true)); |
|
74 |
|
75 event = yield undefined; |
|
76 |
|
77 requests[4].onsuccess = grabEventAndContinueHandler; |
|
78 |
|
79 event = yield undefined; |
|
80 is(event.type, "success", "expect a success event"); |
|
81 is(event.target, requests[4], "fired at the right request"); |
|
82 event.target.result.close(); |
|
83 |
|
84 finishTest(); |
|
85 yield undefined; |
|
86 } |
|
87 |