mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-11-02 05:51:30 +08:00
test(editor): ensure both toolbars have same items
This commit is contained in:
parent
fd029ac451
commit
598413b56d
31
src/public/app/widgets/type_widgets/ckeditor/config.spec.ts
Normal file
31
src/public/app/widgets/type_widgets/ckeditor/config.spec.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { buildClassicToolbar, buildFloatingToolbar } from "./config.js";
|
||||
|
||||
type ToolbarConfig = string | "|" | { items: ToolbarConfig[] };
|
||||
|
||||
describe("CKEditor config", () => {
|
||||
it("has same toolbar items for fixed and floating", () => {
|
||||
function traverseItems(config: ToolbarConfig): string[] {
|
||||
const result = [];
|
||||
if (typeof config === "object") {
|
||||
for (const item of config.items) {
|
||||
result.push(traverseItems(item));
|
||||
}
|
||||
} else if (config !== "|") {
|
||||
result.push(config);
|
||||
}
|
||||
return result.flat();
|
||||
}
|
||||
|
||||
const classicToolbarConfig = buildClassicToolbar(false);
|
||||
const classicToolbarItems = new Set(traverseItems(classicToolbarConfig.toolbar));
|
||||
|
||||
const floatingToolbarConfig = buildFloatingToolbar();
|
||||
const floatingToolbarItems = traverseItems(floatingToolbarConfig.toolbar);
|
||||
const floatingBlockToolbarItems = traverseItems({ items: floatingToolbarConfig.blockToolbar });
|
||||
const floatingToolbarAllItems = new Set([ ...floatingToolbarItems, ...floatingBlockToolbarItems ]);
|
||||
|
||||
expect([ ...classicToolbarItems ].toSorted())
|
||||
.toStrictEqual([...floatingToolbarAllItems ].toSorted());
|
||||
});
|
||||
});
|
||||
@ -110,7 +110,7 @@ export function buildToolbarConfig(isClassicToolbar: boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
function buildClassicToolbar(multilineToolbar: boolean) {
|
||||
export function buildClassicToolbar(multilineToolbar: boolean) {
|
||||
// For nested toolbars, refer to https://ckeditor.com/docs/ckeditor5/latest/getting-started/setup/toolbar.html#grouping-toolbar-items-in-dropdowns-nested-toolbars.
|
||||
return {
|
||||
toolbar: {
|
||||
@ -156,7 +156,7 @@ function buildClassicToolbar(multilineToolbar: boolean) {
|
||||
};
|
||||
}
|
||||
|
||||
function buildFloatingToolbar() {
|
||||
export function buildFloatingToolbar() {
|
||||
return {
|
||||
toolbar: {
|
||||
items: [
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user