From e4ba9df11267aa53330690931bf246d5d9929608 Mon Sep 17 00:00:00 2001 From: Nick Lewis Date: Wed, 21 Oct 2020 12:07:57 -0400 Subject: [PATCH] feat(MetaService): Add ability to return meta as key value pair instead of array --- src/services/MetaService.ts | 9 +++++++++ test/MetaService.spec.ts | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/services/MetaService.ts b/src/services/MetaService.ts index 77fa23e..c422609 100644 --- a/src/services/MetaService.ts +++ b/src/services/MetaService.ts @@ -120,6 +120,15 @@ export class MetaService { return this.fields; } + async getFieldsAsRecord(): Promise> { + return (await this.getFields()).reduce((obj, item) => { + return { + ...obj, + [item.name]: item, + }; + }, {}); + } + async getAllLayouts(): Promise { await this.initialized; if (this.allFieldsLoaded) { diff --git a/test/MetaService.spec.ts b/test/MetaService.spec.ts index d8b9ffe..d1ec025 100644 --- a/test/MetaService.spec.ts +++ b/test/MetaService.spec.ts @@ -1,4 +1,6 @@ import { MetaService } from '../src'; +import { FieldMap } from '../lib/types'; +import { of } from 'rxjs'; describe('MetaService', () => { describe('function: hasMemory', () => { @@ -44,4 +46,17 @@ describe('MetaService', () => { expect(actual).toEqual(true); }); }); + + describe('getFieldAsRecord', () => { + it('should return as a record', async() => { + const meta: MetaService = new MetaService('Candidate'); + const alphaField: FieldMap = { + name: 'alpha', + label: 'Alpha' + }; + spyOn(meta, 'getFields').and.returnValue(of([alphaField]).toPromise()); + const response = await meta.getFieldsAsRecord(); + expect(response.alpha).toBe(alphaField); + }); + }); });