Files
frontend-app-authoring/src/utils.test.js

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');
});
});
});