Skip to content

Commit 2f216b4

Browse files
authored
Merge pull request #845 from symbol/dev
Release v2.0.2
2 parents 6d9df5e + d9733ae commit 2f216b4

File tree

3 files changed

+76
-23
lines changed

3 files changed

+76
-23
lines changed

CHANGELOG.md

+15-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.
44

55
The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
66

7+
## 2.0.2 - 7-Oct-2022
8+
9+
**Milestone**: Symbol Mainnet
10+
Package | Version | Link
11+
---|---|---
12+
SDK Core| v2.0.2 | [symbol-sdk](https://www.npmjs.com/package/symbol-sdk)
13+
Catbuffer | v1.0.1 | [catbuffer-typescript](https://www.npmjs.com/package/catbuffer-typescript)
14+
Client Library | v1.0.3 | [symbol-openapi-typescript-fetch-client](https://www.npmjs.com/package/symbol-openapi-typescript-fetch-client)
15+
16+
[Bug] [#843](https://github.com/symbol/symbol-sdk-typescript-javascript/pull/843): Handle transaction meta's timestamp and feeMultiplier when value is undefined.
17+
718
## 2.0.1 - 30-May-2022
819

920
**Milestone**: Symbol Mainnet
@@ -39,7 +50,7 @@ SDK Core| v1.0.3 | [symbol-sdk](https://www.npmjs.com/package/symbol-sdk)
3950
Catbuffer | v1.0.1 | [catbuffer-typescript](https://www.npmjs.com/package/catbuffer-typescript)
4051
Client Library | v1.0.3 | [symbol-openapi-typescript-fetch-client](https://www.npmjs.com/package/symbol-openapi-typescript-fetch-client)
4152

42-
- fix: replaced `instanceof` statements. These statements are problematic when npm installs the dependency in multiples modules.
53+
- fix: replaced `instanceof` statements. These statements are problematic when npm installs the dependency in multiples modules.
4354
- feat: added mosaic revocation support.
4455

4556
## [1.0.2] - 25-Oct-2021
@@ -53,8 +64,8 @@ Client Library | v1.0.2 | [symbol-openapi-typescript-fetch-client](https://www.n
5364

5465
- feat: Multisig multilevel subscription in web listener.
5566
- feat: Added Deployment data to `ServerInfo`.
56-
- fix: Fixed observable pipe in `TransactionService`'s announce method.
57-
- fix: Allowing plain base32 addresses in rest payloads. Both address formats are supported.
67+
- fix: Fixed observable pipe in `TransactionService`'s announce method.
68+
- fix: Allowing plain base32 addresses in rest payloads. Both address formats are supported.
5869
- fix: Cosigning from transaction hash only.
5970
- fix: Transaction `signWith` method broken into smaller methods.
6071
- fix: Removed unsued dependencies.
@@ -748,7 +759,7 @@ Client Library | v0.7.20-alpha.6 | [nem2-sdk-openapi-typescript-node-client](ht
748759

749760
**Milestone**: Cow
750761

751-
- Fixed #125, maxFee DTO value errors with in-aggregate MosaicSupplyChange and HashLock transactions
762+
- Fixed #125, maxFee DTO value errors with in-aggregate MosaicSupplyChange and HashLock transactions
752763

753764
## [0.11.4] - 17-Apr-2019
754765

src/infrastructure/transaction/CreateTransactionFromDTO.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ const extractTransactionMeta = (meta: any, id: string): TransactionInfo | Aggreg
122122
UInt64.fromNumericString(meta.height),
123123
meta.index,
124124
id,
125-
UInt64.fromNumericString(meta.timestamp),
126-
meta.feeMultiplier,
125+
UInt64.fromNumericString(meta.timestamp ?? '0'),
126+
meta.feeMultiplier ?? 0,
127127
meta.aggregateHash,
128128
meta.aggregateId,
129129
);
@@ -132,8 +132,8 @@ const extractTransactionMeta = (meta: any, id: string): TransactionInfo | Aggreg
132132
UInt64.fromNumericString(meta.height),
133133
meta.index,
134134
id,
135-
UInt64.fromNumericString(meta.timestamp),
136-
meta.feeMultiplier,
135+
UInt64.fromNumericString(meta.timestamp ?? '0'),
136+
meta.feeMultiplier ?? 0,
137137
meta.hash,
138138
meta.merkleComponentHash,
139139
);

test/infrastructure/TransactionHttp.spec.ts

+57-15
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,6 @@ describe('TransactionHttp', () => {
101101
metaDto.hash = 'hash';
102102
metaDto.height = '1';
103103
metaDto.index = 0;
104-
metaDto.timestamp = '0';
105-
metaDto.feeMultiplier = 0;
106104
metaDto.merkleComponentHash = 'merkleHash';
107105

108106
const transactionDto = {} as TransferTransactionDTO;
@@ -139,7 +137,22 @@ describe('TransactionHttp', () => {
139137
undefined,
140138
undefined,
141139
),
142-
).thenReturn(Promise.resolve(page));
140+
).thenReturn(
141+
Promise.resolve({
142+
data: [
143+
{
144+
id: 'id',
145+
meta: {
146+
...metaDto,
147+
feeMultiplier: 100,
148+
timestamp: '1000',
149+
},
150+
transaction: transactionDto,
151+
},
152+
],
153+
pagination: paginationDto,
154+
}),
155+
);
143156

144157
when(
145158
transactionRoutesApi.searchPartialTransactions(
@@ -188,8 +201,8 @@ describe('TransactionHttp', () => {
188201
expect(((transactions.data[0] as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
189202
expect(transactions.data[0].transactionInfo?.id).to.be.equal('id');
190203
expect(transactions.data[0].transactionInfo?.hash).to.be.equal('hash');
191-
expect(transactions.data[0].transactionInfo?.timestamp?.toString()).to.be.equal('0');
192-
expect(transactions.data[0].transactionInfo?.feeMultiplier).to.be.equal(0);
204+
expect(transactions.data[0].transactionInfo?.timestamp?.toString()).to.be.equal('1000');
205+
expect(transactions.data[0].transactionInfo?.feeMultiplier).to.be.equal(100);
193206

194207
expect(transactions.pageNumber).to.be.equal(1);
195208
expect(transactions.pageSize).to.be.equal(1);
@@ -201,6 +214,8 @@ describe('TransactionHttp', () => {
201214
expect(((transactions.data[0] as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
202215
expect(transactions.data[0].transactionInfo?.id).to.be.equal('id');
203216
expect(transactions.data[0].transactionInfo?.hash).to.be.equal('hash');
217+
expect(transactions.data[0].transactionInfo?.timestamp?.toString()).to.be.equal('0');
218+
expect(transactions.data[0].transactionInfo?.feeMultiplier).to.be.equal(0);
204219

205220
expect(transactions.pageNumber).to.be.equal(1);
206221
expect(transactions.pageSize).to.be.equal(1);
@@ -212,6 +227,8 @@ describe('TransactionHttp', () => {
212227
expect(((transactions.data[0] as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
213228
expect(transactions.data[0].transactionInfo?.id).to.be.equal('id');
214229
expect(transactions.data[0].transactionInfo?.hash).to.be.equal('hash');
230+
expect(transactions.data[0].transactionInfo?.timestamp?.toString()).to.be.equal('0');
231+
expect(transactions.data[0].transactionInfo?.feeMultiplier).to.be.equal(0);
215232

216233
expect(transactions.pageNumber).to.be.equal(1);
217234
expect(transactions.pageSize).to.be.equal(1);
@@ -223,8 +240,6 @@ describe('TransactionHttp', () => {
223240
metaDto.hash = 'hash';
224241
metaDto.height = '1';
225242
metaDto.index = 0;
226-
metaDto.timestamp = '0';
227-
metaDto.feeMultiplier = 0;
228243
metaDto.merkleComponentHash = 'merkleHash';
229244

230245
const transactionDto = {} as TransferTransactionDTO;
@@ -240,7 +255,17 @@ describe('TransactionHttp', () => {
240255
transactionInfoDto.meta = metaDto;
241256
transactionInfoDto.transaction = transactionDto;
242257

243-
when(transactionRoutesApi.getConfirmedTransaction(generationHash)).thenReturn(Promise.resolve(transactionInfoDto));
258+
when(transactionRoutesApi.getConfirmedTransaction(generationHash)).thenReturn(
259+
Promise.resolve({
260+
id: 'id',
261+
meta: {
262+
...metaDto,
263+
feeMultiplier: 100,
264+
timestamp: '1000',
265+
},
266+
transaction: transactionDto,
267+
}),
268+
);
244269

245270
when(transactionRoutesApi.getPartialTransaction(generationHash)).thenReturn(Promise.resolve(transactionInfoDto));
246271
when(transactionRoutesApi.getUnconfirmedTransaction(generationHash)).thenReturn(Promise.resolve(transactionInfoDto));
@@ -251,21 +276,26 @@ describe('TransactionHttp', () => {
251276
expect(((transaction as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
252277
expect(transaction.transactionInfo?.id).to.be.equal('id');
253278
expect(transaction.transactionInfo?.hash).to.be.equal('hash');
254-
expect(transaction.transactionInfo?.timestamp?.toString()).to.be.equal('0');
255-
expect(transaction.transactionInfo?.feeMultiplier).to.be.equal(0);
279+
expect(transaction.transactionInfo?.timestamp?.toString()).to.be.equal('1000');
280+
expect(transaction.transactionInfo?.feeMultiplier).to.be.equal(100);
256281

257282
transaction = await firstValueFrom(transactionHttp.getTransaction(generationHash, TransactionGroup.Partial));
258283

259284
expect(transaction.type.valueOf()).to.be.equal(TransactionType.TRANSFER.valueOf());
260285
expect(((transaction as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
261286
expect(transaction.transactionInfo?.id).to.be.equal('id');
262287
expect(transaction.transactionInfo?.hash).to.be.equal('hash');
288+
expect(transaction.transactionInfo?.timestamp?.toString()).to.be.equal('0');
289+
expect(transaction.transactionInfo?.feeMultiplier).to.be.equal(0);
290+
263291
transaction = await firstValueFrom(transactionHttp.getTransaction(generationHash, TransactionGroup.Unconfirmed));
264292

265293
expect(transaction.type.valueOf()).to.be.equal(TransactionType.TRANSFER.valueOf());
266294
expect(((transaction as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
267295
expect(transaction.transactionInfo?.id).to.be.equal('id');
268296
expect(transaction.transactionInfo?.hash).to.be.equal('hash');
297+
expect(transaction.transactionInfo?.timestamp?.toString()).to.be.equal('0');
298+
expect(transaction.transactionInfo?.feeMultiplier).to.be.equal(0);
269299
});
270300

271301
it('Test getTransactionsById method', async () => {
@@ -274,8 +304,6 @@ describe('TransactionHttp', () => {
274304
metaDto.hash = 'hash';
275305
metaDto.height = '1';
276306
metaDto.index = 0;
277-
metaDto.timestamp = '0';
278-
metaDto.feeMultiplier = 0;
279307
metaDto.merkleComponentHash = 'merkleHash';
280308

281309
const transactionDto = {} as TransferTransactionDTO;
@@ -292,7 +320,17 @@ describe('TransactionHttp', () => {
292320
transactionInfoDto.transaction = transactionDto;
293321

294322
when(transactionRoutesApi.getConfirmedTransactions(deepEqual({ transactionIds: [generationHash] }))).thenReturn(
295-
Promise.resolve([transactionInfoDto]),
323+
Promise.resolve([
324+
{
325+
id: 'id',
326+
meta: {
327+
...metaDto,
328+
feeMultiplier: 100,
329+
timestamp: '1000',
330+
},
331+
transaction: transactionDto,
332+
},
333+
]),
296334
);
297335

298336
const transactionConfirmed = await firstValueFrom(
@@ -318,20 +356,24 @@ describe('TransactionHttp', () => {
318356
expect(((transactionConfirmed[0] as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
319357
expect(transactionConfirmed[0].transactionInfo?.id).to.be.equal('id');
320358
expect(transactionConfirmed[0].transactionInfo?.hash).to.be.equal('hash');
321-
expect(transactionConfirmed[0].transactionInfo?.timestamp?.toString()).to.be.equal('0');
322-
expect(transactionConfirmed[0].transactionInfo?.feeMultiplier).to.be.equal(0);
359+
expect(transactionConfirmed[0].transactionInfo?.timestamp?.toString()).to.be.equal('1000');
360+
expect(transactionConfirmed[0].transactionInfo?.feeMultiplier).to.be.equal(100);
323361

324362
expect(transactionUnconfirmed.length).to.be.equal(1);
325363
expect(transactionUnconfirmed[0].type.valueOf()).to.be.equal(TransactionType.TRANSFER.valueOf());
326364
expect(((transactionUnconfirmed[0] as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
327365
expect(transactionUnconfirmed[0].transactionInfo?.id).to.be.equal('id');
328366
expect(transactionUnconfirmed[0].transactionInfo?.hash).to.be.equal('hash');
367+
expect(transactionUnconfirmed[0].transactionInfo?.timestamp?.toString()).to.be.equal('0');
368+
expect(transactionUnconfirmed[0].transactionInfo?.feeMultiplier).to.be.equal(0);
329369

330370
expect(transactionPartial.length).to.be.equal(1);
331371
expect(transactionPartial[0].type.valueOf()).to.be.equal(TransactionType.TRANSFER.valueOf());
332372
expect(((transactionPartial[0] as TransferTransaction).recipientAddress as Address).plain()).to.be.equal(TestAddress.plain());
333373
expect(transactionPartial[0].transactionInfo?.id).to.be.equal('id');
334374
expect(transactionPartial[0].transactionInfo?.hash).to.be.equal('hash');
375+
expect(transactionPartial[0].transactionInfo?.timestamp?.toString()).to.be.equal('0');
376+
expect(transactionPartial[0].transactionInfo?.feeMultiplier).to.be.equal(0);
335377
});
336378

337379
it('Test getEffectiveFees method', async () => {

0 commit comments

Comments
 (0)