1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-12 04:37:13 +01:00
metamask-extension/app/scripts/platforms/extension.test.js

104 lines
3.2 KiB
JavaScript
Raw Normal View History

import browser from 'webextension-polyfill';
import ExtensionPlatform from './extension';
jest.mock('webextension-polyfill', () => {
return {
runtime: {
getManifest: jest.fn(),
},
};
});
describe('extension platform', () => {
beforeEach(() => {
// TODO: Delete this an enable 'resetMocks' in `jest.config.js` instead
jest.resetAllMocks();
});
describe('getVersion', () => {
it('should return non-prerelease version', () => {
browser.runtime.getManifest.mockReturnValue({ version: '1.2.3' });
const extensionPlatform = new ExtensionPlatform();
const version = extensionPlatform.getVersion();
expect(version).toBe('1.2.3');
});
it('should return SemVer-formatted version for Chrome style manifest of prerelease', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3.0',
version_name: '1.2.3-beta.0',
});
const extensionPlatform = new ExtensionPlatform();
const version = extensionPlatform.getVersion();
expect(version).toBe('1.2.3-beta.0');
});
it('should return SemVer-formatted version for Firefox style manifest of prerelease', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3beta0',
});
const extensionPlatform = new ExtensionPlatform();
const version = extensionPlatform.getVersion();
expect(version).toBe('1.2.3-beta.0');
});
it('should throw error if build version is missing from Chrome style prerelease manifest', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3',
version_name: '1.2.3-beta.0',
});
const extensionPlatform = new ExtensionPlatform();
expect(() => extensionPlatform.getVersion()).toThrow(
'Version missing build number:',
);
});
it('should throw error if version name is missing from Chrome style prerelease manifest', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3.0',
});
const extensionPlatform = new ExtensionPlatform();
expect(() => extensionPlatform.getVersion()).toThrow('Invalid version:');
});
it('should throw error if version includes four parts in a Firefox style manifest', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3.4',
});
const extensionPlatform = new ExtensionPlatform();
expect(() => extensionPlatform.getVersion()).toThrow('Invalid version:');
});
it('should throw error if build version is missing from Firefox style prerelease manifest', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3beta',
});
const extensionPlatform = new ExtensionPlatform();
expect(() => extensionPlatform.getVersion()).toThrow(
'Version contains invalid prerelease:',
);
});
it('should throw error if patch is missing from Firefox style prerelease manifest', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.beta0',
});
const extensionPlatform = new ExtensionPlatform();
expect(() => extensionPlatform.getVersion()).toThrow(
'Version contains invalid prerelease:',
);
});
});
});