Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
d493fb6
add vitest
carlbarrdahl Jul 17, 2023
864b22d
working on tests
carlbarrdahl Jul 17, 2023
26e6c52
Fix deposit test
carlbarrdahl Jul 20, 2023
27710fd
Merge branch 'main' into bridge-tests
carlbarrdahl Jul 20, 2023
2759c0a
Update tests
carlbarrdahl Jul 20, 2023
9a1e422
Remove console.log
carlbarrdahl Jul 20, 2023
0212f91
Fix merge config + tests
carlbarrdahl Jul 20, 2023
737b976
Fix package.json
carlbarrdahl Jul 20, 2023
370bd2e
Remove unused file
carlbarrdahl Jul 20, 2023
4f6d220
Fix unsupported chain in MockConnector
carlbarrdahl Jul 20, 2023
9e7004c
Remove unused import
carlbarrdahl Jul 20, 2023
0600544
Merge branch 'main' into bridge-tests
carlbarrdahl Jul 24, 2023
9bff9fe
tests for useDepositERC20
carlbarrdahl Jul 24, 2023
215a784
Add depositERC20 test
carlbarrdahl Jul 26, 2023
6cf1ba1
Add withdraw tests
carlbarrdahl Jul 26, 2023
cc5f906
Merge branch 'main' into bridge-tests
carlbarrdahl Jul 26, 2023
fafad5e
Add coverage
carlbarrdahl Jul 26, 2023
7da57c1
Merge branch 'main' into bridge-tests
carlbarrdahl Aug 2, 2023
36d59d5
Add tests for proveMessage and finalizeMessage
carlbarrdahl Aug 3, 2023
173a11c
Merge branch 'main' into bridge-tests
carlbarrdahl Aug 3, 2023
324d772
Test improvements
carlbarrdahl Aug 3, 2023
ad8feb7
Fix TokenAmount attributes
carlbarrdahl Aug 3, 2023
13a8604
Merge branch 'main' into bridge-tests
carlbarrdahl Aug 3, 2023
e5e4bf4
Fix deposit and withdraw tests
carlbarrdahl Aug 3, 2023
af0cc55
Switch to Hardhat for proveMessage test
carlbarrdahl Aug 4, 2023
e520659
Fix tests
carlbarrdahl Aug 4, 2023
899a137
Cleanup
carlbarrdahl Aug 4, 2023
750fd7b
Cleanup
carlbarrdahl Aug 4, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/erc20-deployer/contracts/ERC20.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";

