add some tests for etherscan link
This commit is contained in:
parent
003bb68c06
commit
b2ddfec8c6
43
src/components/etherscan-link/etherscan-link.test.tsx
Normal file
43
src/components/etherscan-link/etherscan-link.test.tsx
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import { render, screen } from "@testing-library/react";
|
||||||
|
import * as React from "react";
|
||||||
|
import { EtherscanLink } from ".";
|
||||||
|
import { EthereumChainIds } from "../../utils/web3";
|
||||||
|
|
||||||
|
test("It renders a link with the text", () => {
|
||||||
|
render(
|
||||||
|
<EtherscanLink text="foo" chainId={EthereumChainIds.Mainnet} tx="tx" />
|
||||||
|
);
|
||||||
|
expect(screen.getByText("foo")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("It renders a link with the tx hash if no text is provided", () => {
|
||||||
|
render(<EtherscanLink chainId={EthereumChainIds.Mainnet} tx="tx" />);
|
||||||
|
expect(screen.getByText("tx")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("It renders a link with the address if no text is provided", () => {
|
||||||
|
render(
|
||||||
|
<EtherscanLink chainId={EthereumChainIds.Mainnet} address="address" />
|
||||||
|
);
|
||||||
|
expect(screen.getByText("address")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("It links to etherscan if network is mainnet", () => {
|
||||||
|
render(
|
||||||
|
<EtherscanLink chainId={EthereumChainIds.Mainnet} address="address" />
|
||||||
|
);
|
||||||
|
expect(screen.getByTestId("etherscan-link")).toHaveAttribute(
|
||||||
|
"href",
|
||||||
|
"https://etherscan.io/address/address"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("It links to ropsten etherscan if network is ropsten", () => {
|
||||||
|
render(
|
||||||
|
<EtherscanLink chainId={EthereumChainIds.Ropsten} address="address" />
|
||||||
|
);
|
||||||
|
expect(screen.getByTestId("etherscan-link")).toHaveAttribute(
|
||||||
|
"href",
|
||||||
|
"https://ropsten.etherscan.io/address/address"
|
||||||
|
);
|
||||||
|
});
|
@ -1,3 +1,4 @@
|
|||||||
|
import React from "react";
|
||||||
import { EthereumChainId } from "../../utils/web3";
|
import { EthereumChainId } from "../../utils/web3";
|
||||||
|
|
||||||
const etherscanUrls: Record<EthereumChainId, string> = {
|
const etherscanUrls: Record<EthereumChainId, string> = {
|
||||||
@ -35,7 +36,9 @@ export const EtherscanLink = ({
|
|||||||
}: EtherscanLinkProps) => {
|
}: EtherscanLinkProps) => {
|
||||||
let hash: string;
|
let hash: string;
|
||||||
let txLink: string | null;
|
let txLink: string | null;
|
||||||
const createLink = etherscanLinkCreator(chainId);
|
const createLink = React.useMemo(() => etherscanLinkCreator(chainId), [
|
||||||
|
chainId,
|
||||||
|
]);
|
||||||
|
|
||||||
if ("tx" in props) {
|
if ("tx" in props) {
|
||||||
hash = props.tx;
|
hash = props.tx;
|
||||||
@ -54,6 +57,7 @@ export const EtherscanLink = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<a
|
<a
|
||||||
|
data-testid="etherscan-link"
|
||||||
href={txLink}
|
href={txLink}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "ES2020",
|
"target": "ES2020",
|
||||||
"lib": ["dom", "dom.iterable", "ES2020"],
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"ES2020"
|
||||||
|
],
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
@ -16,8 +20,15 @@
|
|||||||
"jsx": "react-jsx",
|
"jsx": "react-jsx",
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"emitDeclarationOnly": true,
|
"emitDeclarationOnly": true,
|
||||||
"declarationDir": "dist/types"
|
"declarationDir": "dist/types",
|
||||||
|
"noEmit": true
|
||||||
},
|
},
|
||||||
"include": ["src"],
|
"include": [
|
||||||
"exclude": ["node_modules", "**/*.stories.tsx", "**/*.test.tsx"]
|
"src"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"**/*.stories.tsx",
|
||||||
|
"**/*.test.tsx"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user