import React, { useCallback, useContext, useEffect, useState } from "react"; import { render, screen } from "@testing-library/react"; import { Web3Provider, useSwitchNetwork } from "./Web3Context"; import { Web3Context } from "./Web3Context"; const TestSwitch = () => { const [id, setNetwork] = useState(0); const { switchNetwork, setSwitchNetwork } = useSwitchNetwork(); const switchit = useCallback( async (id: number) => { console.log("setting network:", id); setNetwork(id); }, [setNetwork] ); return (
setSwitchNetwork(switchit)} data-testid="setNetwork">
{"" + id}
switchNetwork && switchNetwork(1)}>
); }; const TestEmitter = () => { const [title, setTitle] = useState(); const { txEmitter } = useContext(Web3Context); useEffect(() => { txEmitter.on(tx => { setTitle(tx.title); }); txEmitter.emit({ title: "test", from: "", to: "", txhash: "0x0" }); }, [txEmitter, setTitle]); return (
{title}
); }; describe("Web3Context", () => { test("renders the contextt", () => { render(
); }); test("set switch function and switches network", async () => { render( ); screen.getByTestId("setNetwork").click(); screen.getByTestId("switch").click(); expect(screen.getByTestId("displayNetwork").textContent).toEqual("1"); }); test("should emit/receive tx data using txEmitter", async () => { render( ); const el = await screen.findByText("test", undefined, { timeout: 2000 }); expect(el.getAttribute("data-testid")).toEqual("displayTX"); }); });