jhipster-rasha-core
Version:
JHipster's own domain language and core objects
82 lines (79 loc) • 2.13 kB
JavaScript
;
const expect = require('chai').expect,
fail = expect.fail,
JDLEnum = require('../../../lib/core/jdl_enum');
describe('JDLEnum', () => {
describe('::new', () => {
describe('when not passing any argument', () => {
it('fails', () => {
try {
new JDLEnum();
fail();
} catch (error) {
expect(error.name).to.eq('NullPointerException');
}
});
});
describe('when not passing a name', () => {
it('fails', () => {
try {
new JDLEnum({values: ['ABC'], comment: 'My enumeration.'});
fail();
} catch (error) {
expect(error.name).to.eq('NullPointerException');
}
});
});
describe('when passing arguments', () => {
it('uses them', () => {
new JDLEnum({name: 'MyEnum', values: ['ABC']});
});
});
});
describe('#addValue', () => {
const jdlEnum = new JDLEnum({name: 'MyEnum'});
describe('when not passing a value', () => {
it('fails', () => {
try {
jdlEnum.addValue(null);
fail();
} catch (error) {
expect(error.name).to.eq('NullPointerException');
}
});
});
describe('when passing a value', () => {
it('converts it to a string value', () => {
jdlEnum.addValue(42);
expect(jdlEnum.values.toString()).to.deep.eq("[42]");
});
});
});
describe('::isValid', () => {
describe('when validating an invalid object', () => {
describe('with no name', () => {
it('returns false', () => {
expect(JDLEnum.isValid({values: ['A', 'B']})).to.be.false;
});
});
});
});
describe('#toString', () => {
it('stringifies the enum', () => {
const values = ['FRENCH', 'ENGLISH', 'ICELANDIC'];
const jdlEnum = new JDLEnum({
name: 'Language',
values: values,
comment: 'The language enumeration.'
});
expect(jdlEnum.toString()).to.eq(
`/**
* ${jdlEnum.comment}
*/
enum ${jdlEnum.name} {
${values.join(',\n ')}
}`
);
});
});
});