You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.9 KiB
138 lines
4.9 KiB
import {getGhostPaths, downloadFile, downloadFromEndpoint} from '../../../src/utils/helpers';
|
|
|
|
describe('helpers utils', () => {
|
|
// Store original values
|
|
let originalLocation: Location;
|
|
|
|
beforeEach(() => {
|
|
// Store original values
|
|
originalLocation = window.location;
|
|
|
|
// Mock window.location
|
|
delete (window as any).location;
|
|
(window as any).location = {
|
|
pathname: '/ghost/settings/'
|
|
} as Location;
|
|
});
|
|
|
|
afterEach(() => {
|
|
// Restore original values
|
|
(window as any).location = originalLocation;
|
|
});
|
|
|
|
describe('getGhostPaths', () => {
|
|
it('returns correct paths for root installation', () => {
|
|
window.location.pathname = '/ghost/settings/';
|
|
const paths = getGhostPaths();
|
|
expect(paths).toEqual({
|
|
subdir: '',
|
|
adminRoot: '/ghost/',
|
|
assetRoot: '/ghost/assets/',
|
|
apiRoot: '/ghost/api/admin',
|
|
activityPubRoot: '/.ghost/activitypub'
|
|
});
|
|
});
|
|
|
|
it('returns correct paths for subdirectory installation', () => {
|
|
window.location.pathname = '/blog/ghost/settings/';
|
|
const paths = getGhostPaths();
|
|
expect(paths).toEqual({
|
|
subdir: '/blog',
|
|
adminRoot: '/blog/ghost/',
|
|
assetRoot: '/blog/ghost/assets/',
|
|
apiRoot: '/blog/ghost/api/admin',
|
|
activityPubRoot: '/blog/.ghost/activitypub'
|
|
});
|
|
});
|
|
|
|
it('returns correct paths for nested subdirectory', () => {
|
|
window.location.pathname = '/site/blog/ghost/settings/';
|
|
const paths = getGhostPaths();
|
|
expect(paths).toEqual({
|
|
subdir: '/site/blog',
|
|
adminRoot: '/site/blog/ghost/',
|
|
assetRoot: '/site/blog/ghost/assets/',
|
|
apiRoot: '/site/blog/ghost/api/admin',
|
|
activityPubRoot: '/site/blog/.ghost/activitypub'
|
|
});
|
|
});
|
|
|
|
it('handles trailing slashes correctly', () => {
|
|
window.location.pathname = '/blog/ghost/';
|
|
const paths = getGhostPaths();
|
|
expect(paths).toEqual({
|
|
subdir: '/blog',
|
|
adminRoot: '/blog/ghost/',
|
|
assetRoot: '/blog/ghost/assets/',
|
|
apiRoot: '/blog/ghost/api/admin',
|
|
activityPubRoot: '/blog/.ghost/activitypub'
|
|
});
|
|
});
|
|
|
|
it('handles paths without trailing slash', () => {
|
|
window.location.pathname = '/ghost/settings';
|
|
const paths = getGhostPaths();
|
|
expect(paths).toEqual({
|
|
subdir: '',
|
|
adminRoot: '/ghost/',
|
|
assetRoot: '/ghost/assets/',
|
|
apiRoot: '/ghost/api/admin',
|
|
activityPubRoot: '/.ghost/activitypub'
|
|
});
|
|
});
|
|
|
|
it('handles deep nested paths within ghost admin', () => {
|
|
window.location.pathname = '/blog/ghost/settings/general/users/';
|
|
const paths = getGhostPaths();
|
|
expect(paths).toEqual({
|
|
subdir: '/blog',
|
|
adminRoot: '/blog/ghost/',
|
|
assetRoot: '/blog/ghost/assets/',
|
|
apiRoot: '/blog/ghost/api/admin',
|
|
activityPubRoot: '/blog/.ghost/activitypub'
|
|
});
|
|
});
|
|
|
|
it('handles edge case with multiple ghost segments', () => {
|
|
window.location.pathname = '/ghost-blog/ghost/settings/';
|
|
const paths = getGhostPaths();
|
|
expect(paths).toEqual({
|
|
subdir: '/ghost-blog',
|
|
adminRoot: '/ghost-blog/ghost/',
|
|
assetRoot: '/ghost-blog/ghost/assets/',
|
|
apiRoot: '/ghost-blog/ghost/api/admin',
|
|
activityPubRoot: '/ghost-blog/.ghost/activitypub'
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('downloadFile', () => {
|
|
it('is a function that accepts a URL parameter', () => {
|
|
expect(typeof downloadFile).toBe('function');
|
|
expect(downloadFile.length).toBe(1);
|
|
});
|
|
|
|
it('does not throw when called with valid URL', () => {
|
|
expect(() => downloadFile('https://example.com/file.csv')).not.toThrow();
|
|
});
|
|
|
|
it('does not throw when called with empty string', () => {
|
|
expect(() => downloadFile('')).not.toThrow();
|
|
});
|
|
});
|
|
|
|
describe('downloadFromEndpoint', () => {
|
|
it('is a function that accepts a path parameter', () => {
|
|
expect(typeof downloadFromEndpoint).toBe('function');
|
|
expect(downloadFromEndpoint.length).toBe(1);
|
|
});
|
|
|
|
it('does not throw when called with valid path', () => {
|
|
expect(() => downloadFromEndpoint('/members/export')).not.toThrow();
|
|
});
|
|
|
|
it('does not throw when called with empty string', () => {
|
|
expect(() => downloadFromEndpoint('')).not.toThrow();
|
|
});
|
|
});
|
|
}); |