feat(v027): IPC inbox:navigate — 외부에서 설정 페이지 진입
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
// @vitest-environment jsdom
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
import '@testing-library/jest-dom/vitest';
|
||||
import { render, screen, fireEvent, cleanup } from '@testing-library/react';
|
||||
import { render, screen, fireEvent, cleanup, waitFor } from '@testing-library/react';
|
||||
|
||||
vi.mock('../../src/renderer/inbox/api.js', () => ({
|
||||
inboxApi: {
|
||||
@@ -20,6 +20,7 @@ vi.mock('../../src/renderer/inbox/api.js', () => ({
|
||||
onNoteUpdated: vi.fn(() => () => undefined),
|
||||
onOllamaStatus: vi.fn(() => () => undefined),
|
||||
onOpenOllamaSettings: vi.fn(() => () => undefined),
|
||||
onNavigate: vi.fn(() => () => undefined),
|
||||
// 4 섹션 mounted 시 호출되는 stub
|
||||
loadOllamaSettings: vi.fn(async () => ({ endpoint: '', model: '' })),
|
||||
saveOllamaSettings: vi.fn(async () => ({ ok: true })),
|
||||
@@ -39,6 +40,7 @@ vi.mock('../../src/renderer/inbox/api.js', () => ({
|
||||
|
||||
import { App } from '../../src/renderer/inbox/App';
|
||||
import { useInbox } from '../../src/renderer/inbox/store';
|
||||
import { inboxApi } from '../../src/renderer/inbox/api.js';
|
||||
|
||||
describe('App — settings view', () => {
|
||||
beforeEach(() => {
|
||||
@@ -58,4 +60,19 @@ describe('App — settings view', () => {
|
||||
fireEvent.click(await screen.findByLabelText('설정 열기'));
|
||||
expect(useInbox.getState().showSettings).toBe(true);
|
||||
});
|
||||
|
||||
it('inbox:navigate "settings" event sets showSettings=true', async () => {
|
||||
const navHandlers: Array<(view: 'inbox' | 'trash' | 'settings') => void> = [];
|
||||
vi.mocked(inboxApi.onNavigate).mockImplementation((cb) => {
|
||||
navHandlers.push(cb);
|
||||
return () => {
|
||||
const i = navHandlers.indexOf(cb);
|
||||
if (i >= 0) navHandlers.splice(i, 1);
|
||||
};
|
||||
});
|
||||
render(<App />);
|
||||
await waitFor(() => expect(navHandlers.length).toBeGreaterThan(0));
|
||||
navHandlers.forEach((h) => h('settings'));
|
||||
await waitFor(() => expect(useInbox.getState().showSettings).toBe(true));
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user