mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-16 04:27:21 +00:00
bun run format
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import { describe, it, expect, beforeEach } from 'vitest';
|
||||
import { AppReduced, type AppType } from 'ui/client/utils/AppReduced';
|
||||
import type { BkndAdminOptions } from 'ui/client/BkndProvider';
|
||||
import { describe, it, expect, beforeEach } from "vitest";
|
||||
import { AppReduced, type AppType } from "ui/client/utils/AppReduced";
|
||||
import type { BkndAdminOptions } from "ui/client/BkndProvider";
|
||||
|
||||
// Import the normalizeAdminPath function for testing
|
||||
// Note: This assumes the function is exported or we need to test it indirectly through public methods
|
||||
|
||||
describe('AppReduced', () => {
|
||||
describe("AppReduced", () => {
|
||||
let mockAppJson: AppType;
|
||||
let appReduced: AppReduced;
|
||||
|
||||
@@ -13,219 +13,219 @@ describe('AppReduced', () => {
|
||||
mockAppJson = {
|
||||
data: {
|
||||
entities: {},
|
||||
relations: {}
|
||||
relations: {},
|
||||
},
|
||||
flows: {
|
||||
flows: {}
|
||||
flows: {},
|
||||
},
|
||||
auth: {}
|
||||
auth: {},
|
||||
} as AppType;
|
||||
});
|
||||
|
||||
describe('getSettingsPath', () => {
|
||||
it('should return settings path with admin_basepath', () => {
|
||||
describe("getSettingsPath", () => {
|
||||
it("should return settings path with admin_basepath", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getSettingsPath();
|
||||
|
||||
expect(result).toBe('~/admin/settings');
|
||||
|
||||
expect(result).toBe("~/admin/settings");
|
||||
});
|
||||
|
||||
it('should return settings path with empty admin_basepath', () => {
|
||||
it("should return settings path with empty admin_basepath", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getSettingsPath();
|
||||
|
||||
expect(result).toBe('~/settings');
|
||||
|
||||
expect(result).toBe("~/settings");
|
||||
});
|
||||
|
||||
it('should append additional path segments', () => {
|
||||
it("should append additional path segments", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getSettingsPath(['user', 'profile']);
|
||||
|
||||
expect(result).toBe('~/admin/settings/user/profile');
|
||||
const result = appReduced.getSettingsPath(["user", "profile"]);
|
||||
|
||||
expect(result).toBe("~/admin/settings/user/profile");
|
||||
});
|
||||
|
||||
it('should normalize multiple slashes', () => {
|
||||
it("should normalize multiple slashes", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '//admin//',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "//admin//",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getSettingsPath(['//user//']);
|
||||
|
||||
expect(result).toBe('~/admin/settings/user');
|
||||
const result = appReduced.getSettingsPath(["//user//"]);
|
||||
|
||||
expect(result).toBe("~/admin/settings/user");
|
||||
});
|
||||
|
||||
it('should handle admin_basepath without leading slash', () => {
|
||||
it("should handle admin_basepath without leading slash", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: 'admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getSettingsPath();
|
||||
|
||||
expect(result).toBe('~/admin/settings');
|
||||
|
||||
expect(result).toBe("~/admin/settings");
|
||||
});
|
||||
});
|
||||
|
||||
describe('getAbsolutePath', () => {
|
||||
it('should return absolute path with admin_basepath', () => {
|
||||
describe("getAbsolutePath", () => {
|
||||
it("should return absolute path with admin_basepath", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getAbsolutePath('dashboard');
|
||||
|
||||
expect(result).toBe('~/admin/dashboard');
|
||||
const result = appReduced.getAbsolutePath("dashboard");
|
||||
|
||||
expect(result).toBe("~/admin/dashboard");
|
||||
});
|
||||
|
||||
it('should return base path when no path provided', () => {
|
||||
it("should return base path when no path provided", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getAbsolutePath();
|
||||
|
||||
expect(result).toBe('~/admin');
|
||||
|
||||
expect(result).toBe("~/admin");
|
||||
});
|
||||
|
||||
it('should normalize paths correctly', () => {
|
||||
it("should normalize paths correctly", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '//admin//',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "//admin//",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getAbsolutePath('//dashboard//');
|
||||
|
||||
expect(result).toBe('~/admin/dashboard');
|
||||
const result = appReduced.getAbsolutePath("//dashboard//");
|
||||
|
||||
expect(result).toBe("~/admin/dashboard");
|
||||
});
|
||||
});
|
||||
|
||||
describe('options getter', () => {
|
||||
it('should return merged options with defaults', () => {
|
||||
describe("options getter", () => {
|
||||
it("should return merged options with defaults", () => {
|
||||
const customOptions: BkndAdminOptions = {
|
||||
admin_basepath: '/custom-admin',
|
||||
logo_return_path: '/custom-home'
|
||||
admin_basepath: "/custom-admin",
|
||||
logo_return_path: "/custom-home",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, customOptions);
|
||||
const options = appReduced.options;
|
||||
|
||||
|
||||
expect(options).toEqual({
|
||||
logo_return_path: '/custom-home',
|
||||
admin_basepath: '/custom-admin'
|
||||
logo_return_path: "/custom-home",
|
||||
admin_basepath: "/custom-admin",
|
||||
});
|
||||
});
|
||||
|
||||
it('should use default logo_return_path when not provided', () => {
|
||||
it("should use default logo_return_path when not provided", () => {
|
||||
const customOptions: BkndAdminOptions = {
|
||||
admin_basepath: '/admin'
|
||||
admin_basepath: "/admin",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, customOptions);
|
||||
const options = appReduced.options;
|
||||
|
||||
expect(options.logo_return_path).toBe('/');
|
||||
expect(options.admin_basepath).toBe('/admin');
|
||||
|
||||
expect(options.logo_return_path).toBe("/");
|
||||
expect(options.admin_basepath).toBe("/admin");
|
||||
});
|
||||
});
|
||||
|
||||
describe('path normalization behavior', () => {
|
||||
it('should normalize duplicate slashes in settings path', () => {
|
||||
describe("path normalization behavior", () => {
|
||||
it("should normalize duplicate slashes in settings path", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getSettingsPath(['//nested//path//']);
|
||||
|
||||
expect(result).toBe('~/admin/settings/nested/path');
|
||||
const result = appReduced.getSettingsPath(["//nested//path//"]);
|
||||
|
||||
expect(result).toBe("~/admin/settings/nested/path");
|
||||
});
|
||||
|
||||
it('should handle root path normalization', () => {
|
||||
it("should handle root path normalization", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getAbsolutePath();
|
||||
|
||||
|
||||
// The normalizeAdminPath function removes trailing slashes except for root "/"
|
||||
// When admin_basepath is "/", the result is "~/" which becomes "~" after normalization
|
||||
expect(result).toBe('~');
|
||||
expect(result).toBe("~");
|
||||
});
|
||||
|
||||
it('should preserve entity paths ending with slash', () => {
|
||||
it("should preserve entity paths ending with slash", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getAbsolutePath('entity/');
|
||||
|
||||
expect(result).toBe('~/admin/entity/');
|
||||
const result = appReduced.getAbsolutePath("entity/");
|
||||
|
||||
expect(result).toBe("~/admin/entity/");
|
||||
});
|
||||
|
||||
it('should remove trailing slashes from non-entity paths', () => {
|
||||
it("should remove trailing slashes from non-entity paths", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getAbsolutePath('dashboard/');
|
||||
|
||||
expect(result).toBe('~/admin/dashboard');
|
||||
const result = appReduced.getAbsolutePath("dashboard/");
|
||||
|
||||
expect(result).toBe("~/admin/dashboard");
|
||||
});
|
||||
});
|
||||
|
||||
describe('edge cases', () => {
|
||||
it('should handle undefined admin_basepath', () => {
|
||||
describe("edge cases", () => {
|
||||
it("should handle undefined admin_basepath", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
logo_return_path: '/'
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getSettingsPath();
|
||||
|
||||
|
||||
// When admin_basepath is undefined, it defaults to empty string
|
||||
expect(result).toBe('~/settings');
|
||||
expect(result).toBe("~/settings");
|
||||
});
|
||||
|
||||
it('should handle null path segments', () => {
|
||||
it("should handle null path segments", () => {
|
||||
const options: BkndAdminOptions = {
|
||||
admin_basepath: '/admin',
|
||||
logo_return_path: '/'
|
||||
admin_basepath: "/admin",
|
||||
logo_return_path: "/",
|
||||
};
|
||||
|
||||
|
||||
appReduced = new AppReduced(mockAppJson, options);
|
||||
const result = appReduced.getSettingsPath(['', 'valid', '']);
|
||||
|
||||
expect(result).toBe('~/admin/settings/valid');
|
||||
const result = appReduced.getSettingsPath(["", "valid", ""]);
|
||||
|
||||
expect(result).toBe("~/admin/settings/valid");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user