import { UpdateLogoConfirm } from '@agent/workflows/theme/components/UpdateLogoConfirm'; import { render } from '@testing-library/react'; jest.mock('@agent/components/ImageUploader', () => ({ ImageUploader: ({ onSave, onCancel }) => (
), })); jest.mock('@quick-edit/state/store', () => ({ useQuickEditStore: (selector) => selector({ agentBlock: { id: 'logo-1' } }), })); describe('UpdateLogoConfirm — undo on cancel/unmount', () => { let logoImg; beforeEach(() => { const logoWrapper = document.createElement('div'); logoWrapper.className = 'wp-block-site-logo'; logoImg = document.createElement('img'); logoImg.src = 'http://example.com/original-logo.png'; logoWrapper.appendChild(logoImg); document.body.appendChild(logoWrapper); }); afterEach(() => { document.querySelector('.wp-block-site-logo')?.remove(); }); test('restores original logo src on unmount without confirming', () => { const { unmount } = render( , ); // Simulate a selection changing the logo logoImg.src = 'http://example.com/new-logo.png'; unmount(); expect(logoImg.src).toBe('http://example.com/original-logo.png'); }); test('does not restore logo after confirming', async () => { const onConfirm = jest.fn(); const { unmount, getByText } = render( , ); logoImg.src = 'http://example.com/new-logo.png'; const saveBtn = getByText('Save'); saveBtn.click(); await Promise.resolve(); // flush async onConfirm unmount(); // Should not have restored because confirmed was set expect(logoImg.src).toBe('http://example.com/new-logo.png'); }); });