@interaktiv/mibuilder-core
Version:
Core libraries to interact with MiBuilder projects.
97 lines (75 loc) • 3.95 kB
JavaScript
;
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');
});
});
});