mirror of
https://github.com/immich-app/immich.git
synced 2026-05-22 23:52:32 -04:00
80 lines
2.6 KiB
TypeScript
80 lines
2.6 KiB
TypeScript
import { updateAsset } from '@immich/sdk';
|
|
import { fireEvent, waitFor } from '@testing-library/svelte';
|
|
import { getAnimateMock } from '$lib/__mocks__/animate.mock';
|
|
import { getResizeObserverMock } from '$lib/__mocks__/resize-observer.mock';
|
|
import { authManager } from '$lib/managers/auth-manager.svelte';
|
|
import { SlideshowState, slideshowStore } from '$lib/stores/slideshow.store';
|
|
import { renderWithTooltips } from '$tests/helpers';
|
|
import { assetFactory } from '@test-data/factories/asset-factory';
|
|
import { preferencesFactory } from '@test-data/factories/preferences-factory';
|
|
import { userAdminFactory } from '@test-data/factories/user-factory';
|
|
import AssetViewer from './AssetViewer.svelte';
|
|
|
|
vi.mock('$lib/managers/feature-flags-manager.svelte', () => ({
|
|
featureFlagsManager: {
|
|
init: vi.fn(),
|
|
loadFeatureFlags: vi.fn(),
|
|
value: { smartSearch: true, trash: true },
|
|
} as never,
|
|
}));
|
|
|
|
vi.mock('$lib/stores/ocr.svelte', () => ({
|
|
ocrManager: {
|
|
clear: vi.fn(),
|
|
getAssetOcr: vi.fn(),
|
|
hasOcrData: false,
|
|
showOverlay: false,
|
|
},
|
|
}));
|
|
|
|
vi.mock('@immich/sdk', async () => {
|
|
const sdk = await vi.importActual<typeof import('@immich/sdk')>('@immich/sdk');
|
|
return {
|
|
...sdk,
|
|
updateAsset: vi.fn(),
|
|
};
|
|
});
|
|
|
|
describe('AssetViewer', () => {
|
|
beforeAll(() => {
|
|
Element.prototype.animate = getAnimateMock();
|
|
vi.stubGlobal('ResizeObserver', getResizeObserverMock());
|
|
});
|
|
|
|
afterEach(() => {
|
|
slideshowStore.slideshowState.set(SlideshowState.None);
|
|
authManager.reset();
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
afterAll(() => {
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
it.skip('updates the top bar favorite action after pressing favorite', async () => {
|
|
const ownerId = 'owner-id';
|
|
const user = userAdminFactory.build({ id: ownerId });
|
|
const asset = assetFactory.build({ ownerId, isFavorite: false, isTrashed: false });
|
|
|
|
authManager.setUser(user);
|
|
authManager.setPreferences(preferencesFactory.build({ cast: { gCastEnabled: false } }));
|
|
|
|
vi.mocked(updateAsset).mockResolvedValue({ ...asset, isFavorite: true });
|
|
|
|
const { getByLabelText, queryByLabelText } = renderWithTooltips(AssetViewer, {
|
|
cursor: { current: asset },
|
|
showNavigation: false,
|
|
});
|
|
|
|
expect(getByLabelText('to_favorite')).toBeInTheDocument();
|
|
expect(queryByLabelText('unfavorite')).toBeNull();
|
|
|
|
await fireEvent.click(getByLabelText('to_favorite'));
|
|
|
|
await waitFor(() =>
|
|
expect(updateAsset).toHaveBeenCalledWith({ id: asset.id, updateAssetDto: { isFavorite: true } }),
|
|
);
|
|
await waitFor(() => expect(getByLabelText('unfavorite')).toBeInTheDocument());
|
|
});
|
|
});
|