125 lines
6.5 KiB
TypeScript
125 lines
6.5 KiB
TypeScript
import { getTestSelector } from '../../utils'
|
|
|
|
describe('mini-portfolio activity history', () => {
|
|
beforeEach(() => {
|
|
cy.hardhat()
|
|
.then((hardhat) => hardhat.wallet.getTransactionCount())
|
|
.then((nonce) => {
|
|
// Mock graphql response to include specific nonces.
|
|
cy.intercept(
|
|
{
|
|
method: 'POST',
|
|
url: 'https://beta.api.uniswap.org/v1/graphql',
|
|
},
|
|
{
|
|
body: {
|
|
data: {
|
|
portfolios: [
|
|
{
|
|
id: 'UG9ydGZvbGlvOjB4NUNlYUI3NGU0NDZkQmQzYkY2OUUyNzcyMDBGMTI5ZDJiQzdBMzdhMQ==',
|
|
assetActivities: [
|
|
{
|
|
id: 'QXNzZXRBY3Rpdml0eTpWSEpoYm5OaFkzUnBiMjQ2TUhnME5tUm1PVGs0T0RrNVl6UmtNR1kzWTJNNE9HRTVNVFEzTURBME9EWmtOVGhrTURnNFpqbG1NelkxTnpRM1l6WXdZek15WVRFNE4yWXlaRFEwWVdVNFh6QjRZV1EyWXpCa05XTmlOVEZsWWpjMU5qUTFaRGszT1RneE4yRTJZVEkxTmpreU1UbG1ZbVE1Wmw4d2VEQXpOR0UwTURjMk5EUTROV1kzWlRBNFkyRXhOak0yTm1VMU1ETTBPVEZoTm1GbU56ZzFNR1E9',
|
|
timestamp: 1681150079,
|
|
type: 'UNKNOWN',
|
|
chain: 'ETHEREUM',
|
|
transaction: {
|
|
id: 'VHJhbnNhY3Rpb246MHg0NmRmOTk4ODk5YzRkMGY3Y2M4OGE5MTQ3MDA0ODZkNThkMDg4ZjlmMzY1NzQ3YzYwYzMyYTE4N2YyZDQ0YWU4XzB4YWQ2YzBkNWNiNTFlYjc1NjQ1ZDk3OTgxN2E2YTI1NjkyMTlmYmQ5Zl8weDAzNGE0MDc2NDQ4NWY3ZTA4Y2ExNjM2NmU1MDM0OTFhNmFmNzg1MGQ=',
|
|
blockNumber: 17019453,
|
|
hash: '0x46df998899c4d0f7cc88a914700486d58d088f9f365747c60c32a187f2d44ae8',
|
|
status: 'CONFIRMED',
|
|
to: '0x034a40764485f7e08ca16366e503491a6af7850d',
|
|
from: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
nonce,
|
|
__typename: 'Transaction',
|
|
},
|
|
assetChanges: [],
|
|
__typename: 'AssetActivity',
|
|
},
|
|
{
|
|
id: 'QXNzZXRBY3Rpdml0eTpWSEpoYm5OaFkzUnBiMjQ2TUhneE16UXpaR1ppTlROaE9XRmpNR00yWW1aaVpqUTNNRFEyWWpObFkyRXhORGN3TUdZd00yWXhOMkV3WWpnM1pqWXpPRFpsWVRnNU16QTRNVFZtWmpoaFh6QjRZMkUzTXpOalkySm1OelZoTXpnME1ERXhPR1ZpT1RjNU9EVTJOemRpTkdRMk56TTBZemMwWmw4d2VERmlOVEUxTkdGaE5HSTRaakF5TjJJNVptUXhPVE0wTVRFek1tWmpPV1JoWlRFd1pqY3pOVGs9',
|
|
timestamp: 1681149995,
|
|
type: 'SEND',
|
|
chain: 'ETHEREUM',
|
|
transaction: {
|
|
id: 'VHJhbnNhY3Rpb246MHgxMzQzZGZiNTNhOWFjMGM2YmZiZjQ3MDQ2YjNlY2ExNDcwMGYwM2YxN2EwYjg3ZjYzODZlYTg5MzA4MTVmZjhhXzB4Y2E3MzNjY2JmNzVhMzg0MDExOGViOTc5ODU2NzdiNGQ2NzM0Yzc0Zl8weDFiNTE1NGFhNGI4ZjAyN2I5ZmQxOTM0MTEzMmZjOWRhZTEwZjczNTk=',
|
|
blockNumber: 17019446,
|
|
hash: '0x1343dfb53a9ac0c6bfbf47046b3eca14700f03f17a0b87f6386ea8930815ff8a',
|
|
status: 'CONFIRMED',
|
|
to: '0x1b5154aa4b8f027b9fd19341132fc9dae10f7359',
|
|
from: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
nonce: nonce + 1,
|
|
__typename: 'Transaction',
|
|
},
|
|
assetChanges: [
|
|
{
|
|
__typename: 'TokenTransfer',
|
|
id: 'VG9rZW5UcmFuc2ZlcjoweDVjZWFiNzRlNDQ2ZGJkM2JmNjllMjc3MjAwZjEyOWQyYmM3YTM3YTFfMHhiMWRjNDlmMDY1N2FkNTA1YjUzNzUyN2RkOWE1MDk0YTM2NTkzMWMxXzB4MTM0M2RmYjUzYTlhYzBjNmJmYmY0NzA0NmIzZWNhMTQ3MDBmMDNmMTdhMGI4N2Y2Mzg2ZWE4OTMwODE1ZmY4YQ==',
|
|
asset: {
|
|
id: 'VG9rZW46RVRIRVJFVU1fMHgxY2MyYjA3MGNhZjAxNmE3ZGRjMzA0N2Y5MzI3MmU4Yzc3YzlkZGU5',
|
|
name: 'USD Coin (USDC)',
|
|
symbol: 'USDC',
|
|
address: '0x1cc2b070caf016a7ddc3047f93272e8c77c9dde9',
|
|
decimals: 6,
|
|
chain: 'ETHEREUM',
|
|
standard: null,
|
|
project: {
|
|
id: 'VG9rZW5Qcm9qZWN0OkVUSEVSRVVNXzB4MWNjMmIwNzBjYWYwMTZhN2RkYzMwNDdmOTMyNzJlOGM3N2M5ZGRlOQ==',
|
|
isSpam: true,
|
|
logo: null,
|
|
__typename: 'TokenProject',
|
|
},
|
|
__typename: 'Token',
|
|
},
|
|
tokenStandard: 'ERC20',
|
|
quantity: '18011.212084',
|
|
sender: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
recipient: '0xb1dc49f0657ad505b537527dd9a5094a365931c1',
|
|
direction: 'OUT',
|
|
transactedValue: null,
|
|
},
|
|
],
|
|
__typename: 'AssetActivity',
|
|
},
|
|
],
|
|
__typename: 'Portfolio',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
}
|
|
).as('graphql')
|
|
})
|
|
})
|
|
|
|
it('should deduplicate activity history by nonce', () => {
|
|
cy.visit('/swap', { ethereum: 'hardhat' }).hardhat({ automine: false })
|
|
|
|
// Input swap info.
|
|
cy.get('#swap-currency-input .token-amount-input').clear().type('1')
|
|
cy.get('#swap-currency-output .open-currency-select-button').click()
|
|
cy.contains('USDC').click()
|
|
cy.get('#swap-currency-output .token-amount-input').should('not.equal', '')
|
|
|
|
// Set slippage to a high value.
|
|
cy.get(getTestSelector('open-settings-dialog-button')).click()
|
|
cy.get(getTestSelector('max-slippage-settings')).click()
|
|
cy.get(getTestSelector('slippage-input')).clear().type('5')
|
|
cy.get('body').click('topRight')
|
|
cy.get(getTestSelector('slippage-input')).should('not.exist')
|
|
|
|
// Click swap button.
|
|
cy.contains('1 USDC = ').should('exist')
|
|
cy.get('#swap-button').should('not.be', 'disabled').click()
|
|
cy.get('#confirm-swap-or-send').click()
|
|
cy.get(getTestSelector('dismiss-tx-confirmation')).click()
|
|
|
|
// Check activity history tab.
|
|
cy.get(getTestSelector('web3-status-connected')).click()
|
|
cy.get(getTestSelector('mini-portfolio-nav-activity')).click()
|
|
|
|
// Assert that the local pending transaction is replaced by a remote transaction with the same nonce.
|
|
cy.contains('Swapping').should('not.exist')
|
|
})
|
|
})
|