summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
blob: 1a730df0bbc77690ceb9d937aa3879abcb65602e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import test from "ava";
import { createdb, initTestIndexedDB } from "./wptsupport.js";

test.before("test DB initialization", initTestIndexedDB);

// When db.close is called in upgradeneeded, the db is cleaned up on refresh
test("WPT test close-in-upgradeneeded.htm", (t) => {
  return new Promise((resolve, reject) => {
    var db: any;
    var open_rq = createdb(t);
    var sawTransactionComplete = false;

    open_rq.onupgradeneeded = function (e: any) {
      db = e.target.result;
      t.deepEqual(db.version, 1);

      db.createObjectStore("os");
      db.close();

      e.target.transaction.oncomplete = function () {
        sawTransactionComplete = true;
      };
    };

    open_rq.onerror = function (e: any) {
      t.true(sawTransactionComplete, "saw transaction.complete");

      t.deepEqual(e.target.error.name, "AbortError");
      t.deepEqual(e.result, undefined);

      t.true(!!db);
      t.deepEqual(db.version, 1);
      t.deepEqual(db.objectStoreNames.length, 1);
      t.throws(
        () => {
          db.transaction("os");
        },
        {
          name: "InvalidStateError",
        },
      );

      resolve();
    };
  });
});