1616
1717import { assert } from 'chai' ;
1818import { expect } from 'chai' ;
19+ import { Convert } from '../../src/core/format/Convert' ;
1920import { Listener } from '../../src/infrastructure/Listener' ;
2021import { NamespaceHttp } from '../../src/infrastructure/NamespaceHttp' ;
2122import { TransactionHttp } from '../../src/infrastructure/TransactionHttp' ;
@@ -36,6 +37,7 @@ import { AggregateTransaction } from '../../src/model/transaction/AggregateTrans
3637import { Deadline } from '../../src/model/transaction/Deadline' ;
3738import { MosaicAliasTransaction } from '../../src/model/transaction/MosaicAliasTransaction' ;
3839import { MosaicDefinitionTransaction } from '../../src/model/transaction/MosaicDefinitionTransaction' ;
40+ import { MosaicMetadataTransaction } from '../../src/model/transaction/MosaicMetadataTransaction' ;
3941import { MosaicSupplyChangeTransaction } from '../../src/model/transaction/MosaicSupplyChangeTransaction' ;
4042import { NamespaceRegistrationTransaction } from '../../src/model/transaction/NamespaceRegistrationTransaction' ;
4143import { TransferTransaction } from '../../src/model/transaction/TransferTransaction' ;
@@ -51,6 +53,7 @@ describe('TransactionService', () => {
5153 let addressAlias : NamespaceId ;
5254 let mosaicAlias : NamespaceId ;
5355 let mosaicId : MosaicId ;
56+ let newMosaicId : MosaicId ;
5457 let transactionHttp : TransactionHttp ;
5558 let config ;
5659 let transactionHashes : string [ ] ;
@@ -125,7 +128,7 @@ describe('TransactionService', () => {
125128 const registerNamespaceTransaction = NamespaceRegistrationTransaction . createRootNamespace (
126129 Deadline . create ( ) ,
127130 namespaceName ,
128- UInt64 . fromUint ( 9 ) ,
131+ UInt64 . fromUint ( 20 ) ,
129132 NetworkType . MIJIN_TEST ,
130133 ) ;
131134 mosaicAlias = new NamespaceId ( namespaceName ) ;
@@ -304,6 +307,12 @@ describe('TransactionService', () => {
304307 } ) ;
305308 } ) ;
306309
310+ /**
311+ * =====================================
312+ * Setup test aggregate transaction data
313+ * =====================================
314+ */
315+
307316 describe ( 'Create Aggreate TransferTransaction' , ( ) => {
308317 let listener : Listener ;
309318 before ( ( ) => {
@@ -324,8 +333,56 @@ describe('TransactionService', () => {
324333 PlainMessage . create ( 'test-message' ) ,
325334 NetworkType . MIJIN_TEST ,
326335 ) ;
336+ // Unlink MosaicAlias
337+ const mosaicAliasTransactionUnlink = MosaicAliasTransaction . create (
338+ Deadline . create ( ) ,
339+ AliasAction . Unlink ,
340+ mosaicAlias ,
341+ mosaicId ,
342+ NetworkType . MIJIN_TEST ,
343+ ) ;
344+
345+ // Create a new Mosaic
346+ const nonce = MosaicNonce . createRandom ( ) ;
347+ newMosaicId = MosaicId . createFromNonce ( nonce , account . publicAccount ) ;
348+ const mosaicDefinitionTransaction = MosaicDefinitionTransaction . create (
349+ Deadline . create ( ) ,
350+ nonce ,
351+ newMosaicId ,
352+ MosaicFlags . create ( true , true , false ) ,
353+ 3 ,
354+ UInt64 . fromUint ( 0 ) ,
355+ NetworkType . MIJIN_TEST ,
356+ ) ;
357+
358+ // Link namespace with new MosaicId
359+ const mosaicAliasTransactionRelink = MosaicAliasTransaction . create (
360+ Deadline . create ( ) ,
361+ AliasAction . Link ,
362+ mosaicAlias ,
363+ newMosaicId ,
364+ NetworkType . MIJIN_TEST ,
365+ ) ;
366+
367+ // Use new mosaicAlias in metadata
368+ const mosaicMetadataTransaction = MosaicMetadataTransaction . create (
369+ Deadline . create ( ) ,
370+ account . publicKey ,
371+ UInt64 . fromUint ( 5 ) ,
372+ mosaicAlias ,
373+ 10 ,
374+ Convert . uint8ToUtf8 ( new Uint8Array ( 10 ) ) ,
375+ NetworkType . MIJIN_TEST ,
376+ ) ;
327377 const aggregateTransaction = AggregateTransaction . createComplete ( Deadline . create ( ) ,
328- [ transferTransaction . toAggregate ( account . publicAccount ) ] ,
378+ [
379+ transferTransaction . toAggregate ( account . publicAccount ) ,
380+ mosaicAliasTransactionUnlink . toAggregate ( account . publicAccount ) ,
381+ mosaicDefinitionTransaction . toAggregate ( account . publicAccount ) ,
382+ mosaicAliasTransactionRelink . toAggregate ( account . publicAccount ) ,
383+ mosaicMetadataTransaction . toAggregate ( account . publicAccount ) ,
384+
385+ ] ,
329386 NetworkType . MIJIN_TEST ,
330387 [ ] ,
331388 ) ;
@@ -359,13 +416,17 @@ describe('TransactionService', () => {
359416 expect ( ( tx . recipientAddress as Address ) . plain ( ) ) . to . be . equal ( account . address . plain ( ) ) ;
360417 expect ( tx . mosaics . find ( ( m ) => m . id . toHex ( ) === mosaicId . toHex ( ) ) ) . not . to . equal ( undefined ) ;
361418 } else if ( tx instanceof AggregateTransaction ) {
419+ expect ( tx . innerTransactions . length ) . to . be . equal ( 5 ) ;
420+ // Assert Transfer
362421 expect ( ( ( tx . innerTransactions [ 0 ] as TransferTransaction ) . recipientAddress as Address )
363422 . plain ( ) ) . to . be . equal ( account . address . plain ( ) ) ;
364423 expect ( ( tx . innerTransactions [ 0 ] as TransferTransaction ) . mosaics
365424 . find ( ( m ) => m . id . toHex ( ) === mosaicId . toHex ( ) ) ) . not . to . equal ( undefined ) ;
425+ // Assert MosaicMeta
426+ expect ( ( tx . innerTransactions [ 4 ] as MosaicMetadataTransaction )
427+ . targetMosaicId . toHex ( ) === newMosaicId . toHex ( ) ) . to . be . true ;
366428 }
367429 } ) ;
368- done ( ) ;
369430 } ) ;
370431 } ) ;
371432 } ) ;
0 commit comments