mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-25 18:26:05 +08:00
test: workspace provider (#4497)
This commit is contained in:
@@ -1,10 +1,13 @@
|
|||||||
import { AffineSchemas } from '@blocksuite/blocks/models';
|
import { AffineSchemas } from '@blocksuite/blocks/models';
|
||||||
|
import type { DocProviderCreator } from '@blocksuite/store';
|
||||||
import { Schema, Workspace } from '@blocksuite/store';
|
import { Schema, Workspace } from '@blocksuite/store';
|
||||||
import { expect, test } from 'vitest';
|
import { getDefaultStore } from 'jotai/vanilla';
|
||||||
|
import { beforeEach, expect, test } from 'vitest';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
disablePassiveProviders,
|
disablePassiveProviders,
|
||||||
enablePassiveProviders,
|
enablePassiveProviders,
|
||||||
|
getActiveBlockSuiteWorkspaceAtom,
|
||||||
getWorkspace,
|
getWorkspace,
|
||||||
INTERNAL_BLOCKSUITE_HASH_MAP,
|
INTERNAL_BLOCKSUITE_HASH_MAP,
|
||||||
workspacePassiveEffectWeakMap,
|
workspacePassiveEffectWeakMap,
|
||||||
@@ -14,10 +17,42 @@ const schema = new Schema();
|
|||||||
|
|
||||||
schema.register(AffineSchemas);
|
schema.register(AffineSchemas);
|
||||||
|
|
||||||
|
const activeWorkspaceEnabled = new Set<string>();
|
||||||
|
const passiveWorkspaceEnabled = new Set<string>();
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
activeWorkspaceEnabled.clear();
|
||||||
|
});
|
||||||
|
|
||||||
const createWorkspace = (id: string) => {
|
const createWorkspace = (id: string) => {
|
||||||
|
const activeCreator: DocProviderCreator = () => ({
|
||||||
|
flavour: 'active',
|
||||||
|
active: true,
|
||||||
|
sync() {
|
||||||
|
activeWorkspaceEnabled.add(id);
|
||||||
|
},
|
||||||
|
get whenReady(): Promise<void> {
|
||||||
|
return Promise.resolve();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const passiveCreator: DocProviderCreator = () => ({
|
||||||
|
flavour: 'passive',
|
||||||
|
passive: true,
|
||||||
|
connect() {
|
||||||
|
passiveWorkspaceEnabled.add(id);
|
||||||
|
},
|
||||||
|
disconnect() {
|
||||||
|
passiveWorkspaceEnabled.delete(id);
|
||||||
|
},
|
||||||
|
get connected() {
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
return new Workspace({
|
return new Workspace({
|
||||||
id,
|
id,
|
||||||
schema,
|
schema,
|
||||||
|
providerCreators: [activeCreator, passiveCreator],
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -35,3 +70,21 @@ test('workspace passive provider should enable correctly', () => {
|
|||||||
disablePassiveProviders(getWorkspace('1'));
|
disablePassiveProviders(getWorkspace('1'));
|
||||||
expect(workspacePassiveEffectWeakMap.get(getWorkspace('1'))).toBe(undefined);
|
expect(workspacePassiveEffectWeakMap.get(getWorkspace('1'))).toBe(undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('workspace provider should initialize correctly', async () => {
|
||||||
|
INTERNAL_BLOCKSUITE_HASH_MAP.set('1', createWorkspace('1'));
|
||||||
|
{
|
||||||
|
enablePassiveProviders(getWorkspace('1'));
|
||||||
|
expect(activeWorkspaceEnabled.size).toBe(0);
|
||||||
|
expect(passiveWorkspaceEnabled.size).toBe(1);
|
||||||
|
disablePassiveProviders(getWorkspace('1'));
|
||||||
|
expect(activeWorkspaceEnabled.size).toBe(0);
|
||||||
|
expect(passiveWorkspaceEnabled.size).toBe(0);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const atom = getActiveBlockSuiteWorkspaceAtom('1');
|
||||||
|
await getDefaultStore().get(atom);
|
||||||
|
expect(activeWorkspaceEnabled.size).toBe(1);
|
||||||
|
expect(passiveWorkspaceEnabled.size).toBe(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user