fix: reset token selections when changing chains on /add (#7561)
* fix: reset token selections when changing chains on /add * fix: tests * fix: add e2e test * fix: remove .only
This commit is contained in:
parent
2227a38276
commit
a5034cb1c0
@ -16,6 +16,16 @@ describe('Add Liquidity', () => {
|
|||||||
cy.contains('0.05% fee tier')
|
cy.contains('0.05% fee tier')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('clears the token selection when chain changes', () => {
|
||||||
|
cy.visit('/add/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/ETH/500')
|
||||||
|
cy.get('#add-liquidity-input-tokena .token-symbol-container').should('contain.text', 'UNI')
|
||||||
|
cy.get('#add-liquidity-input-tokenb .token-symbol-container').should('contain.text', 'ETH')
|
||||||
|
cy.get('[data-testid="chain-selector"]').last().click()
|
||||||
|
cy.contains('Polygon').click()
|
||||||
|
cy.get('#add-liquidity-input-tokenb .token-symbol-container').should('contain.text', 'ETH')
|
||||||
|
cy.get('#add-liquidity-input-tokena .token-symbol-container').should('not.contain.text', 'UNI')
|
||||||
|
})
|
||||||
|
|
||||||
it('does not crash if token is duplicated', () => {
|
it('does not crash if token is duplicated', () => {
|
||||||
cy.visit('/add/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984')
|
cy.visit('/add/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984')
|
||||||
cy.get('#add-liquidity-input-tokena .token-symbol-container').should('contain.text', 'UNI')
|
cy.get('#add-liquidity-input-tokena .token-symbol-container').should('contain.text', 'UNI')
|
||||||
|
@ -1,9 +1,36 @@
|
|||||||
import userEvent from '@testing-library/user-event'
|
import userEvent from '@testing-library/user-event'
|
||||||
|
import store from 'state'
|
||||||
|
import { addSerializedToken } from 'state/user/reducer'
|
||||||
import { act, render, screen } from 'test-utils/render'
|
import { act, render, screen } from 'test-utils/render'
|
||||||
|
|
||||||
import { PoolDetailsHeader } from './PoolDetailsHeader'
|
import { PoolDetailsHeader } from './PoolDetailsHeader'
|
||||||
|
|
||||||
describe('PoolDetailsHeader', () => {
|
describe('PoolDetailsHeader', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
||||||
|
symbol: 'USDC',
|
||||||
|
name: 'USD Coin',
|
||||||
|
decimals: 6,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||||
|
symbol: 'WETH',
|
||||||
|
name: 'Wrapped Ether',
|
||||||
|
decimals: 18,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
const mockProps = {
|
const mockProps = {
|
||||||
chainId: 1,
|
chainId: 1,
|
||||||
poolAddress: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640',
|
poolAddress: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640',
|
||||||
|
@ -1,11 +1,38 @@
|
|||||||
import { ChainId } from '@uniswap/sdk-core'
|
import { ChainId } from '@uniswap/sdk-core'
|
||||||
import { USDC_MAINNET } from 'constants/tokens'
|
import { USDC_MAINNET } from 'constants/tokens'
|
||||||
|
import store from 'state'
|
||||||
|
import { addSerializedToken } from 'state/user/reducer'
|
||||||
import { usdcWethPoolAddress, validPoolToken0, validPoolToken1 } from 'test-utils/pools/fixtures'
|
import { usdcWethPoolAddress, validPoolToken0, validPoolToken1 } from 'test-utils/pools/fixtures'
|
||||||
import { render, screen } from 'test-utils/render'
|
import { render, screen } from 'test-utils/render'
|
||||||
|
|
||||||
import { PoolDetailsLink } from './PoolDetailsLink'
|
import { PoolDetailsLink } from './PoolDetailsLink'
|
||||||
|
|
||||||
describe('PoolDetailsHeader', () => {
|
describe('PoolDetailsHeader', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
||||||
|
symbol: 'USDC',
|
||||||
|
name: 'USD Coin',
|
||||||
|
decimals: 6,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||||
|
symbol: 'WETH',
|
||||||
|
name: 'Wrapped Ether',
|
||||||
|
decimals: 18,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
it('renders link for pool address', async () => {
|
it('renders link for pool address', async () => {
|
||||||
const { asFragment } = render(
|
const { asFragment } = render(
|
||||||
<PoolDetailsLink
|
<PoolDetailsLink
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
import { enableNetConnect } from 'nock'
|
import { enableNetConnect } from 'nock'
|
||||||
|
import store from 'state'
|
||||||
|
import { addSerializedToken } from 'state/user/reducer'
|
||||||
import { validPoolDataResponse } from 'test-utils/pools/fixtures'
|
import { validPoolDataResponse } from 'test-utils/pools/fixtures'
|
||||||
import { act, render, screen } from 'test-utils/render'
|
import { act, render, screen } from 'test-utils/render'
|
||||||
import { BREAKPOINTS } from 'theme'
|
import { BREAKPOINTS } from 'theme'
|
||||||
@ -15,6 +17,28 @@ describe('PoolDetailsStats', () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
// Enable network connections for retrieving token logos
|
// Enable network connections for retrieving token logos
|
||||||
enableNetConnect()
|
enableNetConnect()
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
||||||
|
symbol: 'USDC',
|
||||||
|
name: 'USD Coin',
|
||||||
|
decimals: 6,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||||
|
symbol: 'WETH',
|
||||||
|
name: 'Wrapped Ether',
|
||||||
|
decimals: 18,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('renders stats text correctly', async () => {
|
it('renders stats text correctly', async () => {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
import userEvent from '@testing-library/user-event'
|
import userEvent from '@testing-library/user-event'
|
||||||
import useMultiChainPositions from 'components/AccountDrawer/MiniPortfolio/Pools/useMultiChainPositions'
|
import useMultiChainPositions from 'components/AccountDrawer/MiniPortfolio/Pools/useMultiChainPositions'
|
||||||
|
import store from 'state'
|
||||||
|
import { addSerializedToken } from 'state/user/reducer'
|
||||||
import { mocked } from 'test-utils/mocked'
|
import { mocked } from 'test-utils/mocked'
|
||||||
import { useMultiChainPositionsReturnValue, validPoolToken0, validPoolToken1 } from 'test-utils/pools/fixtures'
|
import { useMultiChainPositionsReturnValue, validPoolToken0, validPoolToken1 } from 'test-utils/pools/fixtures'
|
||||||
import { act, render, screen } from 'test-utils/render'
|
import { act, render, screen } from 'test-utils/render'
|
||||||
@ -24,6 +26,28 @@ describe('PoolDetailsStatsButton', () => {
|
|||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
mocked(useMultiChainPositions).mockReturnValue(useMultiChainPositionsReturnValue)
|
mocked(useMultiChainPositions).mockReturnValue(useMultiChainPositionsReturnValue)
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
||||||
|
symbol: 'USDC',
|
||||||
|
name: 'USD Coin',
|
||||||
|
decimals: 6,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||||
|
symbol: 'WETH',
|
||||||
|
name: 'Wrapped Ether',
|
||||||
|
decimals: 18,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('loading skeleton shown correctly', () => {
|
it('loading skeleton shown correctly', () => {
|
||||||
|
@ -541,7 +541,7 @@ exports[`PoolDetailsHeader renders link for token address 1`] = `
|
|||||||
class="c5"
|
class="c5"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt="UNKNOWN logo"
|
alt="USDC logo"
|
||||||
class="c6"
|
class="c6"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
src="https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
src="https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||||||
|
@ -253,7 +253,7 @@ exports[`PoolDetailsStats pool balance chart not visible on mobile 1`] = `
|
|||||||
class="c10"
|
class="c10"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt="UNKNOWN logo"
|
alt="USDC logo"
|
||||||
class="c11"
|
class="c11"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
src="https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
src="https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||||||
|
@ -68,9 +68,12 @@ export function useTokenFromActiveNetwork(tokenAddress: string | undefined): Tok
|
|||||||
// If the token is on another chain, we cannot fetch it on-chain, and it is invalid.
|
// If the token is on another chain, we cannot fetch it on-chain, and it is invalid.
|
||||||
if (typeof tokenAddress !== 'string' || !isSupportedChain(chainId) || !formattedAddress) return undefined
|
if (typeof tokenAddress !== 'string' || !isSupportedChain(chainId) || !formattedAddress) return undefined
|
||||||
if (isLoading || !chainId) return null
|
if (isLoading || !chainId) return null
|
||||||
|
if (!decimals?.result?.[0] && parsedSymbol === UNKNOWN_TOKEN_SYMBOL && parsedName === UNKNOWN_TOKEN_NAME) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
return new Token(chainId, formattedAddress, parsedDecimals, parsedSymbol, parsedName)
|
return new Token(chainId, formattedAddress, parsedDecimals, parsedSymbol, parsedName)
|
||||||
}, [chainId, tokenAddress, formattedAddress, isLoading, parsedDecimals, parsedSymbol, parsedName])
|
}, [tokenAddress, chainId, formattedAddress, isLoading, decimals?.result, parsedDecimals, parsedSymbol, parsedName])
|
||||||
}
|
}
|
||||||
|
|
||||||
type TokenMap = { [address: string]: Token }
|
type TokenMap = { [address: string]: Token }
|
||||||
|
@ -2087,7 +2087,7 @@ exports[`PoolDetailsPage pool header is displayed when data is received from the
|
|||||||
class="c71"
|
class="c71"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt="UNKNOWN logo"
|
alt="USDC logo"
|
||||||
class="c72"
|
class="c72"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
src="https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
src="https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
import { usePoolData } from 'graphql/thegraph/PoolData'
|
import { usePoolData } from 'graphql/thegraph/PoolData'
|
||||||
import Router from 'react-router-dom'
|
import Router from 'react-router-dom'
|
||||||
|
import store from 'state'
|
||||||
|
import { addSerializedToken } from 'state/user/reducer'
|
||||||
import { mocked } from 'test-utils/mocked'
|
import { mocked } from 'test-utils/mocked'
|
||||||
import { validParams, validPoolDataResponse } from 'test-utils/pools/fixtures'
|
import { validParams, validPoolDataResponse } from 'test-utils/pools/fixtures'
|
||||||
import { render, screen, waitFor } from 'test-utils/render'
|
import { render, screen, waitFor } from 'test-utils/render'
|
||||||
@ -23,6 +25,28 @@ describe('PoolDetailsPage', () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest.spyOn(Router, 'useParams').mockReturnValue(validParams)
|
jest.spyOn(Router, 'useParams').mockReturnValue(validParams)
|
||||||
mocked(usePoolData).mockReturnValue(validPoolDataResponse)
|
mocked(usePoolData).mockReturnValue(validPoolDataResponse)
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
||||||
|
symbol: 'USDC',
|
||||||
|
name: 'USD Coin',
|
||||||
|
decimals: 6,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
|
store.dispatch(
|
||||||
|
addSerializedToken({
|
||||||
|
serializedToken: {
|
||||||
|
chainId: 1,
|
||||||
|
address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||||
|
symbol: 'WETH',
|
||||||
|
name: 'Wrapped Ether',
|
||||||
|
decimals: 18,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('not found page displayed when given no poolAddress', () => {
|
it('not found page displayed when given no poolAddress', () => {
|
||||||
|
Loading…
Reference in New Issue
Block a user