This commit allows for parameters that does not require any arguments to be provided in function calls. It changes collection syntax where parameters are list of objects instead of primitive strings. A parameter has now 'name' and 'optional' properties. 'name' is required and used in same way as older strings as parameter definitions. 'Optional' property is optional, 'false' is the default behavior if undefined. It also adds additional validation to restrict parameter names to alphanumeric strings to have a clear syntax in expressions.
57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
import 'mocha';
|
|
import { expect } from 'chai';
|
|
|
|
export function testParameterName(action: (parameterName: string) => string) {
|
|
describe('name', () => {
|
|
describe('sets as expected', () => {
|
|
// arrange
|
|
const expectedValues = [
|
|
'lowercase',
|
|
'onlyLetters',
|
|
'l3tt3rsW1thNumb3rs',
|
|
];
|
|
for (const expected of expectedValues) {
|
|
it(expected, () => {
|
|
// act
|
|
const value = action(expected);
|
|
// assert
|
|
expect(value).to.equal(expected);
|
|
});
|
|
}
|
|
});
|
|
describe('throws if invalid', () => {
|
|
// arrange
|
|
const testCases = [
|
|
{
|
|
name: 'undefined',
|
|
value: undefined,
|
|
expectedError: 'undefined parameter name',
|
|
},
|
|
{
|
|
name: 'empty',
|
|
value: '',
|
|
expectedError: 'undefined parameter name',
|
|
},
|
|
{
|
|
name: 'has @',
|
|
value: 'b@d',
|
|
expectedError: 'parameter name must be alphanumeric but it was "b@d"',
|
|
},
|
|
{
|
|
name: 'has {',
|
|
value: 'b{a}d',
|
|
expectedError: 'parameter name must be alphanumeric but it was "b{a}d"',
|
|
},
|
|
];
|
|
for (const testCase of testCases) {
|
|
it(testCase.name, () => {
|
|
// act
|
|
const act = () => action(testCase.value);
|
|
// assert
|
|
expect(act).to.throw(testCase.expectedError);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
}
|