snapshot of https://github.com/dream-num/univer.git (dev, 2026-09-16; blobs > 131072B omitted)
Some checks failed
📦 Build / build (push) Has been cancelled
🧪 CI Test / test shard (1/4) (push) Has been cancelled
🧪 CI Test / test shard (2/4) (push) Has been cancelled
🧪 CI Test / test shard (3/4) (push) Has been cancelled
🧪 CI Test / test shard (4/4) (push) Has been cancelled
🧪 CI Test / test (push) Has been cancelled
🧪 CI Test / eslint (push) Has been cancelled
🧪 CI Test / typecheck (push) Has been cancelled
🔫 Sync to Pro / dispatch-sync (push) Has been cancelled
🔮 Sync Mirror / sync (push) Has been cancelled
Some checks failed
📦 Build / build (push) Has been cancelled
🧪 CI Test / test shard (1/4) (push) Has been cancelled
🧪 CI Test / test shard (2/4) (push) Has been cancelled
🧪 CI Test / test shard (3/4) (push) Has been cancelled
🧪 CI Test / test shard (4/4) (push) Has been cancelled
🧪 CI Test / test (push) Has been cancelled
🧪 CI Test / eslint (push) Has been cancelled
🧪 CI Test / typecheck (push) Has been cancelled
🔫 Sync to Pro / dispatch-sync (push) Has been cancelled
🔮 Sync Mirror / sync (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
/**
|
||||
* Copyright 2023-present DreamNum Co., Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import type { Dependency, IWorkbookData, UnitModel } from '@univerjs/core';
|
||||
import {
|
||||
ILogService,
|
||||
Inject,
|
||||
Injector,
|
||||
IUniverInstanceService,
|
||||
LocaleService,
|
||||
LocaleType,
|
||||
LogLevel,
|
||||
Plugin,
|
||||
set,
|
||||
ThemeService,
|
||||
Univer,
|
||||
UniverInstanceType,
|
||||
} from '@univerjs/core';
|
||||
import { FUniver } from '@univerjs/core/facade';
|
||||
import { UniverDataValidationPlugin } from '@univerjs/data-validation';
|
||||
import {
|
||||
ActiveDirtyManagerService,
|
||||
DefinedNamesService,
|
||||
FormulaDataModel,
|
||||
IActiveDirtyManagerService,
|
||||
IDefinedNamesService,
|
||||
ISheetRowFilteredService,
|
||||
LexerTreeBuilder,
|
||||
RegisterOtherFormulaService,
|
||||
SheetRowFilteredService,
|
||||
} from '@univerjs/engine-formula';
|
||||
import {
|
||||
RefRangeService,
|
||||
SheetInterceptorService,
|
||||
SheetSkeletonService,
|
||||
SheetsSelectionsService,
|
||||
} from '@univerjs/sheets';
|
||||
import {
|
||||
DataValidationCacheService,
|
||||
DataValidationCustomFormulaService,
|
||||
DataValidationFormulaService,
|
||||
DataValidationListCacheService,
|
||||
SheetDataValidationModel,
|
||||
SheetsDataValidationValidatorService,
|
||||
} from '@univerjs/sheets-data-validation';
|
||||
import enUS from '@univerjs/sheets/locale/en-US';
|
||||
import zhCN from '@univerjs/sheets/locale/zh-CN';
|
||||
import '@univerjs/sheets/facade';
|
||||
import '@univerjs/sheets-data-validation/facade';
|
||||
|
||||
function getTestWorkbookDataDemo(): IWorkbookData {
|
||||
return {
|
||||
id: 'test',
|
||||
appVersion: '3.0.0-alpha',
|
||||
sheets: {
|
||||
sheet1: {
|
||||
id: 'sheet1',
|
||||
name: 'sheet1',
|
||||
cellData: {
|
||||
0: {
|
||||
0: {
|
||||
v: 1,
|
||||
},
|
||||
},
|
||||
1: {
|
||||
0: {
|
||||
v: 2,
|
||||
},
|
||||
},
|
||||
2: {
|
||||
0: {
|
||||
v: 3,
|
||||
},
|
||||
},
|
||||
3: {
|
||||
0: {
|
||||
v: 4,
|
||||
},
|
||||
},
|
||||
},
|
||||
rowCount: 100,
|
||||
columnCount: 100,
|
||||
},
|
||||
},
|
||||
locale: LocaleType.ZH_CN,
|
||||
name: '',
|
||||
sheetOrder: [],
|
||||
styles: {},
|
||||
};
|
||||
}
|
||||
|
||||
export interface ITestBed {
|
||||
univer: Univer;
|
||||
get: Injector['get'];
|
||||
sheet: UnitModel<IWorkbookData>;
|
||||
univerAPI: FUniver;
|
||||
injector: Injector;
|
||||
}
|
||||
|
||||
export function createWorksheetTestBed(workbookData?: IWorkbookData, dependencies?: Dependency[]): ITestBed {
|
||||
const univer = new Univer();
|
||||
const injector = univer.__getInjector();
|
||||
|
||||
class TestPlugin extends Plugin {
|
||||
static override pluginName = 'test-plugin';
|
||||
static override type = UniverInstanceType.UNIVER_SHEET;
|
||||
|
||||
constructor(
|
||||
_config: undefined,
|
||||
@Inject(Injector) override readonly _injector: Injector
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
override onStarting(): void {
|
||||
const injector = this._injector;
|
||||
injector.add([SheetsSelectionsService]);
|
||||
injector.add([SheetInterceptorService]);
|
||||
injector.add([SheetSkeletonService]);
|
||||
injector.add([FormulaDataModel]);
|
||||
injector.add([LexerTreeBuilder]);
|
||||
injector.add([RefRangeService]);
|
||||
injector.add([IDefinedNamesService, { useClass: DefinedNamesService }]);
|
||||
|
||||
// register feature modules
|
||||
([
|
||||
// data validation
|
||||
[DataValidationCacheService],
|
||||
[DataValidationFormulaService],
|
||||
[DataValidationListCacheService],
|
||||
[DataValidationCustomFormulaService],
|
||||
[RegisterOtherFormulaService],
|
||||
[IActiveDirtyManagerService, { useClass: ActiveDirtyManagerService }],
|
||||
[ISheetRowFilteredService, { useClass: SheetRowFilteredService }],
|
||||
[SheetsDataValidationValidatorService],
|
||||
[SheetDataValidationModel],
|
||||
] as Dependency[]).forEach((d) => {
|
||||
injector.add(d);
|
||||
});
|
||||
|
||||
dependencies?.forEach((d) => injector.add(d));
|
||||
}
|
||||
|
||||
override onReady(): void {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// load i18n
|
||||
injector.get(LocaleService).load({ zhCN, enUS });
|
||||
|
||||
// load theme service
|
||||
const themeService = injector.get(ThemeService);
|
||||
const theme = themeService.getCurrentTheme();
|
||||
const newTheme = set(theme, 'gray.1000', '#35322b');
|
||||
themeService.setTheme(newTheme);
|
||||
|
||||
// register builtin plugins
|
||||
// note that UI plugins are not registered here, because the unit test environment does not have a UI
|
||||
univer.registerPlugin(TestPlugin);
|
||||
univer.registerPlugin(UniverDataValidationPlugin);
|
||||
|
||||
const sheet = univer.createUnit<IWorkbookData, UnitModel<IWorkbookData>>(UniverInstanceType.UNIVER_SHEET, workbookData || getTestWorkbookDataDemo());
|
||||
const univerInstanceService = injector.get(IUniverInstanceService);
|
||||
univerInstanceService.focusUnit('test');
|
||||
|
||||
// set log level
|
||||
const logService = injector.get(ILogService);
|
||||
logService.setLogLevel(LogLevel.SILENT); // NOTE: change this to `LogLevel.VERBOSE` to debug tests via logs
|
||||
|
||||
const univerAPI = FUniver.newAPI(injector);
|
||||
|
||||
return {
|
||||
univer,
|
||||
get: injector.get.bind(injector),
|
||||
sheet,
|
||||
univerAPI,
|
||||
injector,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user