From 82a1c25f17ea177afc5afb29fcd4f1c5047e20a9 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Fri, 2 Aug 2019 20:44:25 +0200 Subject: [PATCH] Tests for approvalFlagToBool (#1251) * Tests for approvalFlagToBool * Merge master --- .../api-derive/src/elections/approvalsOf.ts | 10 ++++-- .../src/util/approvalFlagToBools.spec.ts | 34 +++++++++++++++++++ .../src/util/approvalFlagsToBools.ts | 2 +- 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 packages/api-derive/src/util/approvalFlagToBools.spec.ts diff --git a/packages/api-derive/src/elections/approvalsOf.ts b/packages/api-derive/src/elections/approvalsOf.ts index 5f641ed494..6456146dd9 100644 --- a/packages/api-derive/src/elections/approvalsOf.ts +++ b/packages/api-derive/src/elections/approvalsOf.ts @@ -28,10 +28,16 @@ export function approvalsOf (api: ApiInterfaceRx): (who: AccountId) => Observabl (api.query.elections.nextVoterSet()) .pipe( switchMap((nextVoterSet: SetIndex): Observable[]> => - api.query.elections.approvalsOf.multi([...Array(nextVoterSet.toNumber() + 1).keys()].map((i): [string, number] => [who.toString(), i])) as any as Observable[]> + api.query.elections.approvalsOf.multi( + [...Array(nextVoterSet.toNumber() + 1).keys()].map((i): [string, number] => [ + who.toString(), i] + ) + ) as any as Observable[]> ), map((votes: Vec[]): boolean[][] => - votes.map((flags: Vec): boolean[] => approvalFlagsToBools(flags)) + votes.map((flags: Vec): boolean[] => + approvalFlagsToBools(flags) + ) ), drr() ); diff --git a/packages/api-derive/src/util/approvalFlagToBools.spec.ts b/packages/api-derive/src/util/approvalFlagToBools.spec.ts new file mode 100644 index 0000000000..86880f0dab --- /dev/null +++ b/packages/api-derive/src/util/approvalFlagToBools.spec.ts @@ -0,0 +1,34 @@ +// Copyright 2017-2019 @polkadot/api-derive authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +import { ApprovalFlag } from '@polkadot/types/interfaces'; + +import { createType } from '@polkadot/types'; + +import { approvalFlagsToBools } from './approvalFlagsToBools'; + +describe('approvalFlagsToBools', (): void => { + it('translates and empty array to empty', (): void => { + expect( + approvalFlagsToBools([] as ApprovalFlag[]) + ).toEqual([]); + }); + + it('translates a single input', (): void => { + expect( + approvalFlagsToBools([ + createType('ApprovalFlag', 0b1010) + ]) + ).toEqual([false, true, false, true]); + }); + + it('translates multiple inputs', (): void => { + expect( + approvalFlagsToBools([ + createType('ApprovalFlag', 0b0000), + createType('ApprovalFlag', 0b1100) + ]) + ).toEqual([false, false, false, true, true]); + }); +}); diff --git a/packages/api-derive/src/util/approvalFlagsToBools.ts b/packages/api-derive/src/util/approvalFlagsToBools.ts index c40feea667..eddb160f0c 100644 --- a/packages/api-derive/src/util/approvalFlagsToBools.ts +++ b/packages/api-derive/src/util/approvalFlagsToBools.ts @@ -6,7 +6,7 @@ import { ApprovalFlag } from '@polkadot/types/interfaces/elections'; import { Vec } from '@polkadot/types'; -export function approvalFlagsToBools (flags: Vec): boolean[] { +export function approvalFlagsToBools (flags: Vec | ApprovalFlag[]): boolean[] { const bools: boolean[] = []; flags.forEach((flag: ApprovalFlag): void => {