@ -1069,7 +1069,34 @@ describe('Send Slice', () => {
} ;
} ;
it ( 'should create an action to update send amount' , async ( ) => {
it ( 'should create an action to update send amount' , async ( ) => {
const store = mockStore ( defaultSendAmountState ) ;
const sendState = {
metamask : {
blockGasLimit : '' ,
selectedAddress : '' ,
provider : {
chainId : '0x1' ,
} ,
} ,
... defaultSendAmountState . send ,
send : {
asset : {
details : { } ,
} ,
gas : {
gasPrice : '' ,
} ,
recipient : {
address : '' ,
} ,
amount : {
value : '' ,
} ,
draftTransaction : {
userInputHexData : '' ,
} ,
} ,
} ;
const store = mockStore ( sendState ) ;
const newSendAmount = 'aNewSendAmount' ;
const newSendAmount = 'aNewSendAmount' ;
@ -1077,35 +1104,73 @@ describe('Send Slice', () => {
const actionResult = store . getActions ( ) ;
const actionResult = store . getActions ( ) ;
const expectedActionResult = [
const expectedFirstActionResult = {
{ type : 'send/updateSendAmount' , payload : 'aNewSendAmount' } ,
type : 'send/updateSendAmount' ,
] ;
payload : 'aNewSendAmount' ,
} ;
expect ( actionResult ) . toStrictEqual ( expectedActionResult ) ;
expect ( actionResult [ 0 ] ) . toStrictEqual ( expectedFirstActionResult ) ;
expect ( actionResult [ 1 ] . type ) . toStrictEqual (
'send/computeEstimatedGasLimit/pending' ,
) ;
expect ( actionResult [ 2 ] . type ) . toStrictEqual (
'metamask/gas/SET_CUSTOM_GAS_LIMIT' ,
) ;
expect ( actionResult [ 3 ] . type ) . toStrictEqual (
'send/computeEstimatedGasLimit/fulfilled' ,
) ;
} ) ;
} ) ;
it ( 'should create an action to update send amount mode to `INPUT` when mode is `MAX`' , async ( ) => {
it ( 'should create an action to update send amount mode to `INPUT` when mode is `MAX`' , async ( ) => {
const maxModeSendState = {
const sendState = {
metamask : {
blockGasLimit : '' ,
selectedAddress : '' ,
provider : {
chainId : '0x1' ,
} ,
} ,
... defaultSendAmountState . send ,
send : {
send : {
... defaultSendAmountState . send ,
asset : {
details : { } ,
} ,
gas : {
gasPrice : '' ,
} ,
recipient : {
address : '' ,
} ,
amount : {
amount : {
mode : AMOUNT _MODES . MAX ,
value : '' ,
} ,
draftTransaction : {
userInputHexData : '' ,
} ,
} ,
} ,
} ,
} ;
} ;
const store = mockStore ( maxModeSendState ) ;
const store = mockStore ( s endState) ;
await store . dispatch ( updateSendAmount ( ) ) ;
await store . dispatch ( updateSendAmount ( ) ) ;
const actionResult = store . getActions ( ) ;
const actionResult = store . getActions ( ) ;
const expectedActionResult = [
const expectedFirst ActionResult = {
{ type : 'send/updateSendAmount' , payload : undefined } ,
type : 'send/updateSendAmount' ,
{ type : 'send/updateAmountMode' , payload : AMOUNT _MODES . INPUT } ,
payload : undefined ,
] ;
} ;
expect ( actionResult ) . toStrictEqual ( expectedActionResult ) ;
expect ( actionResult [ 0 ] ) . toStrictEqual ( expectedFirstActionResult ) ;
expect ( actionResult [ 1 ] . type ) . toStrictEqual (
'send/computeEstimatedGasLimit/pending' ,
) ;
expect ( actionResult [ 2 ] . type ) . toStrictEqual (
'metamask/gas/SET_CUSTOM_GAS_LIMIT' ,
) ;
expect ( actionResult [ 3 ] . type ) . toStrictEqual (
'send/computeEstimatedGasLimit/fulfilled' ,
) ;
} ) ;
} ) ;
it ( 'should create an action computeEstimateGasLimit and change states from pending to fulfilled with token asset types' , async ( ) => {
it ( 'should create an action computeEstimateGasLimit and change states from pending to fulfilled with token asset types' , async ( ) => {
@ -1354,6 +1419,7 @@ describe('Send Slice', () => {
const updateRecipientState = {
const updateRecipientState = {
metamask : {
metamask : {
addressBook : { } ,
provider : {
provider : {
chainId : '0x1' ,
chainId : '0x1' ,
} ,
} ,
@ -1399,9 +1465,75 @@ describe('Send Slice', () => {
) ;
) ;
} ) ;
} ) ;
it ( 'should update recipient nickname if the passed address exists in the addressBook state but no nickname param is provided' , async ( ) => {
global . eth = {
getCode : sinon . stub ( ) ,
} ;
const TEST _RECIPIENT _ADDRESS =
'0x0000000000000000000000000000000000000001' ;
const TEST _RECIPIENT _NAME = 'The 1 address' ;
const updateRecipientState = {
metamask : {
addressBook : {
'0x1' : [
{
address : TEST _RECIPIENT _ADDRESS ,
name : TEST _RECIPIENT _NAME ,
} ,
] ,
} ,
provider : {
chainId : '0x1' ,
} ,
} ,
send : {
account : {
balance : '' ,
} ,
asset : {
type : '' ,
} ,
gas : {
gasPrice : '' ,
} ,
recipient : {
address : '' ,
} ,
amount : {
value : '' ,
} ,
draftTransaction : {
userInputHexData : '' ,
} ,
} ,
} ;
const store = mockStore ( updateRecipientState ) ;
await store . dispatch (
updateRecipient ( {
address : '0x0000000000000000000000000000000000000001' ,
nickname : '' ,
} ) ,
) ;
const actionResult = store . getActions ( ) ;
expect ( actionResult ) . toHaveLength ( 4 ) ;
expect ( actionResult [ 0 ] . type ) . toStrictEqual ( 'send/updateRecipient' ) ;
expect ( actionResult [ 0 ] . payload . address ) . toStrictEqual (
TEST _RECIPIENT _ADDRESS ,
) ;
expect ( actionResult [ 0 ] . payload . nickname ) . toStrictEqual (
TEST _RECIPIENT _NAME ,
) ;
} ) ;
it ( 'should create actions to reset recipient input and ens, calculate gas and then validate input' , async ( ) => {
it ( 'should create actions to reset recipient input and ens, calculate gas and then validate input' , async ( ) => {
const tokenState = {
const tokenState = {
metamask : {
metamask : {
addressBook : { } ,
blockGasLimit : '' ,
blockGasLimit : '' ,
selectedAddress : '' ,
selectedAddress : '' ,
provider : {
provider : {
@ -1455,6 +1587,7 @@ describe('Send Slice', () => {
it ( 'should create actions to reset recipient input and ens then validates input' , async ( ) => {
it ( 'should create actions to reset recipient input and ens then validates input' , async ( ) => {
const updateRecipientState = {
const updateRecipientState = {
metamask : {
metamask : {
addressBook : { } ,
provider : {
provider : {
chainId : '' ,
chainId : '' ,
} ,
} ,
@ -1535,8 +1668,27 @@ describe('Send Slice', () => {
it ( 'should create actions to toggle update max mode when send amount mode is not max' , async ( ) => {
it ( 'should create actions to toggle update max mode when send amount mode is not max' , async ( ) => {
const sendMaxModeState = {
const sendMaxModeState = {
send : {
send : {
asset : {
type : ASSET _TYPES . TOKEN ,
details : { } ,
} ,
gas : {
gasPrice : '' ,
} ,
recipient : {
address : '' ,
} ,
amount : {
amount : {
mode : '' ,
mode : '' ,
value : '' ,
} ,
draftTransaction : {
userInputHexData : '' ,
} ,
} ,
metamask : {
provider : {
chainId : RINKEBY _CHAIN _ID ,
} ,
} ,
} ,
} ,
} ;
} ;
@ -1547,20 +1699,44 @@ describe('Send Slice', () => {
const actionResult = store . getActions ( ) ;
const actionResult = store . getActions ( ) ;
const expectedActionReslt = [
expect ( actionResult ) . toHaveLength ( 5 ) ;
{ type : 'send/updateAmountMode' , payload : AMOUNT _MODES . MAX } ,
expect ( actionResult [ 0 ] . type ) . toStrictEqual ( 'send/updateAmountMode' ) ;
{ type : 'send/updateAmountToMax' , payload : undefined } ,
expect ( actionResult [ 1 ] . type ) . toStrictEqual ( 'send/updateAmountToMax' ) ;
] ;
expect ( actionResult [ 2 ] . type ) . toStrictEqual (
'send/computeEstimatedGasLimit/pending' ,
expect ( actionResult ) . toHaveLength ( 2 ) ;
) ;
expect ( actionResult ) . toStrictEqual ( expectedActionReslt ) ;
expect ( actionResult [ 3 ] . type ) . toStrictEqual (
'metamask/gas/SET_CUSTOM_GAS_LIMIT' ,
) ;
expect ( actionResult [ 4 ] . type ) . toStrictEqual (
'send/computeEstimatedGasLimit/fulfilled' ,
) ;
} ) ;
} ) ;
it ( 'should create actions to toggle off max mode when send amount mode is max' , async ( ) => {
it ( 'should create actions to toggle off max mode when send amount mode is max' , async ( ) => {
const sendMaxModeState = {
const sendMaxModeState = {
send : {
send : {
asset : {
type : ASSET _TYPES . TOKEN ,
details : { } ,
} ,
gas : {
gasPrice : '' ,
} ,
recipient : {
address : '' ,
} ,
amount : {
amount : {
mode : AMOUNT _MODES . MAX ,
mode : AMOUNT _MODES . MAX ,
value : '' ,
} ,
draftTransaction : {
userInputHexData : '' ,
} ,
} ,
metamask : {
provider : {
chainId : RINKEBY _CHAIN _ID ,
} ,
} ,
} ,
} ,
} ;
} ;
@ -1570,13 +1746,18 @@ describe('Send Slice', () => {
const actionResult = store . getActions ( ) ;
const actionResult = store . getActions ( ) ;
const expectedActionReslt = [
expect ( actionResult ) . toHaveLength ( 5 ) ;
{ type : 'send/updateAmountMode' , payload : AMOUNT _MODES . INPUT } ,
expect ( actionResult [ 0 ] . type ) . toStrictEqual ( 'send/updateAmountMode' ) ;
{ type : 'send/updateSendAmount' , payload : '0x0' } ,
expect ( actionResult [ 1 ] . type ) . toStrictEqual ( 'send/updateSendAmount' ) ;
] ;
expect ( actionResult [ 2 ] . type ) . toStrictEqual (
'send/computeEstimatedGasLimit/pending' ,
expect ( actionResult ) . toHaveLength ( 2 ) ;
) ;
expect ( actionResult ) . toStrictEqual ( expectedActionReslt ) ;
expect ( actionResult [ 3 ] . type ) . toStrictEqual (
'metamask/gas/SET_CUSTOM_GAS_LIMIT' ,
) ;
expect ( actionResult [ 4 ] . type ) . toStrictEqual (
'send/computeEstimatedGasLimit/fulfilled' ,
) ;
} ) ;
} ) ;
} ) ;
} ) ;