refactor to read more from package.json

This commit is contained in:
undergroundwires
2020-09-22 20:41:12 +01:00
parent 19a092dd31
commit 784a67afff
30 changed files with 374 additions and 158 deletions

View File

@@ -1,8 +1,10 @@
import { ScriptStub } from './../stubs/ScriptStub';
import { CategoryStub } from './../stubs/CategoryStub';
import { Application } from './../../../src/domain/Application';
import { Application } from '@/domain/Application';
import 'mocha';
import { expect } from 'chai';
import { ProjectInformation } from '@/domain/ProjectInformation';
import { IProjectInformation } from '@/domain/IProjectInformation';
describe('Application', () => {
it('getRecommendedScripts returns as expected', () => {
@@ -11,53 +13,56 @@ describe('Application', () => {
new ScriptStub('S3').withIsRecommended(true),
new ScriptStub('S4').withIsRecommended(true),
];
const sut = new Application('name', 'repo', '0.1.0', [
const sut = new Application(createInformation(), [
new CategoryStub(3).withScripts(expected[0], new ScriptStub('S1').withIsRecommended(false)),
new CategoryStub(2).withScripts(expected[1], new ScriptStub('S2').withIsRecommended(false)),
]);
// act
const actual = sut.getRecommendedScripts();
// assert
expect(expected[0]).to.deep.equal(actual[0]);
expect(expected[1]).to.deep.equal(actual[1]);
});
it('cannot construct without categories', () => {
// arrange
const categories = [];
// act
function construct() { return new Application('name', 'repo', '0.1.0', categories); }
// assert
expect(construct).to.throw('Application must consist of at least one category');
});
it('cannot construct without scripts', () => {
// arrange
const categories = [
new CategoryStub(3),
new CategoryStub(2),
];
// act
function construct() { return new Application('name', 'repo', '0.1.0', categories); }
// assert
expect(construct).to.throw('Application must consist of at least one script');
});
it('cannot construct without any recommended scripts', () => {
// arrange
const categories = [
new CategoryStub(3).withScripts(new ScriptStub('S1').withIsRecommended(false)),
new CategoryStub(2).withScripts(new ScriptStub('S2').withIsRecommended(false)),
];
// act
function construct() { return new Application('name', 'repo', '0.1.0', categories); }
// assert
expect(construct).to.throw('Application must consist of at least one recommended script');
describe('parameter validation', () => {
it('cannot construct without categories', () => {
// arrange
const categories = [];
// act
function construct() { return new Application(createInformation(), categories); }
// assert
expect(construct).to.throw('Application must consist of at least one category');
});
it('cannot construct without scripts', () => {
// arrange
const categories = [
new CategoryStub(3),
new CategoryStub(2),
];
// act
function construct() { return new Application(createInformation(), categories); }
// assert
expect(construct).to.throw('Application must consist of at least one script');
});
it('cannot construct without any recommended scripts', () => {
// arrange
const categories = [
new CategoryStub(3).withScripts(new ScriptStub('S1').withIsRecommended(false)),
new CategoryStub(2).withScripts(new ScriptStub('S2').withIsRecommended(false)),
];
// act
function construct() { return new Application(createInformation(), categories); }
// assert
expect(construct).to.throw('Application must consist of at least one recommended script');
});
it('cannot construct without information', () => {
// arrange
const categories = [new CategoryStub(1).withScripts(new ScriptStub('S1').withIsRecommended(true))];
const information = undefined;
// act
function construct() { return new Application(information, categories); }
// assert
expect(construct).to.throw('info is undefined');
});
});
it('totalScripts counts right', () => {
// arrange
@@ -67,9 +72,9 @@ describe('Application', () => {
new CategoryStub(3).withCategories(new CategoryStub(4).withScripts(new ScriptStub('S4'))),
];
// act
const application = new Application('name', 'repo', '0.1.0', categories);
const sut = new Application(createInformation(), categories);
// assert
expect(application.totalScripts).to.equal(4);
expect(sut.totalScripts).to.equal(4);
});
it('totalCategories counts right', () => {
// arrange
@@ -79,8 +84,22 @@ describe('Application', () => {
new CategoryStub(3).withCategories(new CategoryStub(4).withScripts(new ScriptStub('S4'))),
];
// act
const application = new Application('name', 'repo', '0.1.0', categories);
const sut = new Application(createInformation(), categories);
// assert
expect(application.totalCategories).to.equal(4);
expect(sut.totalCategories).to.equal(4);
});
it('sets information as expected', () => {
// arrange
const expected = createInformation();
// act
const sut = new Application(
expected,
[new CategoryStub(1).withScripts(new ScriptStub('S1').withIsRecommended(true))]);
// assert
expect(sut.info).to.deep.equal(expected);
});
});
function createInformation(): IProjectInformation {
return new ProjectInformation('name', 'repo', '0.1.0', 'homepage');
}