From b39efdd9d65953fe690794eb4f85a199600ff3a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20B=C3=BCrk?= Date: Sat, 24 Nov 2018 16:00:13 +0100 Subject: [PATCH] fix(common): KeyValuePipe should return empty array for empty objects (#27258) This lets KeyValuePipe return an empty array (rather than undefined) when the input is empty. PR Close #27258 --- packages/common/src/pipes/keyvalue_pipe.ts | 4 +--- packages/common/test/pipes/keyvalue_pipe_spec.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/common/src/pipes/keyvalue_pipe.ts b/packages/common/src/pipes/keyvalue_pipe.ts index ef0eb5f5a6..5770f6a75b 100644 --- a/packages/common/src/pipes/keyvalue_pipe.ts +++ b/packages/common/src/pipes/keyvalue_pipe.ts @@ -47,10 +47,8 @@ export interface KeyValue { export class KeyValuePipe implements PipeTransform { constructor(private readonly differs: KeyValueDiffers) {} - // TODO(issue/24571): remove '!'. private differ !: KeyValueDiffer; - // TODO(issue/24571): remove '!'. - private keyValues !: Array>; + private keyValues: Array> = []; transform(input: null, compareFn?: (a: KeyValue, b: KeyValue) => number): null; transform( diff --git a/packages/common/test/pipes/keyvalue_pipe_spec.ts b/packages/common/test/pipes/keyvalue_pipe_spec.ts index e9f1c53bfc..5d69e9929a 100644 --- a/packages/common/test/pipes/keyvalue_pipe_spec.ts +++ b/packages/common/test/pipes/keyvalue_pipe_spec.ts @@ -25,6 +25,10 @@ describe('KeyValuePipe', () => { expect(pipe.transform(fn as any)).toEqual(null); }); describe('object dictionary', () => { + it('should return empty array of an empty dictionary', () => { + const pipe = new KeyValuePipe(defaultKeyValueDiffers); + expect(pipe.transform({})).toEqual([]); + }); it('should transform a basic dictionary', () => { const pipe = new KeyValuePipe(defaultKeyValueDiffers); expect(pipe.transform({1: 2})).toEqual([{key: '1', value: 2}]); @@ -62,6 +66,10 @@ describe('KeyValuePipe', () => { }); describe('Map', () => { + it('should return an empty array for an empty Map', () => { + const pipe = new KeyValuePipe(defaultKeyValueDiffers); + expect(pipe.transform(new Map())).toEqual([]); + }); it('should transform a basic Map', () => { const pipe = new KeyValuePipe(defaultKeyValueDiffers); expect(pipe.transform(new Map([[1, 2]]))).toEqual([{key: 1, value: 2}]);