From: Bill Erickson Date: Fri, 16 Aug 2019 20:48:51 +0000 (-0400) Subject: LP1840050 IDL pkeyMatches function/tests X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=522a1aa3f6609958bc18341d6c51cdebf8a8037d;p=working%2FEvergreen.git LP1840050 IDL pkeyMatches function/tests Function to compare whether two IdlObjects are of the same class and have matching pkey values. Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/eg2/src/app/core/idl.service.ts b/Open-ILS/src/eg2/src/app/core/idl.service.ts index 56b8b90e1f..0537f05983 100644 --- a/Open-ILS/src/eg2/src/app/core/idl.service.ts +++ b/Open-ILS/src/eg2/src/app/core/idl.service.ts @@ -156,5 +156,14 @@ export class IdlService { } return null; } + + // Returns true if both objects have the same IDL class and pkey value. + pkeyMatches(obj1: IdlObject, obj2: IdlObject) { + if (!obj1 || !obj2) { return false; } + const idlClass = obj1.classname; + if (idlClass !== obj2.classname) { return false; } + const pkeyField = this.classes[idlClass].pkey || 'id'; + return obj1[pkeyField]() === obj2[pkeyField](); + } } diff --git a/Open-ILS/src/eg2/src/app/core/idl.spec.ts b/Open-ILS/src/eg2/src/app/core/idl.spec.ts index 8138bf453c..49439fdb10 100644 --- a/Open-ILS/src/eg2/src/app/core/idl.spec.ts +++ b/Open-ILS/src/eg2/src/app/core/idl.spec.ts @@ -24,5 +24,33 @@ describe('IdlService', () => { expect(org.name()).toBe('AN ORG'); }); + it('should correctly compare IDL pkey values', () => { + service.parseIdl(); + const org1 = service.create('aou'); + const org2 = service.create('aou'); + org1.id(123); + org2.id(123); + expect(service.pkeyMatches(org1, org2)).toBe(true); + }); + + it('should correctly compare IDL pkey values', () => { + service.parseIdl(); + const org1 = service.create('aou'); + const org2 = service.create('aou'); + org1.id(123); + org2.id(456); + expect(service.pkeyMatches(org1, org2)).toBe(false); + }); + + it('should correctly compare IDL classes in pkey match', () => { + service.parseIdl(); + const org = service.create('aou'); + const user = service.create('au'); + org.id(123); + user.id(123); + expect(service.pkeyMatches(org, user)).toBe(false); + }); + + });