Skip to content

Commit ee9601a

Browse files
committed
Pass AddressInput test
1 parent 65fd656 commit ee9601a

File tree

3 files changed

+45
-16
lines changed

3 files changed

+45
-16
lines changed

packages/components/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
"@web3-ui/hooks": "^0.1.0",
5151
"babel-loader": "^8.2.1",
5252
"classnames": "^2.2.6",
53-
"ethereum-waffle": "^3.4.0",
5453
"ethers": "^5.5.1",
5554
"husky": "^7.0.0",
5655
"identity-obj-proxy": "^3.0.0",
Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,46 @@
11
import React from 'react';
22
import { render } from '@testing-library/react';
33
import { AddressInput } from '.';
4-
import { MockProvider } from 'ethereum-waffle';
4+
import { ethers } from 'ethers';
5+
import 'regenerator-runtime/runtime';
56

6-
describe('AddressInput', () => {
7-
it('renders', () => {
8-
const provider = new MockProvider();
9-
const [value, setValue] = React.useState('');
7+
const WALLET_ADDRESS = '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266';
8+
const SIGNED_MESSAGE =
9+
'0xa2162955fbfbac44ad895441a3501465861435d6615053a64fc9622d98061f1556e47c6655d0ea02df00ed6f6050298eea381b4c46f8148ecb617b32695bdc451c';
10+
11+
const WINDOW_ETHEREUM = {
12+
isMetaMask: true,
13+
request: async (request: { method: string; params?: Array<unknown> }) => {
14+
if (['eth_accounts', 'eth_requestAccounts'].includes(request.method)) {
15+
return [WALLET_ADDRESS];
16+
} else if (['personal_sign'].includes(request.method)) {
17+
return SIGNED_MESSAGE;
18+
}
19+
20+
throw Error(`Unknown request: ${request.method}`);
21+
},
22+
};
23+
24+
jest.mock('ethers', () => {
25+
const original = jest.requireActual('ethers');
26+
return {
27+
...original,
28+
ethers: {
29+
...original.ethers,
30+
},
31+
};
32+
});
33+
34+
const Component = () => {
35+
const provider = new ethers.providers.Web3Provider(WINDOW_ETHEREUM);
36+
const [value, setValue] = React.useState('');
1037

11-
const { container } = render(
12-
<AddressInput value={value} onChange={(e) => setValue(e)} provider={provider} />
13-
);
38+
return <AddressInput value={value} onChange={(e) => setValue(e)} provider={provider} />;
39+
};
40+
41+
describe('AddressInput', () => {
42+
it('renders AddressInput correctly', () => {
43+
const { container } = render(<Component />);
1444
expect(container);
1545
});
1646
});

packages/components/src/components/AddressInput/AddressInput.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ export const AddressInput: React.FC<AddressInputProps & InputProps> = ({
3737
...props
3838
}) => {
3939
const [inputValue, setInputValue] = useState('');
40-
const deboucedValue = useDebounce(inputValue, 700);
40+
const debouncedValue = useDebounce(inputValue, 700);
4141
const [error, setError] = useState<null | string>(null);
4242
const regex = /^0x[a-fA-F0-9]{40}$/;
4343

4444
const getAddressFromEns = async () => {
4545
try {
46-
let address = await provider.resolveName(deboucedValue);
46+
let address = await provider.resolveName(debouncedValue);
4747
if (!address) {
4848
setError('Invalid Input');
4949
}
@@ -55,16 +55,16 @@ export const AddressInput: React.FC<AddressInputProps & InputProps> = ({
5555
};
5656

5757
useEffect(() => {
58-
if (deboucedValue) {
58+
if (debouncedValue) {
5959
onChange('');
6060
setError(null);
61-
if (regex.test(deboucedValue)) {
62-
onChange(deboucedValue);
63-
} else if (deboucedValue.endsWith('.eth') || deboucedValue.endsWith('.xyz')) {
61+
if (regex.test(debouncedValue)) {
62+
onChange(debouncedValue);
63+
} else if (debouncedValue.endsWith('.eth') || debouncedValue.endsWith('.xyz')) {
6464
getAddressFromEns().then((address) => onChange(address ? address : ''));
6565
}
6666
}
67-
}, [deboucedValue]);
67+
}, [debouncedValue]);
6868

6969
useEffect(() => {
7070
if (inputValue === '') {

0 commit comments

Comments
 (0)