65 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								// Copyright 2022 Signal Messenger, LLC
							 | 
						||
| 
								 | 
							
								// SPDX-License-Identifier: AGPL-3.0-only
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { assert } from 'chai';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { mapObjectWithSpec } from '../../util/mapObjectWithSpec';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('mapObjectWithSpec', () => {
							 | 
						||
| 
								 | 
							
								  const increment = (value: number) => value + 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('maps a single key/value pair', () => {
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(mapObjectWithSpec('a', { a: 1 }, increment), {
							 | 
						||
| 
								 | 
							
								      a: 2,
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('maps a multiple key/value pairs', () => {
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(
							 | 
						||
| 
								 | 
							
								      mapObjectWithSpec(['a', 'b'], { a: 1, b: 2 }, increment),
							 | 
						||
| 
								 | 
							
								      { a: 2, b: 3 }
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('maps a key with a value spec', () => {
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(
							 | 
						||
| 
								 | 
							
								      mapObjectWithSpec(
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          key: 'a',
							 | 
						||
| 
								 | 
							
								          valueSpec: ['b', 'c'],
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        { a: { b: 1, c: 2 } },
							 | 
						||
| 
								 | 
							
								        increment
							 | 
						||
| 
								 | 
							
								      ),
							 | 
						||
| 
								 | 
							
								      { a: { b: 2, c: 3 } }
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('maps a map with a value spec', () => {
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(
							 | 
						||
| 
								 | 
							
								      mapObjectWithSpec(
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          isMap: true,
							 | 
						||
| 
								 | 
							
								          valueSpec: ['b', 'c'],
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          key1: { b: 1, c: 2 },
							 | 
						||
| 
								 | 
							
								          key2: { b: 3, c: 4 },
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        increment
							 | 
						||
| 
								 | 
							
								      ),
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        key1: { b: 2, c: 3 },
							 | 
						||
| 
								 | 
							
								        key2: { b: 4, c: 5 },
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('map undefined to undefined', () => {
							 | 
						||
| 
								 | 
							
								    assert.deepStrictEqual(
							 | 
						||
| 
								 | 
							
								      mapObjectWithSpec('a', undefined, increment),
							 | 
						||
| 
								 | 
							
								      undefined
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |