Skip to content
Permalink
Browse files

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
  • Loading branch information...
Airblader authored and mhevery committed Nov 24, 2018
1 parent f9545d1 commit b39efdd9d65953fe690794eb4f85a199600ff3a0
Showing with 9 additions and 3 deletions.
  1. +1 −3 packages/common/src/pipes/keyvalue_pipe.ts
  2. +8 −0 packages/common/test/pipes/keyvalue_pipe_spec.ts
@@ -47,10 +47,8 @@ export interface KeyValue<K, V> {
export class KeyValuePipe implements PipeTransform {
constructor(private readonly differs: KeyValueDiffers) {}

// TODO(issue/24571): remove '!'.
private differ !: KeyValueDiffer<any, any>;
// TODO(issue/24571): remove '!'.
private keyValues !: Array<KeyValue<any, any>>;
private keyValues: Array<KeyValue<any, any>> = [];

transform<K, V>(input: null, compareFn?: (a: KeyValue<K, V>, b: KeyValue<K, V>) => number): null;
transform<V>(
@@ -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}]);

0 comments on commit b39efdd

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.