60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | /** | ||
|  |  * @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.io/license
 | ||
|  |  */ | ||
|  | 
 | ||
|  | import {HttpContext, HttpContextToken} from '../src/context'; | ||
|  | 
 | ||
|  | const IS_ENABLED = new HttpContextToken<boolean>(() => false); | ||
|  | const CACHE_OPTION = | ||
|  |     new HttpContextToken<{cache: boolean, expiresIn?: number}>(() => ({cache: false})); | ||
|  | 
 | ||
|  | describe('HttpContext', () => { | ||
|  |   let context: HttpContext; | ||
|  | 
 | ||
|  |   beforeEach(() => { | ||
|  |     context = new HttpContext(); | ||
|  |   }); | ||
|  | 
 | ||
|  |   describe('with basic value', () => { | ||
|  |     it('should test public api', () => { | ||
|  |       expect(context.get(IS_ENABLED)).toBe(false); | ||
|  |       expect([...context.keys()]).toEqual([ | ||
|  |         IS_ENABLED | ||
|  |       ]);  // value from factory function is stored in the map upon access
 | ||
|  | 
 | ||
|  |       context.set(IS_ENABLED, true); | ||
|  |       expect(context.get(IS_ENABLED)).toBe(true); | ||
|  |       expect([...context.keys()]).toEqual([IS_ENABLED]); | ||
|  | 
 | ||
|  |       context.delete(IS_ENABLED); | ||
|  |       expect([...context.keys()]).toEqual([]); | ||
|  |     }); | ||
|  |   }); | ||
|  | 
 | ||
|  |   describe('with complex value', () => { | ||
|  |     it('should test public api', () => { | ||
|  |       expect(context.get(CACHE_OPTION)).toEqual({cache: false}); | ||
|  |       expect([...context.keys()]).toEqual([CACHE_OPTION]); | ||
|  | 
 | ||
|  |       const value = {cache: true, expiresIn: 30}; | ||
|  |       context.set(CACHE_OPTION, value); | ||
|  |       expect(context.get(CACHE_OPTION)).toBe(value); | ||
|  |       expect([...context.keys()]).toEqual([CACHE_OPTION]); | ||
|  | 
 | ||
|  |       context.delete(CACHE_OPTION); | ||
|  |       expect([...context.keys()]).toEqual([]); | ||
|  |     }); | ||
|  | 
 | ||
|  |     it('should ensure that same reference is returned for default value between multiple accesses', | ||
|  |        () => { | ||
|  |          const value = context.get(CACHE_OPTION);  // will get default value
 | ||
|  |          expect(value).toEqual({cache: false}); | ||
|  |          expect(context.get(CACHE_OPTION)).toBe(value); | ||
|  |        }); | ||
|  |   }); | ||
|  | }); |