contract MyToken is ERC20, ERC20Burnable, Ownable, ERC20Permit, ERC20Votes {
constructor() ERC20("MyToken", "MTK") ERC20Permit("MyToken") {}
contract TestToken is ERC20, ERC20Burnable, Ownable, ERC20Permit, ERC20Votes {
constructor() ERC20("TestToken", "MTK") ERC20Permit("TestToken") {}

function mint(address to, uint256 amount) public onlyOwner {
_mint(to, amount);
Expand Down
16 changes: 16 additions & 0 deletions packages/react/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,19 @@ The component for bridging tokens.
#### Transactions

This component will fetch all withdrawals and display in a table. The user can Prove or Finalize these transactions.

### Running tests

Make sure a hardhat node is running.

```sh
cd packages/erc20-deployer
npx hardhat node
```

Then you can run the tests

```sh
npm run test

```
11 changes: 10 additions & 1 deletion packages/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,30 @@
"scripts": {
"build": "tsup",
"dev": "tsup --watch",
"test": "vitest",
"coverage": "vitest run --coverage",
"lint": "eslint \"**/*.ts*\"",
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
"sentry:sourcemaps": "sentry-cli sourcemaps inject --org supermodular --project pgn ./dist && sentry-cli sourcemaps upload --org supermodular --project pgn ./dist",
"tsup": "tsup && npm run sentry:sourcemaps"
},
"devDependencies": {
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.4.3",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0",
"@vitejs/plugin-react": "^4.0.3",
"@vitest/coverage-istanbul": "^0.33.0",
"autoprefixer": "^10.4.14",
"eslint": "^7.32.0",
"eslint-config-custom": "workspace:*",
"jsdom": "^22.1.0",
"tailwindcss": "3.3.2",
"tsconfig": "workspace:*",
"tsup": "^6.2.3",
"typescript": "^4.8.3"
"typescript": "^4.8.3",
"vitest": "^0.33.0"
},
"dependencies": {
"@conduitxyz/sdk": "^0.0.3",
Expand Down
10 changes: 7 additions & 3 deletions packages/react/src/components/ChainSelect.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,20 @@ export function ChainSelect({
chainOut: Chain;
}) {
const { switchNetwork } = useSwitchNetwork();

return (
<div className="flex items-end">
<div className="flex-1">
<Label>From</Label>
<ChainItem>{chainIn.name}</ChainItem>
<ChainItem data-testid="from">{chainIn.name}</ChainItem>
</div>
<SwapButton type="button" onClick={() => switchNetwork?.(chainOut.id)}>
<SwapButton
type="button"
disabled={!switchNetwork}
onClick={() => switchNetwork?.(chainOut.id)}
>
</SwapButton>

<div className="flex-1">
<Label>To</Label>
<ChainItem className="justify-end">{chainOut.name}</ChainItem>
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/components/TokenAmount.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ export function TokenAmount({
type="number"
step="0.00000001"
min={0}
id="amount"
size="lg"
placeholder="0.0"
className="flex-1"
disabled={disabled}
id="amount"
{...form.register("amount", { valueAsNumber: true })}
/>
<MaxButton
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/crossChainMessenger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ export function useCrossChainMessenger({
const {
networks: { l1, l2 },
} = usePGN();

/*
Needs to handle 3 use-cases:
- Deposit L1 => L2 (Signer is L1)
Expand Down Expand Up @@ -61,7 +62,6 @@ export function useCrossChainMessenger({
l1SignerOrProvider = useProvider({ chainId: l1?.id });
l2SignerOrProvider = useSigner({ chainId: l2?.id }).data;
}

return useQuery(
["crosschain-messenger", { l1AsSigner, readonly, l1, l2 }],
async () => {
Expand Down
1 change: 1 addition & 0 deletions packages/react/src/hooks/transactions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export function useFinalize() {
const { data: crossChainMessenger } = useCrossChainMessenger({
l1AsSigner: true,
});

return useMutation(async (hash: string) =>
crossChainMessenger?.finalizeMessage(hash).then((tx) => tx.wait())
);
Expand Down
12 changes: 7 additions & 5 deletions packages/react/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,13 @@ export const BridgeProvider = memo(({ config, children }: BridgeProps) => {
});

function mergeConfig(config: PGNConfig) {
let merged = merge(config, defaultConfig) as PGNConfig;
const { networks } = merged;
const tokens = merged.tokens.filter(
const theme = merge(config.theme || {}, defaultConfig.theme);
const tokens = config.tokens.filter(
(token: Token) =>
token.tokens[networks.l1.network] && token.tokens[networks.l2.network]
token.tokens[config.networks.l1.network] &&
token.tokens[config.networks.l2.network]
);
return { ...merged, tokens };

console.log(config.networks);
return { ...config, tokens, theme };
}
24 changes: 19 additions & 5 deletions packages/react/src/providers/Wagmi.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { memo, useMemo, useState } from "react";
import { WagmiConfig, configureChains } from "wagmi";
import { useMemo, useState } from "react";
import { WagmiConfig, configureChains, createClient } from "wagmi";
import { QueryClient } from "@tanstack/react-query";
import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";
import { createSyncStoragePersister } from "@tanstack/query-sync-storage-persister";
Expand All @@ -9,18 +9,32 @@ import {
getDefaultWallets,
} from "@rainbow-me/rainbowkit";
import { jsonRpcProvider } from "wagmi/providers/jsonRpc";
import { PGNConfig } from "../types";
import { MockConnector } from "wagmi/connectors/mock";
import { hardhat } from "wagmi/chains";
import {
safeWallet,
argentWallet,
trustWallet,
ledgerWallet,
} from "@rainbow-me/rainbowkit/wallets";

import { PGNConfig } from "../types";
import { createClient } from "wagmi";
import { Wallet } from "ethers";

const alchemyKey = process.env.NEXT_PUBLIC_ALCHEMY_KEY;

const isTest = process.env.NODE_ENV === "test";

const testConnectors = [
new MockConnector({
chains: [hardhat, { ...hardhat, id: hardhat.id + 1 }],
options: {
signer: new Wallet(
"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
),
},
}),
];
export const WagmiProvider = ({
children,
pgnConfig,
Expand Down Expand Up @@ -79,7 +93,7 @@ export const WagmiProvider = ({

const client = createClient({
autoConnect: true,
connectors,
connectors: isTest ? testConnectors : connectors,
provider,
});

Expand Down
Loading