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(); | ||
|  |             }; | ||
|  |           }); | ||
|  |         }); | ||
|  |       }); | ||
|  |     })); |