81 lines
2.9 KiB
JavaScript
81 lines
2.9 KiB
JavaScript
import { getConfig, getPath } from '@edx/frontend-platform';
|
|
|
|
import { getFileSizeToClosestByte, createCorrectInternalRoute } from './utils';
|
|
|
|
jest.mock('@edx/frontend-platform', () => ({
|
|
getConfig: jest.fn(),
|
|
ensureConfig: jest.fn(),
|
|
getPath: jest.fn(),
|
|
}));
|
|
|
|
describe('FilesAndUploads utils', () => {
|
|
describe('getFileSizeToClosestByte', () => {
|
|
it('should return file size with B for bytes', () => {
|
|
const expectedSize = '219.00 B';
|
|
const actualSize = getFileSizeToClosestByte(219);
|
|
expect(expectedSize).toEqual(actualSize);
|
|
});
|
|
it('should return file size with KB for kilobytes', () => {
|
|
const expectedSize = '21.90 KB';
|
|
const actualSize = getFileSizeToClosestByte(21900);
|
|
expect(expectedSize).toEqual(actualSize);
|
|
});
|
|
it('should return file size with MB for megabytes', () => {
|
|
const expectedSize = '2.19 MB';
|
|
const actualSize = getFileSizeToClosestByte(2190000);
|
|
expect(expectedSize).toEqual(actualSize);
|
|
});
|
|
it('should return file size with GB for gigabytes', () => {
|
|
const expectedSize = '2.03 GB';
|
|
const actualSize = getFileSizeToClosestByte(2034190000);
|
|
expect(expectedSize).toEqual(actualSize);
|
|
});
|
|
it('should return file size with TB for terabytes', () => {
|
|
const expectedSize = '1.99 TB';
|
|
const actualSize = getFileSizeToClosestByte(1988034190000);
|
|
expect(expectedSize).toEqual(actualSize);
|
|
});
|
|
it('should return file size with TB for larger numbers', () => {
|
|
const expectedSize = '1234.56 TB';
|
|
const actualSize = getFileSizeToClosestByte(1234560000000000);
|
|
expect(expectedSize).toEqual(actualSize);
|
|
});
|
|
});
|
|
describe('createCorrectInternalRoute', () => {
|
|
beforeEach(() => {
|
|
getConfig.mockReset();
|
|
getPath.mockReset();
|
|
});
|
|
|
|
it('returns the correct internal route when checkPath is not prefixed with basePath', () => {
|
|
getConfig.mockReturnValue({ PUBLIC_PATH: 'example.com' });
|
|
getPath.mockReturnValue('/');
|
|
|
|
const checkPath = '/some/path';
|
|
const result = createCorrectInternalRoute(checkPath);
|
|
|
|
expect(result).toBe('/some/path');
|
|
});
|
|
|
|
it('returns the input checkPath when it is already prefixed with basePath', () => {
|
|
getConfig.mockReturnValue({ PUBLIC_PATH: 'example.com' });
|
|
getPath.mockReturnValue('/course-authoring');
|
|
|
|
const checkPath = '/course-authoring/some/path';
|
|
const result = createCorrectInternalRoute(checkPath);
|
|
|
|
expect(result).toBe('/course-authoring/some/path');
|
|
});
|
|
|
|
it('handles basePath ending with a slash correctly', () => {
|
|
getConfig.mockReturnValue({ PUBLIC_PATH: 'example.com/' });
|
|
getPath.mockReturnValue('/course-authoring/');
|
|
|
|
const checkPath = '/some/path';
|
|
const result = createCorrectInternalRoute(checkPath);
|
|
|
|
expect(result).toBe('/course-authoring/some/path');
|
|
});
|
|
});
|
|
});
|