test: the popup boot in the jest suite sends no request to the internet (closes #559)
bootPopup() in tests/support/popupBoot.js mocked the three shared modules that reach the network, but a boot onto the transaction screen still asked Blockscout for its transaction, and a boot onto the confirmation screen looked the recipient up on Etherscan, both through the real fetch(). tests/persistedFieldContract.test.js boots onto both, so every run sent those requests and logged their answers after its tests had finished. bootPopup() now replaces fetch() with the throwing stub the rest of the suite uses, and cleanupPopup() puts it back. tests/popupBoot.test.js checks that both requests reach the stub. Model: opus-5-5
This commit is contained in:
@@ -9,6 +9,7 @@ const {
|
||||
bootPopup,
|
||||
cleanupPopup,
|
||||
unversionedValidProfile,
|
||||
ADDRESS,
|
||||
} = require("./support/popupBoot");
|
||||
|
||||
const FLASH_MS = 10;
|
||||
@@ -40,3 +41,47 @@ test("a flash message's timer does not fire after cleanupPopup()", async () => {
|
||||
|
||||
await wait(FLASH_MS * 5);
|
||||
});
|
||||
|
||||
// A boot onto a screen that sends requests of its own: they reach the boot's
|
||||
// fetch() stub, never the internet
|
||||
// (https://git.eeqj.de/sneak/AutistMask/issues/559).
|
||||
function restoringOnto(view, viewData) {
|
||||
return unversionedValidProfile({
|
||||
currentView: view,
|
||||
selectedWallet: 0,
|
||||
selectedAddress: 0,
|
||||
viewStack: ["main"],
|
||||
viewData,
|
||||
});
|
||||
}
|
||||
|
||||
test("the transaction screen's Blockscout request reaches the stub", async () => {
|
||||
const page = await bootPopup(
|
||||
restoringOnto("transaction", {
|
||||
tx: { hash: "0x1", from: ADDRESS, to: ADDRESS },
|
||||
}),
|
||||
);
|
||||
|
||||
expect(page.visibleViews()).toEqual(["transaction"]);
|
||||
expect(globalThis.fetch.mock.calls.map((call) => call[0])).toEqual([
|
||||
"https://eth.blockscout.com/api/v2/transactions/0x1",
|
||||
]);
|
||||
});
|
||||
|
||||
test("the confirmation screen's Etherscan lookup reaches the stub", async () => {
|
||||
const page = await bootPopup(
|
||||
restoringOnto("confirm-tx", {
|
||||
pendingTx: {
|
||||
token: "ETH",
|
||||
from: ADDRESS,
|
||||
to: ADDRESS,
|
||||
amount: "1",
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
expect(page.visibleViews()).toEqual(["confirm-tx"]);
|
||||
expect(globalThis.fetch.mock.calls.map((call) => call[0])).toEqual([
|
||||
"https://etherscan.io/address/" + ADDRESS,
|
||||
]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user