/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ 'use strict'; describe( 'IndexedDB', ifEnvSupports('IDBDatabase', function () { var testZone = zone.fork(); var db; beforeEach(function (done) { var openRequest = indexedDB.open('_zone_testdb'); openRequest.onupgradeneeded = function (event) { db = event.target.result; var objectStore = db.createObjectStore('test-object-store', {keyPath: 'key'}); objectStore.createIndex('key', 'key', {unique: true}); objectStore.createIndex('data', 'data', {unique: false}); objectStore.transaction.oncomplete = function () { var testStore = db .transaction('test-object-store', 'readwrite') .objectStore('test-object-store'); testStore.add({key: 1, data: 'Test data'}); testStore.transaction.oncomplete = function () { done(); }; }; }; }); afterEach(function (done) { db.close(); var openRequest = indexedDB.deleteDatabase('_zone_testdb'); openRequest.onsuccess = function (event) { done(); }; }); describe('IDBRequest', function () { it('should bind EventTarget.addEventListener', function (done) { testZone.run(function () { db.transaction('test-object-store') .objectStore('test-object-store') .get(1) .addEventListener('success', function (event) { expect(zone).toBeDirectChildOf(testZone); expect(event.target.result.data).toBe('Test data'); done(); }); }); }); it('should bind onEventType listeners', function (done) { testZone.run(function () { db.transaction('test-object-store').objectStore('test-object-store').get(1).onsuccess = function (event) { expect(zone).toBeDirectChildOf(testZone); expect(event.target.result.data).toBe('Test data'); done(); }; }); }); }); describe('IDBCursor', function () { it('should bind EventTarget.addEventListener', function (done) { testZone.run(function () { db.transaction('test-object-store') .objectStore('test-object-store') .openCursor() .addEventListener('success', function (event) { var cursor = event.target.result; if (cursor) { expect(zone).toBeDirectChildOf(testZone); expect(cursor.value.data).toBe('Test data'); done(); } else { throw 'Error while reading cursor!'; } }); }); }); it('should bind onEventType listeners', function (done) { testZone.run(function () { db .transaction('test-object-store') .objectStore('test-object-store') .openCursor().onsuccess = function (event) { var cursor = event.target.result; if (cursor) { expect(zone).toBeDirectChildOf(testZone); expect(cursor.value.data).toBe('Test data'); done(); } else { throw 'Error while reading cursor!'; } }; }); }); }); describe('IDBIndex', function () { it('should bind EventTarget.addEventListener', function (done) { testZone.run(function () { db.transaction('test-object-store') .objectStore('test-object-store') .index('data') .get('Test data') .addEventListener('success', function (event) { expect(zone).toBeDirectChildOf(testZone); expect(event.target.result.key).toBe(1); done(); }); }); }); it('should bind onEventType listeners', function (done) { testZone.run(function () { db .transaction('test-object-store') .objectStore('test-object-store') .index('data') .get('Test data').onsuccess = function (event) { expect(zone).toBeDirectChildOf(testZone); expect(event.target.result.key).toBe(1); done(); }; }); }); }); }), );