import assert from 'assert'
import { combineTransactionHistories , getActivities } from '../transaction-activity-log.util'
describe ( 'combineTransactionHistories' , ( ) => {
it ( 'should return no activites for an empty list of transactions' , ( ) => {
assert . deepEqual ( combineTransactionHistories ( [ ] ) , [ ] )
} )
it ( 'should return activities for an array of transactions' , ( ) => {
const transactions = [
{
estimatedGas : '0x5208' ,
hash : '0xa14f13d36b3901e352ce3a7acb9b47b001e5a3370f06232a0953c6fc6fad91b3' ,
history : [
{
'id' : 6400627574331058 ,
'time' : 1543958845581 ,
'status' : 'unapproved' ,
'metamaskNetworkId' : '3' ,
'loadingDefaults' : true ,
'txParams' : {
'from' : '0x50a9d56c2b8ba9a5c7f2c08c3d26e0499f23a706' ,
'to' : '0xc5ae6383e126f901dcb06131d97a88745bfa88d6' ,
'value' : '0x2386f26fc10000' ,
'gas' : '0x5208' ,
'gasPrice' : '0x3b9aca00' ,
} ,
'type' : 'standard' ,
} ,
[ { 'op' : 'replace' , 'path' : '/status' , 'value' : 'approved' , 'note' : 'txStateManager: setting status to approved' , 'timestamp' : 1543958847813 } ] ,
[ { 'op' : 'replace' , 'path' : '/status' , 'value' : 'submitted' , 'note' : 'txStateManager: setting status to submitted' , 'timestamp' : 1543958848147 } ] ,
[ { 'op' : 'replace' , 'path' : '/status' , 'value' : 'dropped' , 'note' : 'txStateManager: setting status to dropped' , 'timestamp' : 1543958897181 } , { 'op' : 'add' , 'path' : '/replacedBy' , 'value' : '0xecbe181ee67c4291d04a7cb9ffbf1d5d831e4fbaa89994fd06bab5dd4cc79b33' } ] ,
] ,
id : 6400627574331058 ,
loadingDefaults : false ,
metamaskNetworkId : '3' ,
status : 'dropped' ,
submittedTime : 1543958848135 ,
time : 1543958845581 ,
txParams : {
from : '0x50a9d56c2b8ba9a5c7f2c08c3d26e0499f23a706' ,
gas : '0x5208' ,
gasPrice : '0x3b9aca00' ,
nonce : '0x32' ,
to : '0xc5ae6383e126f901dcb06131d97a88745bfa88d6' ,
value : '0x2386f26fc10000' ,
} ,
type : 'standard' ,
} , {
hash : '0xecbe181ee67c4291d04a7cb9ffbf1d5d831e4fbaa89994fd06bab5dd4cc79b33' ,
history : [
{
'id' : 6400627574331060 ,
'time' : 1543958857697 ,
'status' : 'unapproved' ,
'metamaskNetworkId' : '3' ,
'loadingDefaults' : false ,
'txParams' : {
'from' : '0x50a9d56c2b8ba9a5c7f2c08c3d26e0499f23a706' ,
'to' : '0xc5ae6383e126f901dcb06131d97a88745bfa88d6' ,
'value' : '0x2386f26fc10000' ,
'gas' : '0x5208' ,
'gasPrice' : '0x3b9aca00' ,
'nonce' : '0x32' ,
} ,
'lastGasPrice' : '0x4190ab00' ,
'type' : 'retry' ,
} ,
[ { 'op' : 'replace' , 'path' : '/txParams/gasPrice' , 'value' : '0x481f2280' , 'note' : 'confTx: user approved transaction' , 'timestamp' : 1543958859470 } ] ,
[ { 'op' : 'replace' , 'path' : '/status' , 'value' : 'approved' , 'note' : 'txStateManager: setting status to approved' , 'timestamp' : 1543958859485 } ] ,
[ { 'op' : 'replace' , 'path' : '/status' , 'value' : 'signed' , 'note' : 'transactions#publishTransaction' , 'timestamp' : 1543958859889 } ] ,
[ { 'op' : 'replace' , 'path' : '/status' , 'value' : 'submitted' , 'note' : 'txStateManager: setting status to submitted' , 'timestamp' : 1543958860061 } ] , [ { 'op' : 'add' , 'path' : '/firstRetryBlockNumber' , 'value' : '0x45a0fd' , 'note' : 'transactions/pending-tx-tracker#event: tx:block-update' , 'timestamp' : 1543958896466 } ] ,
[ { 'op' : 'replace' , 'path' : '/status' , 'value' : 'confirmed' , 'timestamp' : 1543958897165 } ] ,
] ,
id : 6400627574331060 ,
lastGasPrice : '0x4190ab00' ,
loadingDefaults : false ,
metamaskNetworkId : '3' ,
status : 'confirmed' ,
submittedTime : 1543958860054 ,
time : 1543958857697 ,
txParams : {
from : '0x50a9d56c2b8ba9a5c7f2c08c3d26e0499f23a706' ,
gas : '0x5208' ,
gasPrice : '0x481f2280' ,
nonce : '0x32' ,
to : '0xc5ae6383e126f901dcb06131d97a88745bfa88d6' ,
value : '0x2386f26fc10000' ,
} ,
txReceipt : {
status : '0x1' ,
} ,
type : 'retry' ,
} ,
]
const expected = [
{
id : 6400627574331058 ,
hash : '0xa14f13d36b3901e352ce3a7acb9b47b001e5a3370f06232a0953c6fc6fad91b3' ,
eventKey : 'transactionCreated' ,
timestamp : 1543958845581 ,
value : '0x2386f26fc10000' ,
} , {
id : 6400627574331058 ,
hash : '0xa14f13d36b3901e352ce3a7acb9b47b001e5a3370f06232a0953c6fc6fad91b3' ,
eventKey : 'transactionSubmitted' ,
timestamp : 1543958848147 ,
value : '0x1319718a5000' ,
} , {
id : 6400627574331060 ,
hash : '0xecbe181ee67c4291d04a7cb9ffbf1d5d831e4fbaa89994fd06bab5dd4cc79b33' ,
eventKey : 'transactionResubmitted' ,
timestamp : 1543958860061 ,
value : '0x171c3a061400' ,
} , {
id : 6400627574331060 ,
hash : '0xecbe181ee67c4291d04a7cb9ffbf1d5d831e4fbaa89994fd06bab5dd4cc79b33' ,
eventKey : 'transactionConfirmed' ,
timestamp : 1543958897165 ,
value : '0x171c3a061400' ,
} ,
]
assert . deepEqual ( combineTransactionHistories ( transactions ) , expected )
} )
} )
describe ( 'getActivities' , ( ) => {
it ( 'should return no activities for an empty history' , ( ) => {
const transaction = {
history : [ ] ,
id : 1 ,
status : 'confirmed' ,
txParams : {
from : '0x1' ,
gas : '0x5208' ,
gasPrice : '0x3b9aca00' ,
nonce : '0xa4' ,
to : '0x2' ,
value : '0x2386f26fc10000' ,
} ,
}
assert . deepEqual ( getActivities ( transaction ) , [ ] )
} )
it ( 'should return activities for a transaction\'s history' , ( ) => {
const transaction = {
history : [
{
id : 5559712943815343 ,
loadingDefaults : true ,
metamaskNetworkId : '3' ,
status : 'unapproved' ,
time : 1535507561452 ,
txParams : {
from : '0x1' ,
gas : '0x5208' ,
gasPrice : '0x3b9aca00' ,
nonce : '0xa4' ,
to : '0x2' ,
value : '0x2386f26fc10000' ,
} ,
} ,
[
{
op : 'replace' ,
path : '/loadingDefaults' ,
timestamp : 1535507561515 ,
value : false ,
} ,
{
op : 'add' ,
path : '/gasPriceSpecified' ,
value : true ,
} ,
{
op : 'add' ,
path : '/gasLimitSpecified' ,
value : true ,
} ,
{
op : 'add' ,
path : '/estimatedGas' ,
value : '0x5208' ,
} ,
] ,
[
{
note : '#newUnapprovedTransaction - adding the origin' ,
op : 'add' ,
path : '/origin' ,
timestamp : 1535507561516 ,
value : 'MetaMask' ,
} ,
[ ] ,
] ,
[
{
note : 'confTx: user approved transaction' ,
op : 'replace' ,
path : '/txParams/gasPrice' ,
timestamp : 1535664571504 ,
value : '0x77359400' ,
} ,
] ,
[
{
note : 'txStateManager: setting status to approved' ,
op : 'replace' ,
path : '/status' ,
timestamp : 1535507564302 ,
value : 'approved' ,
} ,
] ,
[
{
note : 'transactions#approveTransaction' ,
op : 'add' ,
path : '/txParams/nonce' ,
timestamp : 1535507564439 ,
value : '0xa4' ,
} ,
{
op : 'add' ,
path : '/nonceDetails' ,
value : {
local : { } ,
network : { } ,
params : { } ,
} ,
} ,
] ,
[
{
note : 'transactions#publishTransaction' ,
op : 'replace' ,
path : '/status' ,
timestamp : 1535507564518 ,
value : 'signed' ,
} ,
{
op : 'add' ,
path : '/rawTx' ,
value : '0xf86b81a4843b9aca008252089450a9d56c2b8ba9a5c7f2c08c3d26e0499f23a706872386f26fc10000802aa007b30119fc4fc5954fad727895b7e3ba80a78d197e95703cc603bcf017879151a01c50beda40ffaee541da9c05b9616247074f25f392800e0ad6c7a835d5366edf' ,
} ,
] ,
[ ] ,
[
{
note : 'transactions#setTxHash' ,
op : 'add' ,
path : '/hash' ,
timestamp : 1535507564658 ,
value : '0x7acc4987b5c0dfa8d423798a8c561138259de1f98a62e3d52e7e83c0e0dd9fb7' ,
} ,
] ,
[
{
note : 'txStateManager - add submitted time stamp' ,
op : 'add' ,
path : '/submittedTime' ,
timestamp : 1535507564660 ,
value : 1535507564660 ,
} ,
] ,
[
{
note : 'txStateManager: setting status to submitted' ,
op : 'replace' ,
path : '/status' ,
timestamp : 1535507564665 ,
value : 'submitted' ,
} ,
] ,
[
{
note : 'transactions/pending-tx-tracker#event: tx:block-update' ,
op : 'add' ,
path : '/firstRetryBlockNumber' ,
timestamp : 1535507575476 ,
value : '0x3bf624' ,
} ,
] ,
[
{
note : 'txStateManager: setting status to confirmed' ,
op : 'replace' ,
path : '/status' ,
timestamp : 1535507615993 ,
value : 'confirmed' ,
} ,
] ,
] ,
id : 1 ,
status : 'confirmed' ,
txParams : {
from : '0x1' ,
gas : '0x5208' ,
gasPrice : '0x3b9aca00' ,
nonce : '0xa4' ,
to : '0x2' ,
value : '0x2386f26fc10000' ,
} ,
hash : '0xabc' ,
}
const expectedResult = [
{
'eventKey' : 'transactionCreated' ,
'timestamp' : 1535507561452 ,
'value' : '0x2386f26fc10000' ,
'id' : 1 ,
'hash' : '0xabc' ,
} ,
{
'eventKey' : 'transactionSubmitted' ,
'timestamp' : 1535507564665 ,
'value' : '0x2632e314a000' ,
'id' : 1 ,
'hash' : '0xabc' ,
} ,
{
'eventKey' : 'transactionConfirmed' ,
'timestamp' : 1535507615993 ,
'value' : '0x2632e314a000' ,
'id' : 1 ,
'hash' : '0xabc' ,
} ,
]
assert . deepEqual ( getActivities ( transaction , true ) , expectedResult )
} )
} )