mirror of
https://github.com/zadam/trilium.git
synced 2025-11-10 00:19:04 +01: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.
|
// For nested toolbars, refer to https://ckeditor.com/docs/ckeditor5/latest/getting-started/setup/toolbar.html#grouping-toolbar-items-in-dropdowns-nested-toolbars.
|
||||||
return {
|
return {
|
||||||
toolbar: {
|
toolbar: {
|
||||||
@ -156,7 +156,7 @@ function buildClassicToolbar(multilineToolbar: boolean) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildFloatingToolbar() {
|
export function buildFloatingToolbar() {
|
||||||
return {
|
return {
|
||||||
toolbar: {
|
toolbar: {
|
||||||
items: [
|
items: [
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user