Add tests

This commit is contained in:
Rémi de Juvigny 2022-09-21 13:38:43 +02:00
parent cb10c9a81a
commit 1931224373
2 changed files with 57 additions and 4 deletions

View File

@ -438,7 +438,60 @@ describe('Attributes', () => {
});
});
// TODO custom field
describe('Custom field', () => {
test('No custom field', () => {
const attribute = {};
const modifiers = getAttributeModifiers(attribute);
expect(modifiers).toHaveLength(0);
});
test('Basic custom field', () => {
const attribute = {
type: 'customField',
customField: 'plugin::color-picker.color',
};
const modifiers = getAttributeModifiers(attribute);
expect(modifiers).toHaveLength(1);
expect(modifiers[0].kind).toBe(ts.SyntaxKind.TypeReference);
expect(modifiers[0].typeName.escapedText).toBe('CustomField');
expect(modifiers[0].typeArguments).toHaveLength(1);
expect(modifiers[0].typeArguments[0].kind).toBe(ts.SyntaxKind.StringLiteral);
expect(modifiers[0].typeArguments[0].text).toBe('plugin::color-picker.color');
});
test('Advanced custom field', () => {
const attribute = {
type: 'customField',
customField: 'plugin::color-picker.color',
options: {
format: 'hex',
},
};
const modifiers = getAttributeModifiers(attribute);
expect(modifiers).toHaveLength(1);
expect(modifiers[0].kind).toBe(ts.SyntaxKind.TypeReference);
expect(modifiers[0].typeName.escapedText).toBe('CustomField');
expect(modifiers[0].typeArguments).toHaveLength(2);
expect(modifiers[0].typeArguments[0].kind).toBe(ts.SyntaxKind.StringLiteral);
expect(modifiers[0].typeArguments[0].text).toBe('plugin::color-picker.color');
expect(modifiers[0].typeArguments[1].kind).toBe(ts.SyntaxKind.TypeLiteral);
expect(modifiers[0].typeArguments[1].members).toHaveLength(1);
expect(modifiers[0].typeArguments[1].members[0].kind).toBe(
ts.SyntaxKind.PropertyDeclaration
);
expect(modifiers[0].typeArguments[1].members[0].name.escapedText).toBe('format');
expect(modifiers[0].typeArguments[1].members[0].kind).toBe(
ts.SyntaxKind.PropertyDeclaration
);
expect(modifiers[0].typeArguments[1].members[0].type.kind).toBe(
ts.SyntaxKind.StringLiteral
);
expect(modifiers[0].typeArguments[1].members[0].type.text).toBe('hex');
});
});
describe('Plugin Options', () => {
test('No plugin options', () => {

View File

@ -75,14 +75,14 @@ const getAttributeModifiers = (attribute) => {
addImport('CustomField');
const customFieldUid = factory.createStringLiteral(attribute.customField);
const typeParams = [customFieldUid];
const typeArguments = [customFieldUid];
if (attribute.options) {
typeParams.push(toTypeLiteral(attribute.options));
typeArguments.push(toTypeLiteral(attribute.options));
}
modifiers.push(
factory.createTypeReferenceNode(factory.createIdentifier('CustomField'), typeParams)
factory.createTypeReferenceNode(factory.createIdentifier('CustomField'), typeArguments)
);
}