133 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google Inc. 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.io/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();
 | |
|             };
 | |
|           });
 | |
|         });
 | |
|       });
 | |
|     })); |