diff --git a/CHANGELOG.md b/CHANGELOG.md
index 36afa7949..837bd0037 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,46 @@ All notable changes to this project will be documented in this file.
The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
+## [v0.6.0][v0.6.0] - 26-Sep-2020
+
+### Milestone: [catapult-server@v0.10.0.3](https://github.com/nemtech/catapult-server/releases/tag/v0.10.0.3)
+
+Package | Version | Link
+---|---|---
+REST Core| v2.1.0 | [catapult-rest](https://github.com/nemtech/catapult-rest/releases/tag/v2.1.0)
+SDK Core| v0.21.0 | [symbol-sdk](https://www.npmjs.com/package/symbol-sdk)
+
+### Added
+- Added compatibility for 0.10.0.3 server.
+- Added Secret Hash information in Account Detail page.
+- Added Hash Lock information in Account Detail page.
+- Added Hash Lock information in transaction details.
+- Added Mosaic Address Restrictions information in Account Detail page.
+- Added Transaction Graphic widget to visualize transaction info
+ - HashLockTransaction
+ - SecretLockTransaction
+ - SecretProofTransaction
+ - AccountKeyLinkTransaction
+ - NodeKeyLinkTransaction
+ - VotingKeyLinkTransaction
+ - VrfKeyLinkTransaction
+ - MosaicDefinitionTransaction
+ - MosaicSupplyChangeTransaction
+- Added Finality block height in Base Info widget.
+- Added Finality Status compoment beside the block height showing block Pending or Finalized.
+- Added more japanese translations (Thanks @44uk).
+
+### Update
+- Refactor Transaction graphic widget and schema
+- Refactor Pagination related to SDK change
+- Refactor ChainService related to SDK change.
+- Refactor RestrictionService related to SDK change
+
+### Fixed
+- TransactionDetail. Loading never ends [#615](https://github.com/nemgrouplimited/symbol-explorer/issues/615)
+- Aggregate inner transaction are not formatted [#618](https://github.com/nemgrouplimited/symbol-explorer/issues/618)
+
+
## [v0.5.0][v0.5.0] - 15-Aug-2020
### Milestone: [catapult-server@v0.9.6.4](https://github.com/nemtech/catapult-server/releases/tag/v0.9.6.4)
@@ -79,4 +119,5 @@ SDK Core| v0.20.7 | [symbol-sdk](https://www.npmjs.com/package/symbol-sdk)
[v0.3.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.3.0
[v0.4.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.4.0
-[v0.5.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.5.0
\ No newline at end of file
+[v0.5.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.5.0
+[v0.6.0]: https://github.com/nemfoundation/symbol-explorer/releases/tag/v0.6.0
\ No newline at end of file
diff --git a/e2e/components/SearchBox.spec.js b/e2e/components/SearchBox.spec.js
index 818a8e898..739b94410 100644
--- a/e2e/components/SearchBox.spec.js
+++ b/e2e/components/SearchBox.spec.js
@@ -22,7 +22,7 @@ describe('Search Box component should', () => {
.type('{enter}')
cy.url()
- .should('contain', 'block/1')
+ .should('contain', 'blocks/1')
})
it('redirect to transaction detail page given correct transaction hash', () => {
@@ -32,7 +32,7 @@ describe('Search Box component should', () => {
.type('{enter}')
cy.url()
- .should('contain', `transaction/${config.testTransactions.transferTransaction}`)
+ .should('contain', `transactions/${config.testTransactions.transferTransaction}`)
})
it('redirect to account detail page given correct account address in plain format', () => {
@@ -42,7 +42,7 @@ describe('Search Box component should', () => {
.type('{enter}')
cy.url()
- .should('contain', `account/${config.testAccount.address}`)
+ .should('contain', `accounts/${config.testAccount.address}`)
})
it('redirect to account detail page given correct account address in pretty format', () => {
@@ -54,6 +54,6 @@ describe('Search Box component should', () => {
.type('{enter}')
cy.url()
- .should('contain', `account/${config.testAccount.address}`)
+ .should('contain', `accounts/${config.testAccount.address}`)
})
})
\ No newline at end of file
diff --git a/e2e/config/datafiled.json b/e2e/config/datafiled.json
index 7003e82d2..0d6826835 100644
--- a/e2e/config/datafiled.json
+++ b/e2e/config/datafiled.json
@@ -1,3 +1,3 @@
{
- "transactionInfoFields": ["Block Height", "Transaction Hash", "Date", "Deadline", "Fee", "Signature", "Signer", "Status", "Confirmation"]
+ "transactionInfoFields": ["Block Height", "Size (bytes)", "Transaction Hash", "Date", "Deadline", "Fee", "Signature", "Signer", "Status", "Confirmation"]
}
\ No newline at end of file
diff --git a/e2e/config/network.conf.json b/e2e/config/network.conf.json
index 299887822..4910d1966 100644
--- a/e2e/config/network.conf.json
+++ b/e2e/config/network.conf.json
@@ -1,9 +1,9 @@
{
"testAccount": {
- "address": "TDS44G6KUHO7MODUB6E6WVJOK277QY65XCBJX5Y"
+ "address": "TAB4OVF7V4HXLKF6TQB67XACDUFMWPRI24M6KVI"
},
"testMosaic": {
- "mosaicId": "5E62990DCAC5BE8A"
+ "mosaicId": "2054DA418770623F"
},
"testNamespace": {
"rootNamespace": "symbol",
@@ -13,20 +13,21 @@
"height": "1"
},
"testTransactions":{
- "transferTransaction": "38E7FF47113FAD41C019EF928168CCBF2707D5B894F8F588AAAE0C5A7AC369F5",
- "mosaicAlias": "8DDBF0C14509E3445DBBB4B44C5173CB351B6436E959DB004FD22296CC3E2707",
- "addressAlias": "D38F5EC98EE6CACA8EF24372D7345FA80456E470D06570779B4BEC95F7DEDDB8",
- "mosaicSupplyChange": "4C1DFA4383EDFE690BA76C3272D0E3ACFC2ED2D6E187C2CB6FB227D1B44BDB40",
- "mosaicDefinition": "421AE4A15F6B84573CEC17DDFE0C0C66C775179799D701E9CEFCFA85EE9B1ECB",
- "namespaceRegistration": "891D435A6CD0CC030678A1FCDCF69AEC89B1E25BCBF0F7F06BADCA90F3EB97D1",
- "secretLock": "82E767CD8F04F09C8A659AC184927329FBC0F40667D383AA3B5794E61D8A8A95",
- "secretProof": "A06B03122745770491E786390F6123BD10D642DBD103425A06062D821FFA38C9",
- "aggregateComplete": "8C05D7CFB28F69AE2576F62935D1982E06530A791EFD19E3AAE3B136C4ECD28A",
- "aggregateBonded": "A4E21A49A0BFEF5AC64F2CA8B615E234A376086B9AEEE3C0DA06459AA58932B3",
- "hashLock":"3C397199A8E05CEBF695B926B9E67015D2C5630A8926A803B66023AA49C404C3",
- "accountOperationRestriction": "788D6532D7FFE76E2F3EE5E4D1FF8B97A5E953A3A02EBA0AE4AD6BF29E5091B3",
- "accountAddressRestriction": "21C22D63EC115AA03104ABC893B3C77C991CA582BD7487E5B25B76FD1AEE95AB",
- "accountMosaicRestriction":"A24FA914C7DB11994C0480BAC4A7C30ED2FA830319C7003A3E707CF6A4CE6270",
- "vrfKeyLink":"27C9990A6D67A9C2695E9787DAB480B5C075CD24F2A56044166914AC2E1B8DBC"
+ "transferTransaction": "79F07B7726DAC43645CD682127383970FA40BFCCE74EBD5DB89FE7CDB5B1036D",
+ "mosaicAlias": "3793B719514AC9E529293A7E3B5744A584B29DCF13ACCEEA8408480F0B936EA7",
+ "addressAlias": "DFAF072EE15FA64C22B9A8802FA87BE94D0280B28B6218F44BA3A1D78B0D3545",
+ "mosaicSupplyChange": "D26F327A6852B03403AEA1433B75CA83E3C9C2C7ADC0C154638928A5E9B44D8A",
+ "mosaicDefinition": "0969C9EA465D503C600BD2F09603C213EBFA92B93B2B9D8CA7ED29691652129A",
+ "namespaceRegistration": "9ECFF1C776286228EC88927B14BBF22FB0DAB1EA0C3356A4326DAD50E09268B9",
+ "secretLock": "BF5B997C894C960F4632B51E152FE28CA41FD5D534B685C004221CAFAB5CD744",
+ "secretProof": "516C77975E5F80D03AF336EF8A5DC23F95673DD1B481806FE2894366AC31D757",
+ "aggregateComplete": "51A5E6663E08449020AFC6CF2BE846001067205CB3E4B48B07E6D3AD45AAD862",
+ "aggregateBonded": "04DED0D9498AE97DC88AF80E8CBE4519F8F855DB2BB4F44AB1697777634EAC3E",
+ "hashLock":"041A4675B56B0A8AA3FE1DC10A98D856C234EB5EBA230F09BE478C2C4B81E22C",
+ "accountOperationRestriction": "55CAE5FE1E72B4A6139630D633871ADE3C30857CC32A0EC818D7F5A3B966AD49",
+ "accountAddressRestriction": "8D151C7C4C71E1D43A0F85CC0A6EB6DE5F4779B00A681F6BE36D0E8A13BAF33A",
+ "accountMosaicRestriction":"7172DFE1ECD06EA739B8FA6A0B0B724197D2E5BC96092D582927F6E254BB163B",
+ "vrfKeyLink":"7D2A9EEBC8C300C84753E2CA7434790EEC8B533F1C97BE61438396830A28B806",
+ "votingKeyLink":"A8F8861460F51E243ABBD167A7402C9FA8EFDA80914F41A7AB610A2994047A74"
}
}
\ No newline at end of file
diff --git a/e2e/pageDetail/accountDetail.spec.js b/e2e/pageDetail/accountDetail.spec.js
index 581ae12da..5c29b5808 100644
--- a/e2e/pageDetail/accountDetail.spec.js
+++ b/e2e/pageDetail/accountDetail.spec.js
@@ -2,7 +2,7 @@ import config from '../config/network.conf.json'
describe('Symbol Explorer Account Detail page', () => {
beforeEach(() => {
- cy.visit(`/account/${config.testAccount.address}`)
+ cy.visit(`/accounts/${config.testAccount.address}`)
})
describe('Account Detail Card should', () => {
@@ -15,25 +15,26 @@ describe('Symbol Explorer Account Detail page', () => {
})
it('render correct table fields.', () => {
- const items = ['Address', 'Alias Namespace', 'Address height', 'Public key', 'Importance', 'Account type', 'Harvested blocks (all)']
+ const items = ['Address', 'Alias Namespace', 'Address height', 'Public key', 'Importance', 'Account type']
cy.renderFieldInTable("accountDetailTitle", items)
})
})
- describe('Multisig Cosignatories Card should', () => {
- it('load title', () => {
- cy.get('[data-cy="multisigCosignatoriesTitle"]').should('contain', 'Multisig Cosignatories')
- })
+ // Todo: Multisig Cosignatories
+ // describe('Multisig Cosignatories Card should', () => {
+ // it('load title', () => {
+ // cy.get('[data-cy="multisigCosignatoriesTitle"]').should('contain', 'Multisig Cosignatories')
+ // })
- it('render table in card', ()=> {
- cy.renderTableInCard("multisigCosignatoriesTitle")
- })
+ // it('render table in card', ()=> {
+ // cy.renderTableInCard("multisigCosignatoriesTitle")
+ // })
- it('render correct table fields.', () => {
- const items = ['Minimum Approval', 'Minimum Removal', 'Cosignatories']
- cy.renderFieldInTable("multisigCosignatoriesTitle", items)
- })
- })
+ // it('render correct table fields.', () => {
+ // const items = ['Minimum Approval', 'Minimum Removal', 'Cosignatories']
+ // cy.renderFieldInTable("multisigCosignatoriesTitle", items)
+ // })
+ // })
describe('Owned Mosaics Card should', () => {
it('load title', () => {
@@ -110,20 +111,21 @@ describe('Symbol Explorer Account Detail page', () => {
})
})
- describe('Harvested Blocks Card should', () => {
- it('load title', () => {
- cy.get('[data-cy="harvestedBlockTitle"]').should('contain', 'Harvested Blocks')
- })
-
- it('render table in card', () => {
- cy.renderTableInCard("harvestedBlockTitle")
- })
-
- it('render correct table header.', () => {
- const items = ['Height', 'Age', 'Transactions', 'Total Fee', 'Date', 'Harvester']
- cy.renderHeaderInTable("harvestedBlockTitle", items)
- })
- })
+ // Todo: Harvested Blocks Card
+ // describe('Harvested Blocks Card should', () => {
+ // it('load title', () => {
+ // cy.get('[data-cy="harvestedBlockTitle"]').should('contain', 'Harvested Blocks')
+ // })
+
+ // it('render table in card', () => {
+ // cy.renderTableInCard("harvestedBlockTitle")
+ // })
+
+ // it('render correct table header.', () => {
+ // const items = ['Height', 'Age', 'Transactions', 'Total Fee', 'Date', 'Harvester']
+ // cy.renderHeaderInTable("harvestedBlockTitle", items)
+ // })
+ // })
// Todo: Metadata Entries
// Todo: Account Restriction
diff --git a/e2e/pageDetail/blockDetail.spec.js b/e2e/pageDetail/blockDetail.spec.js
index ccdd4eb4b..31bfaa735 100644
--- a/e2e/pageDetail/blockDetail.spec.js
+++ b/e2e/pageDetail/blockDetail.spec.js
@@ -2,7 +2,7 @@ import config from '../config/network.conf.json'
describe('Symbol Explorer Blocks detail page', () => {
beforeEach(() => {
- cy.visit(`/block/${config.testBlock.height}`)
+ cy.visit(`/blocks/${config.testBlock.height}`)
})
describe('Block Detail Card should', () => {
@@ -20,11 +20,26 @@ describe('Symbol Explorer Blocks detail page', () => {
})
it('render correct table fields.', () => {
- const items = ['Height', 'Date', 'Total Fee', 'Difficulty', 'Fee Multiplier', 'Transactions', 'Harvester', 'Block Hash', 'Proof Gamma', 'Proof Scalar', 'Beneficiary Address', 'Proof Varification Hash']
+ const items = ['Height', 'Size (bytes)', 'Date', 'Total Fee', 'Difficulty', 'Fee Multiplier', 'Transactions', 'Harvester', 'Block Hash', 'Proof Gamma', 'Proof Scalar', 'Beneficiary Address', 'Proof Varification Hash']
cy.renderFieldInTable("blockDetailTitle", items)
})
})
+ describe('Merkle Info Card should', () => {
+ it('load title', () => {
+ cy.get('[data-cy="merkleInfoTitle"]').should('contain', 'Merkle Info')
+ })
+
+ it('render table in card', ()=> {
+ cy.renderTableInCard("merkleInfoTitle")
+ })
+
+ it('render correct table fields.', () => {
+ const items = ['State Hash', 'State Hash Sub Cache Merkle Roots', 'Receipts Hash', 'Transactions Hash']
+ cy.renderFieldInTable("merkleInfoTitle", items)
+ })
+ })
+
describe('Block Transactions Card should', () => {
it('load title', () => {
cy.get('[data-cy="blockTransactionsTitle"]')
@@ -55,5 +70,19 @@ describe('Symbol Explorer Blocks detail page', () => {
cy.renderHeaderInTable("balanceChangeReceiptTitle", items)
})
})
- // Todo: Test the rest of Reicept
+
+ describe('Resolution Statement Card should', () => {
+ it('load title', () => {
+ cy.get('[data-cy="resolutionStatementTitle"]').should('contain', 'Resolution Statement')
+ })
+
+ it('render table in card', ()=> {
+ cy.renderTableInCard("resolutionStatementTitle")
+ })
+
+ it('render correct table header.', () => {
+ const items = ['Type', 'Unresolved', 'Resolved Value']
+ cy.renderHeaderInTable("resolutionStatementTitle", items)
+ })
+ })
})
\ No newline at end of file
diff --git a/e2e/pageDetail/mosaicDetail.spec.js b/e2e/pageDetail/mosaicDetail.spec.js
index 1d9c63ae2..c9d653a2d 100644
--- a/e2e/pageDetail/mosaicDetail.spec.js
+++ b/e2e/pageDetail/mosaicDetail.spec.js
@@ -2,7 +2,7 @@ import config from '../config/network.conf.json'
describe('Symbol Explorer Mosaic Detail page', () => {
beforeEach(() => {
- cy.visit(`/mosaic/${config.testMosaic.mosaicId}`)
+ cy.visit(`/mosaics/${config.testMosaic.mosaicId}`)
})
describe('Mosaic Detail Card should', () => {
diff --git a/e2e/pageDetail/namespaceDetail.spec.js b/e2e/pageDetail/namespaceDetail.spec.js
index 231b631c3..d903a40c0 100644
--- a/e2e/pageDetail/namespaceDetail.spec.js
+++ b/e2e/pageDetail/namespaceDetail.spec.js
@@ -2,7 +2,7 @@ import config from '../config/network.conf.json'
describe('Symbol Explorer Namespace detail page', () => {
beforeEach(() => {
- cy.visit(`/namespace/${config.testNamespace.subNamespace}`)
+ cy.visit(`/namespaces/${config.testNamespace.subNamespace}`)
})
describe('Namespace Detail Card should', () => {
diff --git a/e2e/pageDetail/transactions/accountAddressRestriction.spec.js b/e2e/pageDetail/transactions/accountAddressRestriction.spec.js
index cda32b9d7..e74d2261f 100644
--- a/e2e/pageDetail/transactions/accountAddressRestriction.spec.js
+++ b/e2e/pageDetail/transactions/accountAddressRestriction.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Account Address Restriction.', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.accountAddressRestriction}`)
+ cy.visit(`/transactions/${config.testTransactions.accountAddressRestriction}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Account Address Restrictio
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Restriction Type', 'Additions']
+ const items = ['Transaction Type', 'Restriction Type', 'Additions']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pageDetail/transactions/accountMosaicRestriction.spec.js b/e2e/pageDetail/transactions/accountMosaicRestriction.spec.js
index ba1e3f6f5..0d5f71781 100644
--- a/e2e/pageDetail/transactions/accountMosaicRestriction.spec.js
+++ b/e2e/pageDetail/transactions/accountMosaicRestriction.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Account Mosaic Restriction.', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.accountMosaicRestriction}`)
+ cy.visit(`/transactions/${config.testTransactions.accountMosaicRestriction}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Account Mosaic Restriction
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Restriction Type', 'Additions']
+ const items = ['Transaction Type', 'Restriction Type', 'Additions']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pageDetail/transactions/accountOperationRestriction.spec.js b/e2e/pageDetail/transactions/accountOperationRestriction.spec.js
index ffc9ec9bc..35f3c530b 100644
--- a/e2e/pageDetail/transactions/accountOperationRestriction.spec.js
+++ b/e2e/pageDetail/transactions/accountOperationRestriction.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Account Operation Restriction.', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.accountOperationRestriction}`)
+ cy.visit(`/transactions/${config.testTransactions.accountOperationRestriction}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Account Operation Restrict
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Restriction Type', 'Additions']
+ const items = ['Transaction Type', 'Restriction Type', 'Additions']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pageDetail/transactions/addressAlias.spec.js b/e2e/pageDetail/transactions/addressAlias.spec.js
index 76b8d449c..927c2615b 100644
--- a/e2e/pageDetail/transactions/addressAlias.spec.js
+++ b/e2e/pageDetail/transactions/addressAlias.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Address Alias', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.addressAlias}`)
+ cy.visit(`/transactions/${config.testTransactions.addressAlias}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Address Alias', () => {
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Alias Action', 'Namespace ID', 'Name', 'Address']
+ const items = ['Transaction Type', 'Alias Action', 'Namespace ID', 'Name', 'Address']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pageDetail/transactions/aggregateComplete.spec.js b/e2e/pageDetail/transactions/aggregateComplete.spec.js
index 27bc0686c..1c3e698cf 100644
--- a/e2e/pageDetail/transactions/aggregateComplete.spec.js
+++ b/e2e/pageDetail/transactions/aggregateComplete.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Aggregate Complete', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.aggregateComplete}`)
+ cy.visit(`/transactions/${config.testTransactions.aggregateComplete}`)
})
describe('Transaction info card should', () => {
diff --git a/e2e/pageDetail/transactions/hashLock.spec.js b/e2e/pageDetail/transactions/hashLock.spec.js
index 2914ae2f5..7d3130f4f 100644
--- a/e2e/pageDetail/transactions/hashLock.spec.js
+++ b/e2e/pageDetail/transactions/hashLock.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Hash Lock.', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.hashLock}`)
+ cy.visit(`/transactions/${config.testTransactions.hashLock}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Hash Lock.', () => {
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Duration', 'Mosaic ID', 'Amount']
+ const items = ['Transaction Type', 'Duration', 'Mosaic ID', 'Amount', 'Hash', 'Alias Namespace']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pageDetail/transactions/mosaicAlias.spec.js b/e2e/pageDetail/transactions/mosaicAlias.spec.js
index 788b92aed..1e1759f28 100644
--- a/e2e/pageDetail/transactions/mosaicAlias.spec.js
+++ b/e2e/pageDetail/transactions/mosaicAlias.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Mosaic Alias', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.mosaicAlias}`)
+ cy.visit(`/transactions/${config.testTransactions.mosaicAlias}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Mosaic Alias', () => {
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Alias Action', 'Namespace ID', 'Mosaic ID', 'Name']
+ const items = ['Transaction Type', 'Alias Action', 'Namespace ID', 'Mosaic ID', 'Name']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pageDetail/transactions/mosaicSupplyChange.spec.js b/e2e/pageDetail/transactions/mosaicSupplyChange.spec.js
index 3db42b4d6..dad26c8a7 100644
--- a/e2e/pageDetail/transactions/mosaicSupplyChange.spec.js
+++ b/e2e/pageDetail/transactions/mosaicSupplyChange.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Mosaic Supply Change', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.mosaicSupplyChange}`)
+ cy.visit(`/transactions/${config.testTransactions.mosaicSupplyChange}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Mosaic Supply Change', ()
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Mosaic ID', 'Action', 'Delta']
+ const items = ['Transaction Type', 'Mosaic ID', 'Action', 'Delta']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pageDetail/transactions/namespaceRegistration.spec.js b/e2e/pageDetail/transactions/namespaceRegistration.spec.js
index 97f7561d4..445382b27 100644
--- a/e2e/pageDetail/transactions/namespaceRegistration.spec.js
+++ b/e2e/pageDetail/transactions/namespaceRegistration.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Namespace Registration', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.namespaceRegistration}`)
+ cy.visit(`/transactions/${config.testTransactions.namespaceRegistration}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Namespace Registration', (
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Recipient', 'Registration Type', 'Name', 'Namespace ID', 'Parent ID', 'Duration']
+ const items = ['Transaction Type', 'Recipient', 'Registration Type', 'Name', 'Namespace ID', 'Parent ID', 'Duration']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pageDetail/transactions/secretLock.spec.js b/e2e/pageDetail/transactions/secretLock.spec.js
index 93fa72159..73ccfb5d0 100644
--- a/e2e/pageDetail/transactions/secretLock.spec.js
+++ b/e2e/pageDetail/transactions/secretLock.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Secret Lock.', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.secretLock}`)
+ cy.visit(`/transactions/${config.testTransactions.secretLock}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Secret Lock.', () => {
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Duration', 'Mosaic ID', 'Secret', 'Recipient', 'Hash Algorithm']
+ const items = ['Transaction Type', 'Duration', 'Mosaic ID', 'Secret', 'Recipient', 'Hash Algorithm']
cy.renderFieldInTable("transactionDetailTitle", items)
})
})
diff --git a/e2e/pageDetail/transactions/secretProof.spec.js b/e2e/pageDetail/transactions/secretProof.spec.js
index 85eab2131..65ebc9448 100644
--- a/e2e/pageDetail/transactions/secretProof.spec.js
+++ b/e2e/pageDetail/transactions/secretProof.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Secret Proof.', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.secretProof}`)
+ cy.visit(`/transactions/${config.testTransactions.secretProof}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for Secret Proof.', () => {
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Hash Algorithm', 'Recipient', 'Secret', 'Proof']
+ const items = ['Transaction Type', 'Hash Algorithm', 'Recipient', 'Secret', 'Proof']
cy.renderFieldInTable("transactionDetailTitle", items)
})
})
diff --git a/e2e/pageDetail/transactions/transferTransaction.spec.js b/e2e/pageDetail/transactions/transferTransaction.spec.js
index cb79e5897..d07772181 100644
--- a/e2e/pageDetail/transactions/transferTransaction.spec.js
+++ b/e2e/pageDetail/transactions/transferTransaction.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for Transfer Transaction', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.transferTransaction}`)
+ cy.visit(`/transactions/${config.testTransactions.transferTransaction}`)
})
describe('Transaction info card should', () => {
diff --git a/e2e/pageDetail/transactions/votingKeyLink.spec.js b/e2e/pageDetail/transactions/votingKeyLink.spec.js
new file mode 100644
index 000000000..b5cebb577
--- /dev/null
+++ b/e2e/pageDetail/transactions/votingKeyLink.spec.js
@@ -0,0 +1,39 @@
+import config from '../../config/network.conf.json'
+import datafiled from '../../config/datafiled.json'
+
+describe('Symbol Explorer Transaction detail page for Voting Key Link.', () => {
+ beforeEach(() => {
+ cy.visit(`/transactions/${config.testTransactions.votingKeyLink}`)
+ })
+
+ describe('Transaction info card should', () => {
+ it('load title', () => {
+ cy.get('[data-cy="transactionInfoTitle"]').should('contain', 'Transaction Info')
+ })
+
+ it('render data info in table', ()=> {
+ cy.renderTableInCard("transactionInfoTitle")
+ })
+
+ it('render correct transaction info titles', ()=> {
+ const items = datafiled.transactionInfoFields
+ cy.renderFieldInTable("transactionInfoTitle", items)
+ })
+ })
+
+ describe('Transaction Detail card should', () => {
+ it('load title', () => {
+ cy.get('[data-cy="transactionDetailTitle"]').should('contain', 'Transaction Detail')
+ })
+
+ it('render data info in table', ()=> {
+ cy.renderTableInCard("transactionDetailTitle")
+ })
+
+ it('render correct transaction detail titles', () => {
+ const items = ['Transaction Type', 'Link Action', 'linked Public Key', 'linked Account Address', 'Start Finalization Epoch', 'End Finalization Epoch']
+ cy.renderFieldInTable("transactionDetailTitle", items)
+ })
+
+ })
+})
\ No newline at end of file
diff --git a/e2e/pageDetail/transactions/vrfKeyLink.spec.js b/e2e/pageDetail/transactions/vrfKeyLink.spec.js
index 522c5ef24..028dbaa80 100644
--- a/e2e/pageDetail/transactions/vrfKeyLink.spec.js
+++ b/e2e/pageDetail/transactions/vrfKeyLink.spec.js
@@ -3,7 +3,7 @@ import datafiled from '../../config/datafiled.json'
describe('Symbol Explorer Transaction detail page for VRF Key Link.', () => {
beforeEach(() => {
- cy.visit(`/transaction/${config.testTransactions.vrfKeyLink}`)
+ cy.visit(`/transactions/${config.testTransactions.vrfKeyLink}`)
})
describe('Transaction info card should', () => {
@@ -31,7 +31,7 @@ describe('Symbol Explorer Transaction detail page for VRF Key Link.', () => {
})
it('render correct transaction detail titles', () => {
- const items = ['Type', 'Link Action', 'linked Public Key']
+ const items = ['Transaction Type', 'Link Action', 'linked Public Key', 'linked Account Address']
cy.renderFieldInTable("transactionDetailTitle", items)
})
diff --git a/e2e/pages/accounts.spec.js b/e2e/pages/accounts.spec.js
index aa36498b6..a8b0e08f1 100644
--- a/e2e/pages/accounts.spec.js
+++ b/e2e/pages/accounts.spec.js
@@ -28,12 +28,13 @@ describe('Symbol Explorer Accounts list page should', () => {
cy.url().should('contain', '/account')
})
- it('redirect to block detail page given click on Last Activity', () => {
- cy.get('tbody tr .lastActivity a')
- .then($data => {
- return $data[0]
- }).click({ force:true })
-
- cy.url().should('contain', '/block')
- })
+ // Todo
+ // it('redirect to block detail page given click on Last Activity', () => {
+ // cy.get('tbody tr .lastActivity a')
+ // .then($data => {
+ // return $data[0]
+ // }).click({ force:true })
+
+ // cy.url().should('contain', '/block')
+ // })
})
\ No newline at end of file
diff --git a/e2e/pages/home.spec.js b/e2e/pages/home.spec.js
index 3e5f1c5ec..d6fec703a 100644
--- a/e2e/pages/home.spec.js
+++ b/e2e/pages/home.spec.js
@@ -1,18 +1,18 @@
// cypress/integration/spec.js
-describe.skip('Symbol Explorer Home Page should', () => {
+describe('Symbol Explorer Home Page should', () => {
beforeEach(() => {
cy.visit('/')
})
- it('load XYM Price graph', () => {
+ it('load XEM Price graph', () => {
- cy.contains('XYM Price')
+ cy.contains('XEM Price')
// view all statistic button is clickable
// cy.contains('View all statistics').click()
// cy.url().should('contain', '/statistics')
- // XYM price chart is visible
+ // XEM price chart is visible
cy.get('.apexcharts-svg').should('be.visible')
})
@@ -25,13 +25,13 @@ describe.skip('Symbol Explorer Home Page should', () => {
.should('be.visible')
cy.get('.ex-item-title')
- .should('have.length', 4)
+ .should('have.length', 5)
cy.get('.ex-item-value')
.should('be.visible')
cy.get('.ex-item-value')
- .should('have.length', 4)
+ .should('have.length', 5)
})
it('load Recent Transactions', () => {
diff --git a/e2e/pages/nodes.spec.js b/e2e/pages/nodes.spec.js
index ebf249fba..10216e6ca 100644
--- a/e2e/pages/nodes.spec.js
+++ b/e2e/pages/nodes.spec.js
@@ -1,4 +1,4 @@
-describe('Symbol Explorer Namespaces list page should', () => {
+describe('Symbol Explorer Nodes list page should', () => {
beforeEach(() => {
cy.visit('/nodes')
})
diff --git a/e2e/router/router.spec.js b/e2e/router/router.spec.js
index 0ddc65a50..c46643ce6 100644
--- a/e2e/router/router.spec.js
+++ b/e2e/router/router.spec.js
@@ -5,7 +5,7 @@ describe('Symbol Explorer Menu Route should', () => {
})
it('redirect to home given click on home tab', () => {
- cy.contains('XYM Price')
+ cy.contains('XEM Price')
cy.contains('Base Info')
cy.contains('Recent Transactions')
cy.contains('Recent Blocks')
@@ -41,4 +41,9 @@ describe('Symbol Explorer Menu Route should', () => {
cy.get('.ex-menu').contains('Nodes').click()
cy.url().should('contain', '/nodes')
})
+
+ it('redirect to statistics page given click on statistics tab', () => {
+ cy.get('.ex-menu').contains('Statistics').click()
+ cy.url().should('contain', '/statistics')
+ })
})
diff --git a/package-lock.json b/package-lock.json
index 7c1899cbb..3508a1585 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "symbol-explorer",
- "version": "0.5.0",
+ "version": "0.6.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -6634,9 +6634,9 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"catbuffer-typescript": {
- "version": "0.0.21",
- "resolved": "https://registry.npmjs.org/catbuffer-typescript/-/catbuffer-typescript-0.0.21.tgz",
- "integrity": "sha512-fKz6NoojjWOf7eJRZeh3pH6wMkxTXSfH/55yfzaImnhTQeaL6j1xiYElgWDDkKDJe2N4UWUJywRjbfT96I/GJw=="
+ "version": "0.0.22",
+ "resolved": "https://registry.npmjs.org/catbuffer-typescript/-/catbuffer-typescript-0.0.22.tgz",
+ "integrity": "sha512-Wip3kJFnXrsMRF+4yJSE/F+aEqrTYLPPXdNuVftHNl9oFaKwQ9si8oI2ruSu53QIR+/ohOlY4QYtOagRpHnrFg=="
},
"ccount": {
"version": "1.0.4",
@@ -16199,9 +16199,9 @@
}
},
"node-fetch": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
- "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
},
"node-forge": {
"version": "0.9.0",
@@ -18986,9 +18986,9 @@
}
},
"rxjs-compat": {
- "version": "6.6.2",
- "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.2.tgz",
- "integrity": "sha512-C3V7axnAkPd91sbW1XreL8ydLM+phUcKViM76GBuT3hCzHMSQbszE/h6ajkgcrDn9j4JZ/OdzklvfAJ9MmXRcg=="
+ "version": "6.6.3",
+ "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.3.tgz",
+ "integrity": "sha512-y+wUqq7bS2dG+7rH2fNMoxsDiJ32RQzFxZQE/JdtpnmEZmwLQrb1tCiItyHxdXJHXjmHnnzFscn3b6PEmORGKw=="
},
"safe-buffer": {
"version": "5.1.2",
@@ -20793,17 +20793,17 @@
"dev": true
},
"symbol-openapi-typescript-fetch-client": {
- "version": "0.9.6",
- "resolved": "https://registry.npmjs.org/symbol-openapi-typescript-fetch-client/-/symbol-openapi-typescript-fetch-client-0.9.6.tgz",
- "integrity": "sha512-ZZtR031IBkYfiG0bR26vGckKmUrJzY9sggXMusrqloxweNovtzf7Aqpx7nNEpCJdMNzwv+E0V8mYBwxgFuiMfg=="
+ "version": "0.10.0-3",
+ "resolved": "https://registry.npmjs.org/symbol-openapi-typescript-fetch-client/-/symbol-openapi-typescript-fetch-client-0.10.0-3.tgz",
+ "integrity": "sha512-cdRz7Nc/m2i7CC8wHtj//z5RxOKEKhS4l+fFQvh7YUlYcUPaHbgcq4RMXSZPmMJ4PnzocnqWpVKjMj5cTYgrPA=="
},
"symbol-sdk": {
- "version": "0.20.7",
- "resolved": "https://registry.npmjs.org/symbol-sdk/-/symbol-sdk-0.20.7.tgz",
- "integrity": "sha512-313Uo/cev3ygvVLwTyDtnD1Qh56u4HeuUt5Q05R+WB3zjZl5xffXs5VKPRA4Th45/0Leyxk7oMPAS9hfFim5vw==",
+ "version": "0.21.0",
+ "resolved": "https://registry.npmjs.org/symbol-sdk/-/symbol-sdk-0.21.0.tgz",
+ "integrity": "sha512-YFJ1PcVlFSivZe8RUOOGJJvXN2uleNTZB8ma6VONdz+obyI8QMAzdt4c6niyGTr76Md6dRQVJ/uaq+MpbJtDQg==",
"requires": {
"bluebird": "^3.7.2",
- "catbuffer-typescript": "0.0.21",
+ "catbuffer-typescript": "0.0.22",
"crypto-js": "^4.0.0",
"diff": "^4.0.2",
"futoin-hkdf": "^1.3.1",
@@ -20820,7 +20820,7 @@
"ripemd160": "^2.0.2",
"rxjs": "^6.5.3",
"rxjs-compat": "^6.5.3",
- "symbol-openapi-typescript-fetch-client": "0.9.6",
+ "symbol-openapi-typescript-fetch-client": "0.10.0-3",
"tweetnacl": "^1.0.3",
"utf8": "^3.0.0",
"ws": "^7.2.3"
@@ -20856,9 +20856,9 @@
}
},
"rxjs": {
- "version": "6.6.2",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
- "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+ "version": "6.6.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
+ "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
"requires": {
"tslib": "^1.9.0"
}
diff --git a/package.json b/package.json
index a079eba17..554828d12 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "symbol-explorer",
"description": "Symbol Block and Network Explorer",
"homepage": "https://github.com/nemgrouplimited/symbol-explorer",
- "version": "0.5.0",
+ "version": "0.6.0",
"scripts": {
"dev": "vue-cli-service serve",
"build": "vue-cli-service build",
@@ -26,7 +26,7 @@
"js-sha3": "^0.8.0",
"merkletreejs": "^0.2.9",
"moment-timezone": "^0.5.28",
- "symbol-sdk": "^0.20.7",
+ "symbol-sdk": "^0.21.0",
"url-parse": "^1.4.7",
"vue": "^2.6.11",
"vue-apexcharts": "^1.5.2",
diff --git a/src/components/TransactionSchema.vue b/src/components/TransactionSchema.vue
index ada1fb878..ea0561506 100644
--- a/src/components/TransactionSchema.vue
+++ b/src/components/TransactionSchema.vue
@@ -325,7 +325,7 @@ export default {
accountClick(address) {
this.$store.dispatch(`ui/openPage`, {
- pageName: 'address',
+ pageName: 'account',
param: address
});
}
diff --git a/src/components/fields/BlockHeightWithFinalizedStatusField.vue b/src/components/fields/BlockHeightWithFinalizedStatusField.vue
new file mode 100644
index 000000000..06de043b3
--- /dev/null
+++ b/src/components/fields/BlockHeightWithFinalizedStatusField.vue
@@ -0,0 +1,75 @@
+
+