diff --git a/e2e/infrastructure/MosaicHttp.spec.ts b/e2e/infrastructure/MosaicHttp.spec.ts index 4f7fbae6de..33afaecc6b 100644 --- a/e2e/infrastructure/MosaicHttp.spec.ts +++ b/e2e/infrastructure/MosaicHttp.spec.ts @@ -18,9 +18,9 @@ import { Listener, TransactionHttp } from '../../src/infrastructure/infrastructu import {MosaicHttp} from '../../src/infrastructure/MosaicHttp'; import { Account } from '../../src/model/account/Account'; import { NetworkType } from '../../src/model/blockchain/NetworkType'; +import { MosaicFlags } from '../../src/model/mosaic/MosaicFlags'; import {MosaicId} from '../../src/model/mosaic/MosaicId'; import { MosaicNonce } from '../../src/model/mosaic/MosaicNonce'; -import { MosaicProperties } from '../../src/model/mosaic/MosaicProperties'; import { AliasAction } from '../../src/model/namespace/AliasAction'; import {NamespaceId} from '../../src/model/namespace/NamespaceId'; import { Deadline } from '../../src/model/transaction/Deadline'; @@ -74,12 +74,9 @@ describe('MosaicHttp', () => { Deadline.create(), nonce, mosaicId, - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - duration: UInt64.fromUint(0), - }), + MosaicFlags.create(true, true, false), + 3, + UInt64.fromUint(0), NetworkType.MIJIN_TEST, ); const signedTransaction = mosaicDefinitionTransaction.signWith(account, generationHash); diff --git a/e2e/infrastructure/TransactionHttp.spec.ts b/e2e/infrastructure/TransactionHttp.spec.ts index ff29a8ea3d..2f3506d179 100644 --- a/e2e/infrastructure/TransactionHttp.spec.ts +++ b/e2e/infrastructure/TransactionHttp.spec.ts @@ -29,9 +29,9 @@ import { AccountRestrictionModificationAction } from '../../src/model/account/Ac import { AccountRestrictionType } from '../../src/model/account/AccountRestrictionType'; import {NetworkType} from '../../src/model/blockchain/NetworkType'; import { Mosaic } from '../../src/model/mosaic/Mosaic'; +import {MosaicFlags} from '../../src/model/mosaic/MosaicFlags'; import {MosaicId} from '../../src/model/mosaic/MosaicId'; import {MosaicNonce} from '../../src/model/mosaic/MosaicNonce'; -import {MosaicProperties} from '../../src/model/mosaic/MosaicProperties'; import { MosaicRestrictionType } from '../../src/model/mosaic/MosaicRestrictionType'; import {MosaicSupplyChangeAction} from '../../src/model/mosaic/MosaicSupplyChangeAction'; import {NetworkCurrencyMosaic} from '../../src/model/mosaic/NetworkCurrencyMosaic'; @@ -143,23 +143,20 @@ describe('TransactionHttp', () => { Deadline.create(), nonce, mosaicId, - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - restrictable: true, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create( true, true, true), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); const signedTransaction = mosaicDefinitionTransaction.signWith(account, generationHash); listener.confirmed(account.address).subscribe((transaction: MosaicDefinitionTransaction) => { expect(transaction.mosaicId, 'MosaicId').not.to.be.undefined; expect(transaction.nonce, 'Nonce').not.to.be.undefined; - expect(transaction.mosaicProperties.divisibility, 'Divisibility').not.to.be.undefined; - expect(transaction.mosaicProperties.duration, 'Duration').not.to.be.undefined; - expect(transaction.mosaicProperties.supplyMutable, 'SupplyMutable').not.to.be.undefined; - expect(transaction.mosaicProperties.transferable, 'Transferable').not.to.be.undefined; + expect(transaction.divisibility, 'Divisibility').not.to.be.undefined; + expect(transaction.duration, 'Duration').not.to.be.undefined; + expect(transaction.flags.supplyMutable, 'SupplyMutable').not.to.be.undefined; + expect(transaction.flags.transferable, 'Transferable').not.to.be.undefined; + expect(transaction.flags.restrictable, 'Restrictable').not.to.be.undefined; done(); }); listener.status(account.address).subscribe((error) => { @@ -186,13 +183,9 @@ describe('TransactionHttp', () => { Deadline.create(), nonce, MosaicId.createFromNonce(nonce, account.publicAccount), - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - duration: UInt64.fromUint(0), - restrictable: true, - }), + MosaicFlags.create( true, true, true), + 3, + UInt64.fromUint(0), NetworkType.MIJIN_TEST, ); const aggregateTransaction = AggregateTransaction.createComplete(Deadline.create(), diff --git a/src/infrastructure/MosaicHttp.ts b/src/infrastructure/MosaicHttp.ts index 27ca2383bf..28eae72a02 100644 --- a/src/infrastructure/MosaicHttp.ts +++ b/src/infrastructure/MosaicHttp.ts @@ -18,10 +18,10 @@ import { ClientResponse } from 'http'; import {from as observableFrom, Observable, throwError} from 'rxjs'; import {catchError, map, mergeMap} from 'rxjs/operators'; import {PublicAccount} from '../model/account/PublicAccount'; +import {MosaicFlags} from '../model/mosaic/MosaicFlags'; import {MosaicId} from '../model/mosaic/MosaicId'; import {MosaicInfo} from '../model/mosaic/MosaicInfo'; import { MosaicNames } from '../model/mosaic/MosaicNames'; -import {MosaicProperties} from '../model/mosaic/MosaicProperties'; import {NamespaceId} from '../model/namespace/NamespaceId'; import { NamespaceName } from '../model/namespace/NamespaceName'; import {UInt64} from '../model/UInt64'; @@ -64,29 +64,15 @@ export class MosaicHttp extends Http implements MosaicRepository { this.mosaicRoutesApi.getMosaic(mosaicId.toHex())).pipe( map((response: { response: ClientResponse; body: MosaicInfoDTO; } ) => { const mosaicInfoDTO = response.body; - let mosaicFlag; - let divisibility; - let duration; - if (mosaicInfoDTO.mosaic.flags) { - mosaicFlag = mosaicInfoDTO.mosaic.flags; - } - if (mosaicInfoDTO.mosaic.divisibility) { - divisibility = mosaicInfoDTO.mosaic.divisibility; - } - if (mosaicInfoDTO.mosaic.duration) { - duration = mosaicInfoDTO.mosaic.duration; - } return new MosaicInfo( new MosaicId(mosaicInfoDTO.mosaic.id), UInt64.fromNumericString(mosaicInfoDTO.mosaic.supply), UInt64.fromNumericString(mosaicInfoDTO.mosaic.startHeight), PublicAccount.createFromPublicKey(mosaicInfoDTO.mosaic.ownerPublicKey, networkType), mosaicInfoDTO.mosaic.revision, - new MosaicProperties( - mosaicFlag, - divisibility, - UInt64.fromNumericString(duration), - ), + new MosaicFlags(mosaicInfoDTO.mosaic.flags), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ); }), catchError((error) => throwError(this.errorHandling(error))), @@ -109,29 +95,15 @@ export class MosaicHttp extends Http implements MosaicRepository { map((response: { response: ClientResponse; body: MosaicInfoDTO[]; }) => { const mosaicInfosDTO = response.body; return mosaicInfosDTO.map((mosaicInfoDTO) => { - let mosaicFlag; - let divisibility; - let duration; - if (mosaicInfoDTO.mosaic.flags) { - mosaicFlag = mosaicInfoDTO.mosaic.flags; - } - if (mosaicInfoDTO.mosaic.divisibility) { - divisibility = mosaicInfoDTO.mosaic.divisibility; - } - if (mosaicInfoDTO.mosaic.duration) { - duration = mosaicInfoDTO.mosaic.duration; - } return new MosaicInfo( new MosaicId(mosaicInfoDTO.mosaic.id), UInt64.fromNumericString(mosaicInfoDTO.mosaic.supply), UInt64.fromNumericString(mosaicInfoDTO.mosaic.startHeight), PublicAccount.createFromPublicKey(mosaicInfoDTO.mosaic.ownerPublicKey, networkType), mosaicInfoDTO.mosaic.revision, - new MosaicProperties( - mosaicFlag, - divisibility, - UInt64.fromNumericString(duration), - ), + new MosaicFlags(mosaicInfoDTO.mosaic.flags), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ); }); }), diff --git a/src/infrastructure/transaction/CreateTransactionFromDTO.ts b/src/infrastructure/transaction/CreateTransactionFromDTO.ts index 2165727001..0a91ed32ab 100644 --- a/src/infrastructure/transaction/CreateTransactionFromDTO.ts +++ b/src/infrastructure/transaction/CreateTransactionFromDTO.ts @@ -20,8 +20,8 @@ import {PublicAccount} from '../../model/account/PublicAccount'; import {NetworkType} from '../../model/blockchain/NetworkType'; import {Id} from '../../model/Id'; import {Mosaic} from '../../model/mosaic/Mosaic'; +import {MosaicFlags} from '../../model/mosaic/MosaicFlags'; import {MosaicId} from '../../model/mosaic/MosaicId'; -import {MosaicProperties} from '../../model/mosaic/MosaicProperties'; import {NamespaceId} from '../../model/namespace/NamespaceId'; import {AccountAddressRestrictionTransaction} from '../../model/transaction/AccountAddressRestrictionTransaction'; import { AccountLinkTransaction } from '../../model/transaction/AccountLinkTransaction'; @@ -163,11 +163,9 @@ const CreateStandaloneTransactionFromDTO = (transactionDTO, transactionInfo): Tr UInt64.fromNumericString(transactionDTO.maxFee || '0'), transactionDTO.nonce, new MosaicId(transactionDTO.id), - new MosaicProperties( - transactionDTO.flags, - transactionDTO.divisibility, - UInt64.fromNumericString(transactionDTO.duration), - ), + new MosaicFlags(transactionDTO.flags), + transactionDTO.divisibility, + UInt64.fromNumericString(transactionDTO.duration), transactionDTO.signature, transactionDTO.signerPublicKey ? PublicAccount.createFromPublicKey(transactionDTO.signerPublicKey, extractNetworkType(transactionDTO.version)) : undefined, diff --git a/src/infrastructure/transaction/SerializeTransactionToJSON.ts b/src/infrastructure/transaction/SerializeTransactionToJSON.ts index 074b2dc816..3544a83fce 100644 --- a/src/infrastructure/transaction/SerializeTransactionToJSON.ts +++ b/src/infrastructure/transaction/SerializeTransactionToJSON.ts @@ -112,13 +112,12 @@ export const SerializeTransactionToJSON = (transaction: Transaction): any => { mosaicId: (transaction as MosaicAliasTransaction).mosaicId.toHex(), }; case TransactionType.MOSAIC_DEFINITION: - const properties = (transaction as MosaicDefinitionTransaction).mosaicProperties.toDTO(); return { nonce: (transaction as MosaicDefinitionTransaction).nonce, mosaicId: (transaction as MosaicDefinitionTransaction).mosaicId.toHex(), - flags: properties.flags, - divisibility: properties.divisibility, - duration: properties.duration, + flags: (transaction as MosaicDefinitionTransaction).flags.getValue(), + divisibility: (transaction as MosaicDefinitionTransaction).divisibility, + duration: (transaction as MosaicDefinitionTransaction).duration.toString(), }; case TransactionType.MOSAIC_SUPPLY_CHANGE: return { diff --git a/src/model/model.ts b/src/model/model.ts index 696f98ba8a..a218ab2bb0 100644 --- a/src/model/model.ts +++ b/src/model/model.ts @@ -50,7 +50,7 @@ export * from './mosaic/MosaicInfo'; export * from './mosaic/MosaicId'; export * from './mosaic/MosaicNonce'; export * from './mosaic/MosaicSupplyChangeAction'; -export * from './mosaic/MosaicProperties'; +export * from './mosaic/MosaicFlags'; export * from '../service/MosaicView'; export * from '../service/MosaicAmountView'; export * from './mosaic/NetworkCurrencyMosaic'; diff --git a/src/model/mosaic/MosaicFlag.ts b/src/model/mosaic/MosaicFlag.ts deleted file mode 100644 index dcf6a8b500..0000000000 --- a/src/model/mosaic/MosaicFlag.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2018 NEM - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export enum MosaicFlags { - /** No flags present. */ - NONE = 0, - /** Mosaic supports supply changes even when mosaic owner owns partial supply. */ - SUPPLY_MUTABLE = 1, - /** Mosaic supports transfers between arbitrary accounts \note when not set, mosaic can only be transferred to and from mosaic owner. */ - TRANSFERABLE = 2, - /** Mosaic supports custom restrictions configured by mosaic owner. */ - RESTRICTABLE = 4, -} diff --git a/src/model/mosaic/MosaicProperties.ts b/src/model/mosaic/MosaicFlags.ts similarity index 58% rename from src/model/mosaic/MosaicProperties.ts rename to src/model/mosaic/MosaicFlags.ts index 17fa8c6b62..21ff8017ac 100644 --- a/src/model/mosaic/MosaicProperties.ts +++ b/src/model/mosaic/MosaicFlags.ts @@ -14,12 +14,10 @@ * limitations under the License. */ -import {UInt64} from '../UInt64'; - /** - * Mosaic properties model + * Mosaic flags model */ -export class MosaicProperties { +export class MosaicFlags { /** * The creator can choose between a definition that allows a mosaic supply change at a later point or an immutable supply. @@ -47,22 +45,7 @@ export class MosaicProperties { * @param divisibility * @param duration */ - constructor(flags: number, - /** - * The divisibility determines up to what decimal place the mosaic can be divided into. - * Thus a divisibility of 3 means that a mosaic can be divided into smallest parts of 0.001 mosaics - * i.e. milli mosaics is the smallest sub-unit. - * When transferring mosaics via a transfer transaction the quantity transferred - * is given in multiples of those smallest parts. - * The divisibility must be in the range of 0 and 6. The default value is "0". - */ - public readonly divisibility: number, - /** - * The duration in blocks a mosaic will be available. - * After the duration finishes mosaic is inactive and can be renewed. - * Duration is optional when defining the mosaic - */ - public readonly duration: UInt64) { + constructor(flags: number) { let binaryFlags = '00' + (flags >>> 0).toString(2); binaryFlags = binaryFlags.substr(binaryFlags.length - 3, 3); this.supplyMutable = binaryFlags[2] === '1'; @@ -72,19 +55,25 @@ export class MosaicProperties { /** * Static constructor function with default parameters - * @returns {MosaicProperties} - * @param params + * @returns {MosaicFlags} + * @param supplyMutable + * @param transferable + * @param restrictable */ - public static create(params: { + public static create( supplyMutable: boolean, transferable: boolean, - divisibility: number, - duration: UInt64, - restrictable?: boolean, - }) { - const restrictable = params.restrictable ? 4 : 0; - const flags = (params.supplyMutable ? 1 : 0) + (params.transferable ? 2 : 0) + restrictable; - return new MosaicProperties(flags, params.divisibility, params.duration); + restrictable: boolean = false ): MosaicFlags { + const flags = (supplyMutable ? 1 : 0) + (transferable ? 2 : 0) + (restrictable ? 4 : 0); + return new MosaicFlags(flags); + } + + /** + * Get mosaic flag value in number + * @returns {number} + */ + public getValue(): number { + return (this.supplyMutable ? 1 : 0) + (this.transferable ? 2 : 0) + (this.restrictable ? 4 : 0); } /** @@ -92,9 +81,7 @@ export class MosaicProperties { */ toDTO() { return { - flags: (this.supplyMutable ? 1 : 0) + (this.transferable ? 2 : 0) + (this.transferable ? 4 : 0), - divisibility: this.divisibility, - duration: this.duration ? this.duration.toString() : '0', + flags: this.getValue(), }; } } diff --git a/src/model/mosaic/MosaicInfo.ts b/src/model/mosaic/MosaicInfo.ts index 1077924abe..b145241268 100644 --- a/src/model/mosaic/MosaicInfo.ts +++ b/src/model/mosaic/MosaicInfo.ts @@ -14,10 +14,10 @@ * limitations under the License. */ -import {PublicAccount} from '../account/PublicAccount'; -import {UInt64} from '../UInt64'; -import {MosaicId} from './MosaicId'; -import {MosaicProperties} from './MosaicProperties'; +import { PublicAccount } from '../account/PublicAccount'; +import { UInt64 } from '../UInt64'; +import { MosaicFlags } from './MosaicFlags'; +import { MosaicId } from './MosaicId'; /** * The mosaic info structure describes a mosaic. @@ -55,34 +55,26 @@ export class MosaicInfo { */ public readonly revision: number, /** - * The mosaic properties. + * The mosaic flags. */ - private readonly properties: MosaicProperties, + public readonly flags: MosaicFlags, + /** + * Mosaic divisibility + */ + public readonly divisibility: number, + /** + * Mosaic duration + */ + public readonly duration: UInt64, ) { } - /** - * Mosaic divisibility - * @returns {number} - */ - public get divisibility(): number { - return this.properties.divisibility; - } - - /** - * Mosaic duration - * @returns {UInt64} - */ - public get duration(): UInt64 { - return this.properties.duration; - } - /** * Is mosaic supply mutable * @returns {boolean} */ public isSupplyMutable(): boolean { - return this.properties.supplyMutable; + return this.flags.supplyMutable; } /** @@ -90,7 +82,7 @@ export class MosaicInfo { * @returns {boolean} */ public isTransferable(): boolean { - return this.properties.transferable; + return this.flags.transferable; } /** @@ -98,6 +90,6 @@ export class MosaicInfo { * @returns {boolean} */ public isRestrictable(): boolean { - return this.properties.restrictable; + return this.flags.restrictable; } } diff --git a/src/model/transaction/MosaicDefinitionTransaction.ts b/src/model/transaction/MosaicDefinitionTransaction.ts index 8447738813..52d5bf95a7 100644 --- a/src/model/transaction/MosaicDefinitionTransaction.ts +++ b/src/model/transaction/MosaicDefinitionTransaction.ts @@ -28,10 +28,9 @@ import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto'; import { TimestampDto } from '../../infrastructure/catbuffer/TimestampDto'; import { PublicAccount } from '../account/PublicAccount'; import { NetworkType } from '../blockchain/NetworkType'; -import { MosaicFlags } from '../mosaic/MosaicFlag'; +import { MosaicFlags } from '../mosaic/MosaicFlags'; import { MosaicId } from '../mosaic/MosaicId'; import { MosaicNonce } from '../mosaic/MosaicNonce'; -import { MosaicProperties } from '../mosaic/MosaicProperties'; import { UInt64 } from '../UInt64'; import { Deadline } from './Deadline'; import { InnerTransaction } from './InnerTransaction'; @@ -51,7 +50,9 @@ export class MosaicDefinitionTransaction extends Transaction { * @param deadline - The deadline to include the transaction. * @param nonce - The mosaic nonce ex: MosaicNonce.createRandom(). * @param mosaicId - The mosaic id ex: new MosaicId([481110499, 231112638]). - * @param mosaicProperties - The mosaic properties. + * @param flags - The mosaic flags. + * @param divisibility - The mosaic divicibility. + * @param duration - The mosaic duration. * @param networkType - The network type. * @param maxFee - (Optional) Max fee defined by the sender * @returns {MosaicDefinitionTransaction} @@ -59,7 +60,9 @@ export class MosaicDefinitionTransaction extends Transaction { public static create(deadline: Deadline, nonce: MosaicNonce, mosaicId: MosaicId, - mosaicProperties: MosaicProperties, + flags: MosaicFlags, + divisibility: number, + duration: UInt64, networkType: NetworkType, maxFee: UInt64 = new UInt64([0, 0])): MosaicDefinitionTransaction { return new MosaicDefinitionTransaction(networkType, @@ -68,7 +71,9 @@ export class MosaicDefinitionTransaction extends Transaction { maxFee, nonce, mosaicId, - mosaicProperties, + flags, + divisibility, + duration, ); } @@ -99,7 +104,15 @@ export class MosaicDefinitionTransaction extends Transaction { /** * The mosaic properties. */ - public readonly mosaicProperties: MosaicProperties, + public readonly flags: MosaicFlags, + /** + * Mosaic divisibility + */ + public readonly divisibility: number, + /** + * Mosaic duration, 0 value for eternal mosaic + */ + public readonly duration: UInt64 = UInt64.fromUint(0), signature?: string, signer?: PublicAccount, transactionInfo?: TransactionInfo) { @@ -125,13 +138,12 @@ export class MosaicDefinitionTransaction extends Transaction { (builder as MosaicDefinitionTransactionBuilder).getDeadline().timestamp), new MosaicNonce(builder.getNonce().serialize()), new MosaicId(builder.getId().mosaicId), - MosaicProperties.create({ - supplyMutable: (builder.getFlags() & 1) === 1, - transferable: (builder.getFlags() & 2) === 2, - divisibility: builder.getDivisibility(), - restrictable: (builder.getFlags() & 4) === 4, - duration: new UInt64(builder.getDuration().blockDuration), - }), + MosaicFlags.create( + (builder.getFlags() & 1) === 1, + (builder.getFlags() & 2) === 2, + (builder.getFlags() & 4) === 4), + builder.getDivisibility(), + new UInt64(builder.getDuration().blockDuration), networkType, isEmbedded ? new UInt64([0, 0]) : new UInt64((builder as MosaicDefinitionTransactionBuilder).fee.amount), ); @@ -160,28 +172,6 @@ export class MosaicDefinitionTransaction extends Transaction { return byteSize + byteNonce + byteMosaicId + byteNumProps + byteFlags + byteDivisibility + byteDurationSize + byteDuration; } - /** - * @description get the calculated mosaic flag value - * @returns {number} - * @memberof MosaicDefinitionTransaction - */ - public getMosaicFlagValue(): number { - let flag = MosaicFlags.NONE; - if (this.mosaicProperties.supplyMutable === true) { - flag += MosaicFlags.SUPPLY_MUTABLE; - } - - if (this.mosaicProperties.transferable === true) { - flag += MosaicFlags.TRANSFERABLE; - } - - if (this.mosaicProperties.restrictable === true) { - flag += MosaicFlags.RESTRICTABLE; - } - - return flag.valueOf(); - } - /** * @description Get mosaic nonce int value * @returns {number} @@ -208,10 +198,9 @@ export class MosaicDefinitionTransaction extends Transaction { new TimestampDto(this.deadline.toDTO()), new MosaicNonceDto(this.getMosaicNonceIntValue()), new MosaicIdDto(this.mosaicId.id.toDTO()), - this.getMosaicFlagValue(), - this.mosaicProperties.divisibility, - new BlockDurationDto(this.mosaicProperties.duration ? - this.mosaicProperties.duration.toDTO() : UInt64.fromUint(0).toDTO()), + this.flags.getValue(), + this.divisibility, + new BlockDurationDto(this.duration.toDTO()), ); return transactionBuilder.serialize(); } @@ -227,10 +216,9 @@ export class MosaicDefinitionTransaction extends Transaction { TransactionType.MOSAIC_DEFINITION.valueOf(), new MosaicNonceDto(this.getMosaicNonceIntValue()), new MosaicIdDto(this.mosaicId.id.toDTO()), - this.getMosaicFlagValue(), - this.mosaicProperties.divisibility, - new BlockDurationDto(this.mosaicProperties.duration ? - this.mosaicProperties.duration.toDTO() : UInt64.fromUint(0).toDTO()), + this.flags.getValue(), + this.divisibility, + new BlockDurationDto(this.duration.toDTO()), ); return transactionBuilder.serialize(); } diff --git a/test/core/utils/TransactionMapping.spec.ts b/test/core/utils/TransactionMapping.spec.ts index ff1d6d7212..c50ebb60fb 100644 --- a/test/core/utils/TransactionMapping.spec.ts +++ b/test/core/utils/TransactionMapping.spec.ts @@ -25,9 +25,9 @@ import { AccountRestrictionType } from '../../../src/model/account/AccountRestri import { Address } from '../../../src/model/account/Address'; import { PublicAccount } from '../../../src/model/account/PublicAccount'; import { NetworkType } from '../../../src/model/blockchain/NetworkType'; +import { MosaicFlags } from '../../../src/model/mosaic/MosaicFlags'; import { MosaicId } from '../../../src/model/mosaic/MosaicId'; import { MosaicNonce } from '../../../src/model/mosaic/MosaicNonce'; -import { MosaicProperties } from '../../../src/model/mosaic/MosaicProperties'; import { MosaicRestrictionType } from '../../../src/model/mosaic/MosaicRestrictionType'; import { MosaicSupplyChangeAction } from '../../../src/model/mosaic/MosaicSupplyChangeAction'; import { NetworkCurrencyMosaic } from '../../../src/model/mosaic/NetworkCurrencyMosaic'; @@ -190,12 +190,9 @@ describe('TransactionMapping - createFromPayload', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 3, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(false, false, false), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); @@ -203,12 +200,12 @@ describe('TransactionMapping - createFromPayload', () => { const transaction = TransactionMapping.createFromPayload(signedTransaction.payload) as MosaicDefinitionTransaction; - expect(transaction.mosaicProperties.duration!.lower).to.be.equal(1000); - expect(transaction.mosaicProperties.duration!.higher).to.be.equal(0); - expect(transaction.mosaicProperties.divisibility).to.be.equal(3); - expect(transaction.mosaicProperties.supplyMutable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); - expect(transaction.mosaicProperties.restrictable).to.be.equal(false); + expect(transaction.duration!.lower).to.be.equal(1000); + expect(transaction.duration!.higher).to.be.equal(0); + expect(transaction.divisibility).to.be.equal(3); + expect(transaction.flags.supplyMutable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); + expect(transaction.flags.restrictable).to.be.equal(false); }); @@ -217,12 +214,9 @@ describe('TransactionMapping - createFromPayload', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 3, - duration: UInt64.fromUint(0), - }), + MosaicFlags.create(false, false, false), + 3, + UInt64.fromUint(0), NetworkType.MIJIN_TEST, ); @@ -230,10 +224,10 @@ describe('TransactionMapping - createFromPayload', () => { const transaction = TransactionMapping.createFromPayload(signedTransaction.payload) as MosaicDefinitionTransaction; - expect(transaction.mosaicProperties.divisibility).to.be.equal(3); - expect(transaction.mosaicProperties.supplyMutable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); - expect(transaction.mosaicProperties.restrictable).to.be.equal(false); + expect(transaction.divisibility).to.be.equal(3); + expect(transaction.flags.supplyMutable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); + expect(transaction.flags.restrictable).to.be.equal(false); }); @@ -242,12 +236,9 @@ describe('TransactionMapping - createFromPayload', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 3, - duration: UInt64.fromUint(0), - }), + MosaicFlags.create(false, false, false), + 3, + UInt64.fromUint(0), NetworkType.MIJIN_TEST, ); @@ -255,10 +246,10 @@ describe('TransactionMapping - createFromPayload', () => { const transaction = TransactionMapping.createFromPayload(signedTransaction.payload) as MosaicDefinitionTransaction; - expect(transaction.mosaicProperties.divisibility).to.be.equal(3); - expect(transaction.mosaicProperties.supplyMutable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); + expect(transaction.divisibility).to.be.equal(3); + expect(transaction.flags.supplyMutable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); }); @@ -267,12 +258,9 @@ describe('TransactionMapping - createFromPayload', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 3, - duration: UInt64.fromUint(0), - }), + MosaicFlags.create(false, false, false), + 3, + UInt64.fromUint(0), NetworkType.MIJIN_TEST, ); @@ -280,10 +268,10 @@ describe('TransactionMapping - createFromPayload', () => { const transaction = TransactionMapping.createFromPayload(signedTransaction.payload) as MosaicDefinitionTransaction; - expect(transaction.mosaicProperties.divisibility).to.be.equal(3); - expect(transaction.mosaicProperties.supplyMutable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); + expect(transaction.divisibility).to.be.equal(3); + expect(transaction.flags.supplyMutable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); }); @@ -292,12 +280,9 @@ describe('TransactionMapping - createFromPayload', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 3, - duration: UInt64.fromUint(0), - }), + MosaicFlags.create(false, false, false), + 3, + UInt64.fromUint(0), NetworkType.MIJIN_TEST, ); @@ -305,10 +290,10 @@ describe('TransactionMapping - createFromPayload', () => { const transaction = TransactionMapping.createFromPayload(signedTransaction.payload) as MosaicDefinitionTransaction; - expect(transaction.mosaicProperties.divisibility).to.be.equal(3); - expect(transaction.mosaicProperties.supplyMutable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); + expect(transaction.divisibility).to.be.equal(3); + expect(transaction.flags.supplyMutable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); }); @@ -839,13 +824,9 @@ describe('TransactionMapping - createFromDTO (Transaction.toJSON() feed)', () => Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - restrictable: false, - divisibility: 3, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(false, false, false), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); @@ -853,10 +834,10 @@ describe('TransactionMapping - createFromDTO (Transaction.toJSON() feed)', () => TransactionMapping.createFromDTO(mosaicDefinitionTransaction.toJSON()) as MosaicDefinitionTransaction; expect(transaction.type).to.be.equal(TransactionType.MOSAIC_DEFINITION); - expect(transaction.mosaicProperties.supplyMutable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); - expect(transaction.mosaicProperties.transferable).to.be.equal(false); - expect(transaction.mosaicProperties.divisibility).to.be.equal(3); + expect(transaction.flags.supplyMutable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); + expect(transaction.flags.transferable).to.be.equal(false); + expect(transaction.divisibility).to.be.equal(3); }); diff --git a/test/infrastructure/SerializeTransactionToJSON.spec.ts b/test/infrastructure/SerializeTransactionToJSON.spec.ts index 393e64e52c..70fde2bda5 100644 --- a/test/infrastructure/SerializeTransactionToJSON.spec.ts +++ b/test/infrastructure/SerializeTransactionToJSON.spec.ts @@ -23,9 +23,9 @@ import { AccountRestrictionType } from '../../src/model/account/AccountRestricti import { Address } from '../../src/model/account/Address'; import { PublicAccount } from '../../src/model/account/PublicAccount'; import { NetworkType } from '../../src/model/blockchain/NetworkType'; +import { MosaicFlags } from '../../src/model/mosaic/MosaicFlags'; import { MosaicId } from '../../src/model/mosaic/MosaicId'; import { MosaicNonce } from '../../src/model/mosaic/MosaicNonce'; -import { MosaicProperties } from '../../src/model/mosaic/MosaicProperties'; import { MosaicSupplyChangeAction } from '../../src/model/mosaic/MosaicSupplyChangeAction'; import { NetworkCurrencyMosaic } from '../../src/model/mosaic/NetworkCurrencyMosaic'; import { AliasAction } from '../../src/model/namespace/AliasAction'; @@ -174,13 +174,9 @@ describe('SerializeTransactionToJSON', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 5, - restrictable: true, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(true, true, true), + 5, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); @@ -198,12 +194,9 @@ describe('SerializeTransactionToJSON', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: true, - transferable: false, - divisibility: 3, - duration: UInt64.fromUint(0), - }), + MosaicFlags.create(true, false), + 3, + UInt64.fromUint(0), NetworkType.MIJIN_TEST, ); diff --git a/test/model/mosaic/MosaicAmountView.spec.ts b/test/model/mosaic/MosaicAmountView.spec.ts index da500af5a2..04544aed14 100644 --- a/test/model/mosaic/MosaicAmountView.spec.ts +++ b/test/model/mosaic/MosaicAmountView.spec.ts @@ -17,9 +17,9 @@ import {expect} from 'chai'; import {PublicAccount} from '../../../src/model/account/PublicAccount'; import {NetworkType} from '../../../src/model/blockchain/NetworkType'; +import {MosaicFlags} from '../../../src/model/mosaic/MosaicFlags'; import {MosaicId} from '../../../src/model/mosaic/MosaicId'; import {MosaicInfo} from '../../../src/model/mosaic/MosaicInfo'; -import {MosaicProperties} from '../../../src/model/mosaic/MosaicProperties'; import {UInt64} from '../../../src/model/UInt64'; import {MosaicAmountView} from '../../../src/service/MosaicAmountView'; @@ -34,13 +34,9 @@ describe('MosaicAmountView', () => { new UInt64([1, 0]), // height PublicAccount.createFromPublicKey('B4F12E7C9F6946091E2CB8B6D3A12B50D17CCBBF646386EA27CE2946A7423DCF', NetworkType.MIJIN_TEST), 1, // revision - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - restrictable: true, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(true, true, true), + 3, + UInt64.fromUint(1000), ); }); diff --git a/test/model/mosaic/MosaicFlags.spec.ts b/test/model/mosaic/MosaicFlags.spec.ts new file mode 100644 index 0000000000..d8e5f71567 --- /dev/null +++ b/test/model/mosaic/MosaicFlags.spec.ts @@ -0,0 +1,75 @@ +/* + * Copyright 2018 NEM + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {deepEqual} from 'assert'; +import {expect} from 'chai'; +import {MosaicFlags} from '../../../src/model/mosaic/MosaicFlags'; +import {UInt64} from '../../../src/model/UInt64'; + +describe('MosaicFlags', () => { + + it('should createComplete an MosaicFlags object with constructor', () => { + const propertiesDTO = { + flags: 7, + divisibility: 3, + duration: '1000', + }; + + const mosaicFlags = new MosaicFlags(7); + + expect(mosaicFlags.supplyMutable).to.be.equal(true); + expect(mosaicFlags.transferable).to.be.equal(true); + expect(mosaicFlags.restrictable).to.be.equal(true); + }); + + it('should createComplete an mosaicFlags object with static method', () => { + const duration = UInt64.fromUint(1000); + + const mosaicFlags = MosaicFlags.create(false, false, false); + + expect(mosaicFlags.supplyMutable).to.be.equal(false); + expect(mosaicFlags.transferable).to.be.equal(false); + expect(mosaicFlags.restrictable).to.be.equal(false); + }); + + it('should return corredt flags value', () => { + let mosaicFlags = MosaicFlags.create(false, false, false); + expect(mosaicFlags.getValue()).to.be.equal(0); + + mosaicFlags = MosaicFlags.create(true, false, false); + expect(mosaicFlags.getValue()).to.be.equal(1); + + mosaicFlags = MosaicFlags.create(false, true, false); + expect(mosaicFlags.getValue()).to.be.equal(2); + + mosaicFlags = MosaicFlags.create(false, false, true); + expect(mosaicFlags.getValue()).to.be.equal(4); + + mosaicFlags = MosaicFlags.create(true, true, true); + expect(mosaicFlags.getValue()).to.be.equal(7); + + mosaicFlags = MosaicFlags.create(true, false, true); + expect(mosaicFlags.getValue()).to.be.equal(5); + + mosaicFlags = MosaicFlags.create(true, true, false); + expect(mosaicFlags.getValue()).to.be.equal(3); + }); + + it('should return corredt flags json object', () => { + const mosaicFlags = MosaicFlags.create(true, true, true); + expect(mosaicFlags.toDTO().flags).to.be.equal(7); + }); +}); diff --git a/test/model/mosaic/MosaicInfo.spec.ts b/test/model/mosaic/MosaicInfo.spec.ts index 71bb380bc0..10f2069328 100644 --- a/test/model/mosaic/MosaicInfo.spec.ts +++ b/test/model/mosaic/MosaicInfo.spec.ts @@ -18,13 +18,13 @@ import {deepEqual} from 'assert'; import {expect} from 'chai'; import {PublicAccount} from '../../../src/model/account/PublicAccount'; import {NetworkType} from '../../../src/model/blockchain/NetworkType'; +import {MosaicFlags} from '../../../src/model/mosaic/MosaicFlags'; import {MosaicId} from '../../../src/model/mosaic/MosaicId'; import {MosaicInfo} from '../../../src/model/mosaic/MosaicInfo'; -import {MosaicProperties} from '../../../src/model/mosaic/MosaicProperties'; import {UInt64} from '../../../src/model/UInt64'; describe('MosaicInfo', () => { - let mosaicInfoDTO = { + const mosaicInfoDTO = { meta: { id: '59FDA0733F17CF0001772CBC', }, @@ -53,11 +53,9 @@ describe('MosaicInfo', () => { mosaicInfoDTO.mosaic.height, mosaicInfoDTO.mosaic.owner, mosaicInfoDTO.mosaic.revision, - new MosaicProperties( - mosaicInfoDTO.mosaic.flags, - mosaicInfoDTO.mosaic.divisibility, - UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), - ), + new MosaicFlags(mosaicInfoDTO.mosaic.flags), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ); deepEqual(mosaicInfo.id, mosaicInfoDTO.mosaic.mosaicId); @@ -79,10 +77,9 @@ describe('MosaicInfo', () => { mosaicInfoDTO.mosaic.height, mosaicInfoDTO.mosaic.owner, mosaicInfoDTO.mosaic.revision, - new MosaicProperties( - mosaicInfoDTO.mosaic.flags, - mosaicInfoDTO.mosaic.divisibility, - UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), + new MosaicFlags(mosaicInfoDTO.mosaic.flags), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration, ), ); @@ -105,12 +102,9 @@ describe('MosaicInfo', () => { mosaicInfoDTO.mosaic.height, mosaicInfoDTO.mosaic.owner, mosaicInfoDTO.mosaic.revision, - MosaicProperties.create({ - supplyMutable: true, - transferable: false, - divisibility: mosaicInfoDTO.mosaic.divisibility, - duration: UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), - }), + MosaicFlags.create(true, false, false), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ) ; expect(mosaicInfo.isSupplyMutable()).to.be.equal(true); @@ -123,12 +117,9 @@ describe('MosaicInfo', () => { mosaicInfoDTO.mosaic.height, mosaicInfoDTO.mosaic.owner, mosaicInfoDTO.mosaic.revision, - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: mosaicInfoDTO.mosaic.divisibility, - duration: UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), - }), + MosaicFlags.create(false, false, false), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ); expect(mosaicInfo.isSupplyMutable()).to.be.equal(false); }); @@ -142,12 +133,9 @@ describe('MosaicInfo', () => { mosaicInfoDTO.mosaic.height, mosaicInfoDTO.mosaic.owner, mosaicInfoDTO.mosaic.revision, - MosaicProperties.create({ - supplyMutable: false, - transferable: true, - divisibility: mosaicInfoDTO.mosaic.divisibility, - duration: UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), - }), + MosaicFlags.create(false, true, false), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ); expect(mosaicInfo.isTransferable()).to.be.equal(true); }); @@ -159,12 +147,9 @@ describe('MosaicInfo', () => { mosaicInfoDTO.mosaic.height, mosaicInfoDTO.mosaic.owner, mosaicInfoDTO.mosaic.revision, - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: mosaicInfoDTO.mosaic.divisibility, - duration: UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), - }), + MosaicFlags.create(false, false, false), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ); expect(mosaicInfo.isTransferable()).to.be.equal(false); }); @@ -178,13 +163,9 @@ describe('MosaicInfo', () => { mosaicInfoDTO.mosaic.height, mosaicInfoDTO.mosaic.owner, mosaicInfoDTO.mosaic.revision, - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: mosaicInfoDTO.mosaic.divisibility, - restrictable: true, - duration: UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), - }), + MosaicFlags.create(false, false, true), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ); expect(mosaicInfo.isRestrictable()).to.be.equal(true); }); @@ -196,12 +177,9 @@ describe('MosaicInfo', () => { mosaicInfoDTO.mosaic.height, mosaicInfoDTO.mosaic.owner, mosaicInfoDTO.mosaic.revision, - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: mosaicInfoDTO.mosaic.divisibility, - duration: UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), - }), + MosaicFlags.create(false, false, false), + mosaicInfoDTO.mosaic.divisibility, + UInt64.fromNumericString(mosaicInfoDTO.mosaic.duration), ); expect(mosaicInfo.isRestrictable()).to.be.equal(false); }); diff --git a/test/model/mosaic/MosaicProperties.spec.ts b/test/model/mosaic/MosaicProperties.spec.ts deleted file mode 100644 index 6e93b785c0..0000000000 --- a/test/model/mosaic/MosaicProperties.spec.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2018 NEM - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import {deepEqual} from 'assert'; -import {expect} from 'chai'; -import {MosaicProperties} from '../../../src/model/mosaic/MosaicProperties'; -import {UInt64} from '../../../src/model/UInt64'; - -describe('MosaicProperties', () => { - - it('should createComplete an MosaicProperties object with constructor', () => { - const propertiesDTO = { - flags: 7, - divisibility: 3, - duration: '1000', - }; - - const mosaicProperties = new MosaicProperties( - propertiesDTO.flags, - propertiesDTO.divisibility, - UInt64.fromNumericString(propertiesDTO.duration), - ); - - expect(mosaicProperties.divisibility).to.be.equal(propertiesDTO.divisibility); - deepEqual(mosaicProperties.duration.toString(), propertiesDTO.duration); - - expect(mosaicProperties.supplyMutable).to.be.equal(true); - expect(mosaicProperties.transferable).to.be.equal(true); - }); - - it('should createComplete an MosaicProperties object with static method', () => { - const duration = UInt64.fromUint(1000); - - const mosaicProperties = MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 10, - duration, - }); - - expect(mosaicProperties.divisibility).to.be.equal(10); - deepEqual(mosaicProperties.duration, duration); - - expect(mosaicProperties.supplyMutable).to.be.equal(false); - expect(mosaicProperties.transferable).to.be.equal(false); - expect(mosaicProperties.restrictable).to.be.equal(false); - }); - - it('should createComplete an MosaicProperties object without duration', () => { - const mosaicProperties = MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 10, - duration: UInt64.fromUint(0), - }); - - expect(mosaicProperties.divisibility).to.be.equal(10); - deepEqual(mosaicProperties.duration.toDTO(), [0, 0]); - - expect(mosaicProperties.supplyMutable).to.be.equal(false); - expect(mosaicProperties.transferable).to.be.equal(false); - expect(mosaicProperties.restrictable).to.be.equal(false); - }); -}); diff --git a/test/model/mosaic/MosaicView.spec.ts b/test/model/mosaic/MosaicView.spec.ts index 90a010ad22..5d19187a0b 100644 --- a/test/model/mosaic/MosaicView.spec.ts +++ b/test/model/mosaic/MosaicView.spec.ts @@ -17,9 +17,9 @@ import {expect} from 'chai'; import {PublicAccount} from '../../../src/model/account/PublicAccount'; import {NetworkType} from '../../../src/model/blockchain/NetworkType'; +import { MosaicFlags } from '../../../src/model/mosaic/MosaicFlags'; import {MosaicId} from '../../../src/model/mosaic/MosaicId'; import {MosaicInfo} from '../../../src/model/mosaic/MosaicInfo'; -import {MosaicProperties} from '../../../src/model/mosaic/MosaicProperties'; import {UInt64} from '../../../src/model/UInt64'; import {MosaicView} from '../../../src/service/MosaicView'; @@ -34,13 +34,9 @@ describe('MosaicView', () => { new UInt64([1, 0]), // height PublicAccount.createFromPublicKey('B4F12E7C9F6946091E2CB8B6D3A12B50D17CCBBF646386EA27CE2946A7423DCF', NetworkType.MIJIN_TEST), 1, // revision - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 2, - restrictable: true, - duration: UInt64.fromUint(1000), - })); + MosaicFlags.create(true, true, true), + 2, + UInt64.fromUint(1000)); }); it('should createComplete a Mosaic View', () => { diff --git a/test/model/transaction/AggregateTransaction.spec.ts b/test/model/transaction/AggregateTransaction.spec.ts index 6757737c1e..7927419e8b 100644 --- a/test/model/transaction/AggregateTransaction.spec.ts +++ b/test/model/transaction/AggregateTransaction.spec.ts @@ -22,9 +22,9 @@ import {Account} from '../../../src/model/account/Account'; import {Address} from '../../../src/model/account/Address'; import {PublicAccount} from '../../../src/model/account/PublicAccount'; import {NetworkType} from '../../../src/model/blockchain/NetworkType'; +import {MosaicFlags} from '../../../src/model/mosaic/MosaicFlags'; import {MosaicId} from '../../../src/model/mosaic/MosaicId'; import {MosaicNonce} from '../../../src/model/mosaic/MosaicNonce'; -import {MosaicProperties} from '../../../src/model/mosaic/MosaicProperties'; import {MosaicSupplyChangeAction} from '../../../src/model/mosaic/MosaicSupplyChangeAction'; import { NetworkCurrencyMosaic } from '../../../src/model/mosaic/NetworkCurrencyMosaic'; import {AggregateTransaction} from '../../../src/model/transaction/AggregateTransaction'; @@ -147,13 +147,9 @@ describe('AggregateTransaction', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - restrictable: true, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(true, true, true), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); diff --git a/test/model/transaction/MosaicDefinitionTransaction.spec.ts b/test/model/transaction/MosaicDefinitionTransaction.spec.ts index afa46f015a..fb93b54f56 100644 --- a/test/model/transaction/MosaicDefinitionTransaction.spec.ts +++ b/test/model/transaction/MosaicDefinitionTransaction.spec.ts @@ -17,9 +17,9 @@ import {expect} from 'chai'; import {Account} from '../../../src/model/account/Account'; import {NetworkType} from '../../../src/model/blockchain/NetworkType'; +import {MosaicFlags} from '../../../src/model/mosaic/MosaicFlags'; import {MosaicId} from '../../../src/model/mosaic/MosaicId'; import {MosaicNonce} from '../../../src/model/mosaic/MosaicNonce'; -import {MosaicProperties} from '../../../src/model/mosaic/MosaicProperties'; import {Deadline} from '../../../src/model/transaction/Deadline'; import {MosaicDefinitionTransaction} from '../../../src/model/transaction/MosaicDefinitionTransaction'; import {UInt64} from '../../../src/model/UInt64'; @@ -37,13 +37,9 @@ describe('MosaicDefinitionTransaction', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - restrictable: true, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(true, true, true), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); @@ -56,13 +52,9 @@ describe('MosaicDefinitionTransaction', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - restrictable: true, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(true, true, true), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, new UInt64([1, 0]), ); @@ -76,22 +68,18 @@ describe('MosaicDefinitionTransaction', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - restrictable: true, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(true, true, true), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); - expect(mosaicDefinitionTransaction.mosaicProperties.duration!.lower).to.be.equal(1000); - expect(mosaicDefinitionTransaction.mosaicProperties.duration!.higher).to.be.equal(0); - expect(mosaicDefinitionTransaction.mosaicProperties.divisibility).to.be.equal(3); - expect(mosaicDefinitionTransaction.mosaicProperties.supplyMutable).to.be.equal(true); - expect(mosaicDefinitionTransaction.mosaicProperties.transferable).to.be.equal(true); - expect(mosaicDefinitionTransaction.mosaicProperties.restrictable).to.be.equal(true); + expect(mosaicDefinitionTransaction.duration!.lower).to.be.equal(1000); + expect(mosaicDefinitionTransaction.duration!.higher).to.be.equal(0); + expect(mosaicDefinitionTransaction.divisibility).to.be.equal(3); + expect(mosaicDefinitionTransaction.flags.supplyMutable).to.be.equal(true); + expect(mosaicDefinitionTransaction.flags.transferable).to.be.equal(true); + expect(mosaicDefinitionTransaction.flags.restrictable).to.be.equal(true); const signedTransaction = mosaicDefinitionTransaction.signWith(account, generationHash); @@ -108,21 +96,18 @@ describe('MosaicDefinitionTransaction', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 3, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(false, false, false), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); - expect(mosaicDefinitionTransaction.mosaicProperties.duration!.lower).to.be.equal(1000); - expect(mosaicDefinitionTransaction.mosaicProperties.duration!.higher).to.be.equal(0); - expect(mosaicDefinitionTransaction.mosaicProperties.divisibility).to.be.equal(3); - expect(mosaicDefinitionTransaction.mosaicProperties.supplyMutable).to.be.equal(false); - expect(mosaicDefinitionTransaction.mosaicProperties.transferable).to.be.equal(false); - expect(mosaicDefinitionTransaction.mosaicProperties.restrictable).to.be.equal(false); + expect(mosaicDefinitionTransaction.duration!.lower).to.be.equal(1000); + expect(mosaicDefinitionTransaction.duration!.higher).to.be.equal(0); + expect(mosaicDefinitionTransaction.divisibility).to.be.equal(3); + expect(mosaicDefinitionTransaction.flags.supplyMutable).to.be.equal(false); + expect(mosaicDefinitionTransaction.flags.transferable).to.be.equal(false); + expect(mosaicDefinitionTransaction.flags.restrictable).to.be.equal(false); const signedTransaction = mosaicDefinitionTransaction.signWith(account, generationHash); @@ -139,12 +124,9 @@ describe('MosaicDefinitionTransaction', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: true, - transferable: true, - divisibility: 3, - duration: UInt64.fromUint(1000), - }), + MosaicFlags.create(true, true, false), + 3, + UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); expect(mosaicDefinitionTransaction.size).to.be.equal(144); @@ -157,19 +139,16 @@ describe('MosaicDefinitionTransaction', () => { Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce new MosaicId(UInt64.fromUint(1).toDTO()), // ID - MosaicProperties.create({ - supplyMutable: false, - transferable: false, - divisibility: 3, - duration: UInt64.fromUint(0), - }), + MosaicFlags.create(false, false, false), + 3, + UInt64.fromUint(0), NetworkType.MIJIN_TEST, ); - expect(mosaicDefinitionTransaction.mosaicProperties.divisibility).to.be.equal(3); - expect(mosaicDefinitionTransaction.mosaicProperties.supplyMutable).to.be.equal(false); - expect(mosaicDefinitionTransaction.mosaicProperties.transferable).to.be.equal(false); - expect(mosaicDefinitionTransaction.mosaicProperties.restrictable).to.be.equal(false); + expect(mosaicDefinitionTransaction.divisibility).to.be.equal(3); + expect(mosaicDefinitionTransaction.flags.supplyMutable).to.be.equal(false); + expect(mosaicDefinitionTransaction.flags.transferable).to.be.equal(false); + expect(mosaicDefinitionTransaction.flags.restrictable).to.be.equal(false); const signedTransaction = mosaicDefinitionTransaction.signWith(account, generationHash);