immich/web/src/lib/managers/asset-multi-select-manager.svelte.spec.ts
Jason Rasmussen a16d233a0c
chore(web): sort imports (#27922)
* feat: sort imports

* fix: something?
2026-04-21 14:51:38 -04:00

48 lines
1.6 KiB
TypeScript

import { AssetVisibility } from '@immich/sdk';
import { AssetMultiSelectManager } from '$lib/managers/asset-multi-select-manager.svelte';
import { authManager } from '$lib/managers/auth-manager.svelte';
import { timelineAssetFactory } from '@test-data/factories/asset-factory';
import { preferencesFactory } from '@test-data/factories/preferences-factory';
import { userAdminFactory } from '@test-data/factories/user-factory';
describe('AssetMultiSelectManager', () => {
let sut: AssetMultiSelectManager;
beforeEach(() => {
sut = new AssetMultiSelectManager();
});
it('calculates derived values from selection', () => {
sut.selectAsset(
timelineAssetFactory.build({ isFavorite: true, visibility: AssetVisibility.Archive, isTrashed: true }),
);
sut.selectAsset(
timelineAssetFactory.build({ isFavorite: true, visibility: AssetVisibility.Timeline, isTrashed: false }),
);
expect(sut.selectionActive).toBe(true);
expect(sut.isAllTrashed).toBe(false);
expect(sut.isAllArchived).toBe(false);
expect(sut.isAllFavorite).toBe(true);
});
it('updates isAllUserOwned when the active user changes', () => {
const [user1, user2] = userAdminFactory.buildList(2);
sut.selectAsset(timelineAssetFactory.build({ ownerId: user1.id }));
const cleanup = $effect.root(() => {
expect(sut.isAllUserOwned).toBe(false);
authManager.setUser(user1);
authManager.setPreferences(preferencesFactory.build());
expect(sut.isAllUserOwned).toBe(true);
authManager.setUser(user2);
expect(sut.isAllUserOwned).toBe(false);
});
cleanup();
authManager.reset();
});
});