Skip to content

Commit

Permalink
fix: feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
shuffledex committed May 7, 2020
1 parent d8060fa commit f883ea1
Show file tree
Hide file tree
Showing 14 changed files with 76 additions and 55 deletions.
4 changes: 2 additions & 2 deletions src/Polymesh.ts
Expand Up @@ -193,9 +193,9 @@ export class Polymesh {
}

/**
* Add a batch of claims
* Add claims to identities
*
* @param args.claims - array of clamis to be added
* @param args.claims - array of claims to be added
*/
public addClaims(args: AddClaimsParams): Promise<TransactionQueue<void>> {
return addClaims.prepare(args, this.context);
Expand Down
6 changes: 3 additions & 3 deletions src/__tests__/Polymesh.ts
Expand Up @@ -3,7 +3,7 @@ import { BigNumber } from 'bignumber.js';
import sinon from 'sinon';

import { Identity, TickerReservation } from '~/api/entities';
import { addClaims, Claims, reserveTicker } from '~/api/procedures';
import { addClaims, ClaimTargets, reserveTicker } from '~/api/procedures';
import { TransactionQueue } from '~/base';
import { Polymesh } from '~/Polymesh';
import { polkadotMockUtils } from '~/testUtils/mocks';
Expand Down Expand Up @@ -462,9 +462,9 @@ describe('Polymesh Class', () => {
accountUri: '//uri',
});

const claims: Claims[] = [
const claims: ClaimTargets[] = [
{
target: ['someDid'],
targets: ['someDid'],
claim: {
type: ClaimType.Accredited,
scope: 'someIdentityId',
Expand Down
8 changes: 3 additions & 5 deletions src/api/entities/Identity/__tests__/index.ts
Expand Up @@ -129,15 +129,13 @@ describe('Identity class', () => {
const did = 'someDid';
const identity = new Identity({ did }, context);
const role: Role = { type: RoleType.CddProvider };
const mockSomeDid = polkadotMockUtils.createMockIdentityId(did);
const rawDid = polkadotMockUtils.createMockIdentityId(did);

polkadotMockUtils
.createQueryStub('cddServiceProviders', 'activeMembers')
.resolves([mockSomeDid]);
polkadotMockUtils.createQueryStub('cddServiceProviders', 'activeMembers').resolves([rawDid]);

sinon
.stub(utilsModule, 'identityIdToString')
.withArgs(mockSomeDid)
.withArgs(rawDid)
.returns(did);

let hasRole = await identity.hasRole(role);
Expand Down
4 changes: 2 additions & 2 deletions src/api/entities/Identity/index.ts
Expand Up @@ -102,9 +102,9 @@ export class Identity extends Entity<UniqueIdentifiers> {
} = context;

const activeMembers = await cddServiceProviders.activeMembers();
const membersDid = activeMembers.map(identityIdToString);
const memberDids = activeMembers.map(identityIdToString);

return membersDid.includes(did);
return memberDids.includes(did);
}

throw new PolymeshError({
Expand Down
12 changes: 6 additions & 6 deletions src/api/procedures/__tests__/addClaims.ts
Expand Up @@ -53,11 +53,11 @@ describe('addClaims procedure', () => {
args = {
claims: [
{
target: [someDid, otherDid],
targets: [someDid, otherDid],
claim: cddClaim,
},
{
target: [someDid],
targets: [someDid],
claim: buyLockupClaim,
expiry,
},
Expand Down Expand Up @@ -100,7 +100,7 @@ describe('addClaims procedure', () => {
polkadotMockUtils.cleanup();
});

test("should throw an error if some of the supplied did targets don't exist", () => {
test("should throw an error if some of the supplied dids targets don't exist", () => {
didRecordsStub.size.withArgs(rawOtherDid).resolves(polkadotMockUtils.createMockU64(0));

const proc = procedureMockUtils.getInstance<AddClaimsParams, void>();
Expand Down Expand Up @@ -144,7 +144,7 @@ describe('getRequiredRoles', () => {
const args = {
claims: [
{
target: ['someDid'],
targets: ['someDid'],
claim: { type: ClaimType.CustomerDueDiligence },
},
],
Expand All @@ -153,11 +153,11 @@ describe('getRequiredRoles', () => {
expect(getRequiredRoles(args)).toEqual([{ type: RoleType.CddProvider }]);
});

test('should return an empty role if args has not a customer due diligence claim type', () => {
test("should return an empty array if args doesn't have a customer due diligence claim type", () => {
const args = {
claims: [
{
target: ['someDid'],
targets: ['someDid'],
claim: { type: ClaimType.Accredited, scope: 'someIdentityId' },
},
],
Expand Down
22 changes: 11 additions & 11 deletions src/api/procedures/__tests__/createSecurityToken.ts
Expand Up @@ -80,9 +80,10 @@ describe('createSecurityToken procedure', () => {
let rawFee: Balance;
let numerator: number;
let denominator: number;
let posRatioToBigNumberResult: BigNumber;

beforeAll(() => {
polkadotMockUtils.initMocks({ contextOptions: { balance: new BigNumber(500) } });
polkadotMockUtils.initMocks({ contextOptions: { balance: new BigNumber(1000) } });
procedureMockUtils.initMocks();
entityMockUtils.initMocks();
stringToTickerStub = sinon.stub(utilsModule, 'stringToTicker');
Expand All @@ -99,6 +100,8 @@ describe('createSecurityToken procedure', () => {
tokenDocumentToDocumentStub = sinon.stub(utilsModule, 'tokenDocumentToDocument');
posRatioToBigNumberStub = sinon.stub(utilsModule, 'posRatioToBigNumber');
balanceToBigNumberStub = sinon.stub(utilsModule, 'balanceToBigNumber');
numerator = 5;
denominator = 2;
ticker = 'someTicker';
name = 'someName';
totalSupply = new BigNumber(100);
Expand Down Expand Up @@ -138,10 +141,7 @@ describe('createSecurityToken procedure', () => {
})
);
rawFundingRound = polkadotMockUtils.createMockFundingRoundName(fundingRound);
rawPosRatio = polkadotMockUtils.createMockPostRatio(numerator, denominator);
rawFee = polkadotMockUtils.createMockBalance(fee);
numerator = 1;
denominator = 1;
rawPosRatio = polkadotMockUtils.createMockPosRatio(numerator, denominator);
args = {
ticker,
name,
Expand All @@ -152,6 +152,8 @@ describe('createSecurityToken procedure', () => {
fundingRound,
};
fee = 250;
rawFee = polkadotMockUtils.createMockBalance(fee);
posRatioToBigNumberResult = new BigNumber(numerator).dividedBy(new BigNumber(denominator));
});

let addTransactionStub: sinon.SinonStub;
Expand Down Expand Up @@ -199,11 +201,9 @@ describe('createSecurityToken procedure', () => {
stringToFundingRoundNameStub.withArgs(fundingRound, mockContext).returns(rawFundingRound);
tokenDocumentToDocumentStub.withArgs(documents[0], mockContext).returns(rawDocuments[0]);

posRatioToBigNumberStub
.withArgs(rawPosRatio)
.returns(new BigNumber(numerator).dividedBy(new BigNumber(denominator)));
posRatioToBigNumberStub.withArgs(rawPosRatio).returns(posRatioToBigNumberResult);

balanceToBigNumberStub.returns(new BigNumber(fee));
balanceToBigNumberStub.withArgs(rawFee).returns(new BigNumber(fee));
});

afterEach(() => {
Expand Down Expand Up @@ -271,7 +271,7 @@ describe('createSecurityToken procedure', () => {
addTransactionStub.firstCall,
transaction,
sinon.match({
fee: new BigNumber(fee),
fee: new BigNumber(fee).multipliedBy(posRatioToBigNumberResult),
}),
rawName,
rawTicker,
Expand All @@ -293,7 +293,7 @@ describe('createSecurityToken procedure', () => {
addTransactionStub.secondCall,
transaction,
sinon.match({
fee: new BigNumber(fee),
fee: new BigNumber(fee).multipliedBy(posRatioToBigNumberResult),
}),
rawName,
rawTicker,
Expand Down
16 changes: 10 additions & 6 deletions src/api/procedures/__tests__/reserveTicker.ts
Expand Up @@ -40,9 +40,10 @@ describe('reserveTicker procedure', () => {
let rawFee: Balance;
let numerator: number;
let denominator: number;
let posRatioToBigNumberResult: BigNumber;

beforeAll(() => {
polkadotMockUtils.initMocks({ contextOptions: { balance: new BigNumber(500) } });
polkadotMockUtils.initMocks({ contextOptions: { balance: new BigNumber(1000) } });
procedureMockUtils.initMocks();
entityMockUtils.initMocks({ identityOptions: { did: 'someOtherDid' } });
stringToTickerStub = sinon.stub(utilsModule, 'stringToTicker');
Expand All @@ -54,11 +55,12 @@ describe('reserveTicker procedure', () => {
ticker,
};
fee = 250;
numerator = 7;
denominator = 3;
reservation = ('reservation' as unknown) as PostTransactionValue<TickerReservation>;
rawPosRatio = polkadotMockUtils.createMockPostRatio(numerator, denominator);
rawPosRatio = polkadotMockUtils.createMockPosRatio(numerator, denominator);
rawFee = polkadotMockUtils.createMockBalance(fee);
numerator = 1;
denominator = 1;
posRatioToBigNumberResult = new BigNumber(numerator).dividedBy(new BigNumber(denominator));
});

let addTransactionStub: sinon.SinonStub;
Expand Down Expand Up @@ -94,7 +96,9 @@ describe('reserveTicker procedure', () => {
.withArgs(rawPosRatio)
.returns(new BigNumber(numerator).dividedBy(new BigNumber(denominator)));

balanceToBigNumberStub.returns(new BigNumber(fee));
posRatioToBigNumberStub.withArgs(rawPosRatio).returns(posRatioToBigNumberResult);

balanceToBigNumberStub.withArgs(rawFee).returns(new BigNumber(fee));
});

afterEach(() => {
Expand Down Expand Up @@ -234,7 +238,7 @@ describe('reserveTicker procedure', () => {
addTransactionStub,
transaction,
sinon.match({
fee: new BigNumber(fee),
fee: new BigNumber(fee).multipliedBy(posRatioToBigNumberResult),
resolvers: sinon.match.array,
}),
rawTicker
Expand Down
13 changes: 6 additions & 7 deletions src/api/procedures/addClaims.ts
Expand Up @@ -13,14 +13,14 @@ interface AddClaimItem {
expiry: Moment | null;
}

export interface Claims {
target: string[];
export interface ClaimTargets {
targets: string[];
claim: Claim;
expiry?: Date;
}

export interface AddClaimsParams {
claims: Claims[];
claims: ClaimTargets[];
}

/**
Expand All @@ -46,8 +46,7 @@ export async function prepareAddClaims(

const addClaimItems: AddClaimItem[] = [];

claims.forEach(claimItem => {
const { target: targets, claim, expiry } = claimItem;
claims.forEach(({ targets, claim, expiry }) => {
targets.forEach(target =>
addClaimItems.push({
target: stringToIdentityId(target, context),
Expand All @@ -65,7 +64,7 @@ export async function prepareAddClaims(
addClaimItemsChunks.map(async addClaimItemsChunk => {
// TODO: queryMulti
const sizes = await Promise.all(
addClaimItemsChunk.map(addClaimItem => didRecords.size(addClaimItem.target))
addClaimItemsChunk.map(({ target }) => didRecords.size(target))
);

sizes.forEach((size, index) => {
Expand All @@ -92,7 +91,7 @@ export async function prepareAddClaims(
* @hidden
*/
export function getRequiredRoles({ claims }: AddClaimsParams): Role[] {
if (claims.some(e => e.claim.type === ClaimType.CustomerDueDiligence)) {
if (claims.some(({ claim: { type } }) => type === ClaimType.CustomerDueDiligence)) {
return [{ type: RoleType.CddProvider }];
}
return [];
Expand Down
9 changes: 5 additions & 4 deletions src/api/procedures/createSecurityToken.ts
Expand Up @@ -5,6 +5,7 @@ import { SecurityToken, TickerReservation } from '~/api/entities';
import { PolymeshError, Procedure } from '~/base';
import {
ErrorCode,
ProtocolOp,
Role,
RoleType,
TickerReservationStatus,
Expand Down Expand Up @@ -67,9 +68,9 @@ export async function prepareCreateSecurityToken(
const reservation = new TickerReservation({ ticker }, context);

// TODO: queryMulti
const [rawPosRatio, rawCreateTokenFee, balance, { status }] = await Promise.all([
const [rawCoefficient, rawCreateTokenFee, balance, { status }] = await Promise.all([
query.protocolFee.coefficient(),
query.protocolFee.baseFees('AssetCreateToken'),
query.protocolFee.baseFees(ProtocolOp.AssetCreateToken),
context.accountBalance(),
reservation.details(),
]);
Expand All @@ -88,9 +89,9 @@ export async function prepareCreateSecurityToken(
});
}

const ratio = posRatioToBigNumber(rawPosRatio);
const ratio = posRatioToBigNumber(rawCoefficient);
const createTokenFee = balanceToBigNumber(rawCreateTokenFee);
const fee = createTokenFee.dividedBy(ratio);
const fee = createTokenFee.multipliedBy(ratio);

if (balance.lt(fee)) {
throw new PolymeshError({
Expand Down
2 changes: 1 addition & 1 deletion src/api/procedures/index.ts
Expand Up @@ -11,4 +11,4 @@ export {
SetTokenTrustedClaimIssuersParams,
} from './setTokenTrustedClaimIssuers';
export { setTokenRules, SetTokenRulesParams } from './setTokenRules';
export { addClaims, AddClaimsParams, Claims } from './addClaims';
export { addClaims, AddClaimsParams, ClaimTargets } from './addClaims';
10 changes: 5 additions & 5 deletions src/api/procedures/reserveTicker.ts
Expand Up @@ -4,7 +4,7 @@ import { Ticker } from 'polymesh-types/types';
import { TickerReservation } from '~/api/entities';
import { PolymeshError, PostTransactionValue, Procedure } from '~/base';
import { Context } from '~/context';
import { ErrorCode, Role, RoleType, TickerReservationStatus } from '~/types';
import { ErrorCode, ProtocolOp, Role, RoleType, TickerReservationStatus } from '~/types';
import {
balanceToBigNumber,
findEventRecord,
Expand Down Expand Up @@ -53,14 +53,14 @@ export async function prepareReserveTicker(

// TODO: queryMulti
const [
rawPosRatio,
rawCoefficient,
rawRegisterTickerFee,
balance,
{ max_ticker_length: rawMaxTickerLength },
{ expiryDate, status },
] = await Promise.all([
query.protocolFee.coefficient(),
query.protocolFee.baseFees('AssetRegisterTicker'),
query.protocolFee.baseFees(ProtocolOp.AssetRegisterTicker),
context.accountBalance(),
query.asset.tickerConfig(),
reservation.details(),
Expand Down Expand Up @@ -104,9 +104,9 @@ export async function prepareReserveTicker(
}
}

const ratio = posRatioToBigNumber(rawPosRatio);
const ratio = posRatioToBigNumber(rawCoefficient);
const registerTickerFee = balanceToBigNumber(rawRegisterTickerFee);
const fee = registerTickerFee.dividedBy(ratio);
const fee = registerTickerFee.multipliedBy(ratio);

if (balance.lt(fee)) {
throw new PolymeshError({
Expand Down
2 changes: 1 addition & 1 deletion src/testUtils/mocks/polkadot.ts
Expand Up @@ -962,7 +962,7 @@ export const createMockTokenName = (name?: string): TokenName =>
/**
* @hidden
*/
export const createMockPostRatio = (numerator: number, denominator: number): PosRatio =>
export const createMockPosRatio = (numerator: number, denominator: number): PosRatio =>
[createMockU32(numerator), createMockU32(denominator)] as PosRatio;

/**
Expand Down
19 changes: 19 additions & 0 deletions src/types/index.ts
Expand Up @@ -242,6 +242,25 @@ export enum ErrorCode {
NotAuthorized = 'NotAuthorized',
}

/**
*
*/
export enum ProtocolOp {
AssetRegisterTicker = 'AssetRegisterTicker',
AssetIssue = 'AssetIssue',
AssetAddDocument = 'AssetAddDocument',
AssetCreateToken = 'AssetCreateToken',
DividendNew = 'DividendNew',
GeneralTmAddActiveRule = 'GeneralTmAddActiveRule',
IdentityRegisterDid = 'IdentityRegisterDid',
IdentityCddRegisterDid = 'IdentityCddRegisterDid',
IdentityAddClaim = 'IdentityAddClaim',
IdentitySetMasterKey = 'IdentitySetMasterKey',
IdentityAddSigningItem = 'IdentityAddSigningItem',
PipsPropose = 'PipsPropose',
VotingAddBallot = 'VotingAddBallot',
}

/**
* Represents an amount of tokens to be issued to an identity
*/
Expand Down

0 comments on commit f883ea1

Please sign in to comment.