Reformat.

This commit is contained in:
Patrick Fic
2025-03-21 11:41:42 -07:00
parent 14e7c64eab
commit d14137dc44
34 changed files with 380 additions and 339 deletions

View File

@@ -1,93 +1,97 @@
import { test, expect } from '@playwright/test';
import { Page } from '@playwright/test';
import { test, expect } from "@playwright/test";
import { Page } from "@playwright/test";
// src/renderer/src/App.test.tsx
// Mock data
const mockUser = {
uid: 'test123',
email: 'test@example.com',
displayName: 'Test User',
uid: "test123",
email: "test@example.com",
displayName: "Test User",
toJSON: () => ({
uid: 'test123',
email: 'test@example.com',
displayName: 'Test User'
})
uid: "test123",
email: "test@example.com",
displayName: "Test User",
}),
};
test.describe('App Component', () => {
test.describe("App Component", () => {
let page: Page;
test.beforeEach(async ({ browser }) => {
page = await browser.newPage();
// Mock Firebase Auth
await page.addInitScript(() => {
window.mockAuthState = null;
// Mock the firebase auth module
jest.mock('./util/firebase', () => ({
jest.mock("./util/firebase", () => ({
auth: {
onAuthStateChanged: (callback) => {
callback(window.mockAuthState);
// Return mock unsubscribe function
return () => {};
}
}
},
},
}));
// Mock electron IPC
window.electron = {
ipcRenderer: {
send: jest.fn()
}
send: jest.fn(),
},
};
});
await page.goto('/');
await page.goto("/");
});
test('should show SignInForm when user is not authenticated', async () => {
test("should show SignInForm when user is not authenticated", async () => {
await page.evaluate(() => {
window.mockAuthState = null;
});
await page.reload();
// Check if SignInForm is visible
const signInForm = await page.locator('form').filter({ hasText: 'Sign In' });
const signInForm = await page
.locator("form")
.filter({ hasText: "Sign In" });
await expect(signInForm).toBeVisible();
});
test('should show routes when user is authenticated', async () => {
test("should show routes when user is authenticated", async () => {
await page.evaluate((user) => {
window.mockAuthState = user;
}, mockUser);
await page.reload();
// Check if AuthHome is visible
const authHome = await page.locator('div:text("AuthHome")');
await expect(authHome).toBeVisible();
// Check that electron IPC was called with auth state
await expect(page.evaluate(() => {
return window.electron.ipcRenderer.send.mock.calls.length > 0;
})).resolves.toBe(true);
await expect(
page.evaluate(() => {
return window.electron.ipcRenderer.send.mock.calls.length > 0;
}),
).resolves.toBe(true);
});
test('should navigate to settings page when authenticated', async () => {
test("should navigate to settings page when authenticated", async () => {
await page.evaluate((user) => {
window.mockAuthState = user;
}, mockUser);
await page.reload();
// Navigate to settings
await page.click('a[href="/settings"]');
// Check if Settings page is visible
const settingsPage = await page.locator('div:text("Settings")');
await expect(settingsPage).toBeVisible();
});
});
});

View File

@@ -25,7 +25,7 @@ const App: React.FC = () => {
if (user) {
window.electron.ipcRenderer.send(
ipcTypes.toMain.authStateChanged,
user.toJSON()
user.toJSON(),
);
window.electron.ipcRenderer.send(ipcTypes.toMain.watcher.start);
}

View File

@@ -8,7 +8,7 @@ const Home: React.FC = () => {
<Button
onClick={(): void => {
window.electron.ipcRenderer.send(
ipcTypes.toMain.debug.decodeEstimate
ipcTypes.toMain.debug.decodeEstimate,
);
}}
>

View File

@@ -24,7 +24,7 @@ const SignInForm: React.FC = () => {
};
const onFinishFailed: FormProps<FieldType>["onFinishFailed"] = (
errorInfo
errorInfo,
) => {
log.log("Failed:", errorInfo);
};

View File

@@ -1,7 +1,7 @@
import { useState } from 'react'
import { useState } from "react";
function Versions(): JSX.Element {
const [versions] = useState(window.electron.process.versions)
const [versions] = useState(window.electron.process.versions);
return (
<ul className="versions">
@@ -9,7 +9,7 @@ function Versions(): JSX.Element {
<li className="chrome-version">Chromium v{versions.chrome}</li>
<li className="node-version">Node v{versions.node}</li>
</ul>
)
);
}
export default Versions
export default Versions;

View File

@@ -7,5 +7,5 @@ import "./util/ipcRendererHandler";
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
<React.StrictMode>
<App />
</React.StrictMode>
</React.StrictMode>,
);

View File

@@ -16,7 +16,7 @@ ipcRenderer.on(
(event: Electron.IpcRendererEvent, arg) => {
console.log("Received test message from main process");
console.log(arg);
}
},
);
ipcRenderer.on(
@@ -24,7 +24,7 @@ ipcRenderer.on(
async (event: Electron.IpcRendererEvent, arg) => {
const token = await auth.currentUser?.getIdToken();
ipcRenderer.send(ipcTypes.toMain.user.getTokenResponse, token);
}
},
);
ipcRenderer.on(
@@ -33,7 +33,7 @@ ipcRenderer.on(
console.log("Watcher has started");
console.log(arg);
dispatch(watcherStarted());
}
},
);
ipcRenderer.on(
@@ -42,7 +42,7 @@ ipcRenderer.on(
console.log("Watcher has stopped");
console.log(arg);
dispatch(watcherStopped());
}
},
);
ipcRenderer.on(
ipcTypes.toRenderer.watcher.error,
@@ -50,5 +50,5 @@ ipcRenderer.on(
console.log("Watcher has encountered an error");
console.log(error);
dispatch(watcherError(error));
}
},
);