0758d77d636b16a522610535253e105253c47a0f
[WebKit-https.git] / LayoutTests / storage / indexeddb / modern / resources / basic-add.js
1 description("This test does basic testing of IDBObjectStore.add(), making sure that an attempt to overwrite an already-existing key fails with the appropriate error.");
2
3 if (window.testRunner) {
4     testRunner.waitUntilDone();
5     testRunner.dumpAsText();
6 }
7
8 var request = window.indexedDB.open("NewDatabaseAddTestDatabase");
9
10 function done()
11 {
12     finishJSTest();
13 }
14
15 request.onupgradeneeded = function(event) {
16     debug("ALERT: " + "Upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion);
17     
18     var tx = request.transaction;
19     var db = event.target.result;
20
21     debug("ALERT: " + tx + " - " + tx.mode);
22     debug("ALERT: " + db);
23
24     var os = db.createObjectStore("TestObjectStore");
25     var putRequest1 = os.add("bar", "foo");
26     var putRequest2 = os.add("baz", "foo");
27
28     putRequest1.onsuccess = function(event) {
29         debug("ALERT: " + "put 1 succeeded - key was '" + putRequest1.result + "'");
30     }
31
32     putRequest1.onerror = function(event) {
33         debug("ALERT: " + "put 1 unexpectedly failed - " + event);
34         done();
35     }
36
37     putRequest2.onsuccess = function(event) {
38         debug("ALERT: " + "put 2 unexpectedly succeeded - key was '" + putRequest2.result + "'");
39         done();
40     }
41
42     putRequest2.onerror = function(event) {
43         debug("ALERT: " + "put 2 failed - " + event.type);
44
45         var getRequest = os.get("foo");
46         
47         getRequest.onsuccess = function(event) {
48             debug("ALERT: " + "get succeeded - key was '" + getRequest.result + "'");
49         }
50
51         getRequest.onerror = function(event) {
52             debug("ALERT: " + "get unexpectedly failed - " + event.type);
53             done();
54         }
55         
56         event.stopPropagation();
57         event.preventDefault();
58     }
59         
60     tx.onabort = function(event) {
61         debug("ALERT: " + "version change transaction unexpected abort");
62         done();
63     }
64
65     tx.oncomplete = function(event) {
66         debug("ALERT: " + "version change transaction completed");
67         done();
68     }
69
70     tx.onerror = function(event) {
71         debug("ALERT: " + "version change transaction unexpected error - " + event);
72         done();
73     }
74 }