UNPKG

@interaktiv/mibuilder-core

Version:

Core libraries to interact with MiBuilder projects.

97 lines (75 loc) 3.95 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var resolveConfigPath = _interopRequireWildcard(require("./config/resolve-config-path")); var _mibuilderError = require("./mibuilder-error"); var _mibuilderProject = require("./mibuilder-project"); var _testSetup2 = require("./test-setup"); // Setup the test environment. const _testSetup = (0, _testSetup2.testSetup)(); describe('MiBuilderProject', () => { let projectJsonPath; beforeEach(async () => { projectJsonPath = await _testSetup.projectJsonPathRetriever(_testSetup.id); }); describe('json', () => { it('do not allows uppercase packaging aliases on write', async () => { const json = await _mibuilderProject.MiBuilderProjectJson.create({}); const writeJson = () => json.write({ packageAliases: { MyName: 'somePackage' } }); await expect(writeJson).toThrow(_mibuilderError.MiBuilderError); await expect(writeJson).toThrow('InvalidJsonCasing'); }); it('do not allows uppercase packaging aliases on read', async () => { _testSetup.setConfigMockContents('MiBuilderProjectJson', { contents: { packageAliases: { MyName: 'somePackage' } } }); expect.assertions(2); const createJson = () => _mibuilderProject.MiBuilderProjectJson.create({}); await expect(createJson()).rejects.toThrow(_mibuilderError.MiBuilderError); await expect(createJson()).rejects.toThrow('Die mibuilder-project.json Datei enhält nicht das korrekte Format'); }); }); describe('resolve', () => { it('with default project json path', async () => { const projectJsonConfigPath = `${projectJsonPath}/${_mibuilderProject.MiBuilderProjectJson.getFileName()}`; _testSetup.sandbox.spyOn(resolveConfigPath, 'resolveConfigPath').mockImplementation(() => projectJsonConfigPath); const project = await _mibuilderProject.MiBuilderProject.resolve(); expect(project.getProjectConfigPath()).toEqual(projectJsonConfigPath); const mibuilderProjectJson = await project.retrieveMiBuilderProjectJson(); expect(mibuilderProjectJson.getPath()).toEqual(projectJsonConfigPath); }); it('with default project json path throws with no mibuilder-project.json', async () => { _testSetup.sandbox.spyOn(resolveConfigPath, 'resolveConfigPath').mockImplementation(() => { throw new Error('InvalidProjectWorkspace'); }); expect.assertions(2); const resolve = () => _mibuilderProject.MiBuilderProject.resolve(); await expect(resolve()).rejects.toThrow(Error); await expect(resolve()).rejects.toThrow('InvalidProjectWorkspace'); }); it('with custom project json path', async () => { const projectJsonConfigPath = `${projectJsonPath}/${_mibuilderProject.MiBuilderProjectJson.getFileName()}`; _testSetup.sandbox.spyOn(resolveConfigPath, 'resolveConfigPath').mockImplementation(() => projectJsonConfigPath); const project = await _mibuilderProject.MiBuilderProject.resolve(projectJsonPath); expect(project.getProjectConfigPath()).toEqual(projectJsonConfigPath); const mibuilderProjectJson = await project.retrieveMiBuilderProjectJson(); expect(mibuilderProjectJson.getPath()).toEqual(projectJsonConfigPath); }); it('with custom project json path throws with no mibuilder-project.json', async () => { _testSetup.sandbox.spyOn(resolveConfigPath, 'resolveConfigPath').mockImplementation(() => { throw new _mibuilderError.MiBuilderError('InvalidProjectWorkspace'); }); expect.assertions(2); const resolve = () => _mibuilderProject.MiBuilderProject.resolve(projectJsonPath); await expect(resolve()).rejects.toThrow(_mibuilderError.MiBuilderError); await expect(resolve()).rejects.toThrow('InvalidProjectWorkspace'); }); }); });