summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/idb-wpt-ported/close-in-upgradeneeded.test.ts
blob: 96abe3918a24ead0e9efd85c98a90f60dbcfc5d8 (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
import test from "ava";
import { BridgeIDBCursor } from "..";
import { BridgeIDBCursorWithValue } from "../bridge-idb";
import { createdb } from "./wptsupport";

// When db.close is called in upgradeneeded, the db is cleaned up on refresh
test.cb("WPT test close-in-upgradeneeded.htm", (t) => {
  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",
      },
    );

    t.end();
  };
});