Skip to content
Merged
15 changes: 9 additions & 6 deletions sdk/__tests__/fixtures/shared/SecurityFixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -249,12 +249,15 @@ export const SecurityPropsFixture = createFixture<SecurityProps>((security) => {
() => new EvmAddress(EvmAddressPropsFixture.create().value),
);
security.paused?.faker((faker) => faker.datatype.boolean());
security.regulationType?.faker((faker) =>
faker.helpers.arrayElement(Object.values(RegulationType)),
);
security.regulationsubType?.faker((faker) =>
faker.helpers.arrayElement(Object.values(RegulationSubType)),
);
// TODO: find a way to generate subtype based on type
security.regulationType?.faker(() => {
return RegulationType.REG_S;
});
security.regulationsubType?.faker(() => {
{
return RegulationSubType.NONE;
}
});
security.regulation?.fromFixture(RegulationFixture);
security.isCountryControlListWhiteList.faker((faker) =>
faker.datatype.boolean(),
Expand Down
10 changes: 6 additions & 4 deletions sdk/__tests__/jest-setup-file.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2190,10 +2190,12 @@ jest.mock('../src/port/out/rpc/RPCTransactionAdapter', () => {
security: EvmAddress,
_maturityDate: number,
) {
bondInfo = {
...bondInfo,
maturityDate: _maturityDate,
};
bondInfo = new BondDetails(
bondInfo.currency,
bondInfo.nominalValue,
bondInfo.startingDate,
_maturityDate,
);

return { status: 'success', data: [] } as TransactionResponse<
string[],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -347,13 +347,13 @@ describe('CreateBondCommandHandler', () => {
expect(
transactionServiceMock.getHandler().createBond,
).toHaveBeenCalledWith(
command.security,
{
expect.objectContaining(command.security),
expect.objectContaining({
currency: command.currency,
nominalValue: BigDecimal.fromString(command.nominalValue),
startingDate: parseInt(command.startingDate),
maturityDate: parseInt(command.maturityDate),
},
}),
{
couponFrequency: parseInt(command.couponFrequency),
couponRate: BigDecimal.fromString(command.couponRate),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,11 +222,11 @@ import {
import { MirrorNodeAdapter } from '../../../../../port/out/mirror/MirrorNodeAdapter.js';
import EvmAddress from '../../../../../domain/context/contract/EvmAddress.js';
import { EquityDetails } from '../../../../../domain/context/equity/EquityDetails.js';
import BigDecimal from '../../../../../domain/context/shared/BigDecimal.js';
import ContractService from '../../../../service/ContractService.js';
import AccountService from '../../../../service/AccountService.js';
import { InvalidResponse } from '../../../../../port/out/mirror/error/InvalidResponse.js';
import { EmptyResponse } from '../../security/error/EmptyResponse.js';
import BigDecimal from '../../../../../domain/context/shared/BigDecimal.js';

@CommandHandler(CreateEquityCommand)
export class CreateEquityCommandHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@

*/

import { CommandResponse } from 'core/command/CommandResponse';
import { CommandResponse } from '../../../../../../core/command/CommandResponse';
import { Command } from '../../../../../../core/command/Command';

export class ProtectedRedeemFromByPartitionCommandResponse
Expand Down
1 change: 1 addition & 0 deletions sdk/src/core/checks/numbers/CheckNums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ export default class CheckNums {

public static isBigDecimal(value: any): boolean {
try {
if (value instanceof BigDecimal) return true;
BigDecimal.fromString(value);
return true;
} catch (err) {
Expand Down
2 changes: 2 additions & 0 deletions sdk/src/core/error/BaseError.ts
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@ export enum ErrorCode {
InvalidTimeUnits = '10037',
MissingRegulationSubType = '10038',
MissingRegulationType = '10039',
InvalidOperation = '10040',

// Error codes for Logic Errors (Prefix: 2XXXX)
AccountAlreadyInControlList = '20013',
Expand Down Expand Up @@ -274,6 +275,7 @@ export enum ErrorCode {
NotAllowedInMultiPartition = '20033',
OnlyDefaultPartitionAllowed = '20034',
NotIssuable = '20035',
InvalidSupply = '20036',

// Error codes for System Errors (Prefix: 3XXXX)
ContractNotFound = '30002',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,12 +203,7 @@

*/

export default class BaseEntity {
public toPrimitive(): object {
let res = {};
Object.entries(this).map(([key, value]) => {
res = { ...res, [key]: value };
});
return res;
}
/* eslint-disable @typescript-eslint/no-explicit-any */
export interface BaseArgs {
[n: string]: any;
}
Original file line number Diff line number Diff line change
Expand Up @@ -205,22 +205,24 @@

/* eslint-disable @typescript-eslint/no-explicit-any */
import 'reflect-metadata';
import { BaseRequest } from '../BaseRequest.js';
import { ValidationSchema, ValidatedRequestKey } from './ValidationSchema.js';
import { ValidationSchema, ValidatedArgsKey } from './ValidationSchema.js';
import ValidationResponse from './ValidationResponse.js';
import { EmptyValue } from '../error/EmptyValue.js';
import RequestMapper from '../mapping/RequestMapper.js';
import { getOptionalFields } from '../../../../core/decorator/OptionalDecorator.js';
import BaseError from '../../../../core/error/BaseError.js';
import { RuntimeError } from '../../../../core/error/RuntimeError.js';
export default class ValidatedRequest<T extends BaseRequest> {
import { EmptyValue } from '../../port/in/request/error/EmptyValue.js';
import RequestMapper from '../../port/in/request/mapping/RequestMapper.js';
import { getOptionalFields } from '../decorator/OptionalDecorator.js';
import BaseError from '../error/BaseError.js';
import { RuntimeError } from '../error/RuntimeError.js';
import { BaseArgs } from './BaseArgs.js';
import { Validation } from './Validation.js';
export default class ValidatedArgs<T extends BaseArgs> extends Validation {
private schema: ValidationSchema<T>;

constructor(schema: ValidationSchema<T>) {
super();
this.schema = schema;
}

public validate(key?: ValidatedRequestKey<T>): ValidationResponse[] {
public validate(key?: ValidatedArgsKey<T>): ValidationResponse[] {
const vals: ValidationResponse[] = [];
if (!key) {
const filteredEntries = this.filterSchemaFromProps();
Expand All @@ -233,15 +235,13 @@ export default class ValidatedRequest<T extends BaseRequest> {
return vals;
}

protected getOptionalFields(): ValidatedRequestKey<T>[] {
let keys: ValidatedRequestKey<T>[] = [];
keys = Object.keys(
getOptionalFields(this) ?? {},
) as ValidatedRequestKey<T>[];
protected getOptionalFields(): ValidatedArgsKey<T>[] {
let keys: ValidatedArgsKey<T>[] = [];
keys = Object.keys(getOptionalFields(this) ?? {}) as ValidatedArgsKey<T>[];
return keys;
}

protected isOptional(key: ValidatedRequestKey<T>): boolean {
protected isOptional(key: ValidatedArgsKey<T>): boolean {
return this.getOptionalFields().includes(key);
}

Expand All @@ -261,7 +261,7 @@ export default class ValidatedRequest<T extends BaseRequest> {
}

private runValidation(
propertyName: ValidatedRequestKey<T>,
propertyName: ValidatedArgsKey<T>,
val: any,
): ValidationResponse | undefined {
if (this?.schema[propertyName] && val !== undefined) {
Expand Down Expand Up @@ -290,19 +290,19 @@ export default class ValidatedRequest<T extends BaseRequest> {
}
}

private filterSchemaFromProps(): ValidatedRequestKey<T>[] {
const schemaEntries = Object.keys(this.schema) as ValidatedRequestKey<T>[];
private filterSchemaFromProps(): ValidatedArgsKey<T>[] {
const schemaEntries = Object.keys(this.schema) as ValidatedArgsKey<T>[];
const entries = RequestMapper.renamePrivateProps(
Object.keys(this),
) as ValidatedRequestKey<T>[];
) as ValidatedArgsKey<T>[];
const filteredEntries = schemaEntries.filter((value) =>
entries.includes(value),
);
return filteredEntries;
}

private pushValidations(
key: ValidatedRequestKey<T>,
key: ValidatedArgsKey<T>,
vals: ValidationResponse[],
): void {
try {
Expand Down
Loading