UNPKG

@lukasrosario/account

Version:

Base Account SDK

63 lines (51 loc) 1.81 kB
import { initDialog } from ':ui/Dialog/index.js'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { presentAddOwnerDialog } from './presentAddOwnerDialog.js'; vi.mock(':ui/Dialog/index.js', () => ({ initDialog: vi.fn(), })); describe('presentAddOwnerDialog', () => { let mockDialog: { presentItem: ReturnType<typeof vi.fn>; clear: ReturnType<typeof vi.fn>; }; beforeEach(() => { mockDialog = { presentItem: vi.fn(), clear: vi.fn(), }; (initDialog as ReturnType<typeof vi.fn>).mockReturnValue(mockDialog); }); afterEach(() => { vi.clearAllMocks(); }); it('should present snackbar with correct options', async () => { const promise = presentAddOwnerDialog(); expect(mockDialog.presentItem).toHaveBeenCalledWith({ title: expect.stringContaining('Re-authorize'), message: expect.stringContaining('has lost access to your account'), actionItems: expect.arrayContaining([ expect.objectContaining({ text: 'Continue', variant: 'primary', }), expect.objectContaining({ text: 'Not now', variant: 'secondary', }), ]), onClose: expect.any(Function), }); const confirmClick = mockDialog.presentItem.mock.calls[0][0].actionItems[0].onClick; confirmClick(); await expect(promise).resolves.toBe('authenticate'); expect(mockDialog.clear).toHaveBeenCalled(); }); it('should resolve with cancel when cancel is clicked', async () => { const promise = presentAddOwnerDialog(); const cancelClick = mockDialog.presentItem.mock.calls[0][0].actionItems[1].onClick; cancelClick(); await expect(promise).resolves.toBe('cancel'); expect(mockDialog.clear).toHaveBeenCalled(); }); });