dom/indexedDB/test/unit/test_cursor_update_updates_indexes.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /**
     2  * Any copyright is dedicated to the Public Domain.
     3  * http://creativecommons.org/publicdomain/zero/1.0/
     4  */
     6 var testGenerator = testSteps();
     8 function testSteps()
     9 {
    10   const name = this.window ? window.location.pathname : "Splendid Test";
    11   const START_DATA = "hi";
    12   const END_DATA = "bye";
    13   const objectStoreInfo = [
    14     { name: "1", options: { keyPath: null }, key: 1,
    15       entry: { data: START_DATA } },
    16     { name: "2", options: { keyPath: "foo" },
    17       entry: { foo: 1, data: START_DATA } },
    18     { name: "3", options: { keyPath: null, autoIncrement: true },
    19       entry: { data: START_DATA } },
    20     { name: "4", options: { keyPath: "foo", autoIncrement: true },
    21       entry: { data: START_DATA } },
    22   ];
    24   for (let i = 0; i < objectStoreInfo.length; i++) {
    25     // Create our object stores.
    26     let info = objectStoreInfo[i];
    28     ok(true, "1");
    29     request = indexedDB.open(name, i + 1);
    30     request.onerror = errorHandler;
    31     request.onupgradeneeded = grabEventAndContinueHandler;
    32     event = yield undefined;
    34     let db = event.target.result;
    36     ok(true, "2");
    37     let objectStore = info.hasOwnProperty("options") ?
    38                       db.createObjectStore(info.name, info.options) :
    39                       db.createObjectStore(info.name);
    41     // Create the indexes on 'data' on the object store.
    42     let index = objectStore.createIndex("data_index", "data",
    43                                         { unique: false });
    44     let uniqueIndex = objectStore.createIndex("unique_data_index", "data",
    45                                               { unique: true });
    46     // Populate the object store with one entry of data.
    47     request = info.hasOwnProperty("key") ?
    48               objectStore.add(info.entry, info.key) :
    49               objectStore.add(info.entry);
    50     request.onerror = errorHandler;
    51     request.onsuccess = grabEventAndContinueHandler;
    52     event = yield undefined;
    53     ok(true, "3");
    55     // Use a cursor to update 'data' to END_DATA.
    56     request = objectStore.openCursor();
    57     request.onerror = errorHandler;
    58     request.onsuccess = grabEventAndContinueHandler;
    59     event = yield undefined;
    60     ok(true, "4");
    62     let cursor = request.result;
    63     let obj = cursor.value;
    64     obj.data = END_DATA;
    65     request = cursor.update(obj);
    66     request.onerror = errorHandler;
    67     request.onsuccess = grabEventAndContinueHandler;
    68     event = yield undefined;
    69     ok(true, "5");
    71     // Check both indexes to make sure that they were updated.
    72     request = index.get(END_DATA);
    73     request.onerror = errorHandler;
    74     request.onsuccess = grabEventAndContinueHandler;
    75     event = yield undefined;
    76     ok(true, "6");
    77     ok(obj.data, event.target.result.data,
    78                   "Non-unique index was properly updated.");
    80     request = uniqueIndex.get(END_DATA);
    81     request.onerror = errorHandler;
    82     request.onsuccess = grabEventAndContinueHandler;
    83     event = yield undefined;
    85     ok(true, "7");
    86     ok(obj.data, event.target.result.data,
    87                   "Unique index was properly updated.");
    88     db.close();
    89   }
    91   finishTest();
    92   yield undefined;
    93 }

mercurial