Skip to content
Permalink
Browse files

fix(common): KeyValuePipe should return empty array for empty objects

This lets KeyValuePipe return an empty array (rather than undefined)
when the input is empty.
  • Loading branch information...
Airblader committed Nov 24, 2018
1 parent dc300c5 commit 54b8c0fb174339c589dda8007f44a8aa7a14c6e9
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 54b8c0f

Please sign in to comment.
You can’t perform that action at this time.