generator-begcode
Version:
Spring Boot + Angular/React/Vue in one handy generator
37 lines (36 loc) • 2.32 kB
JavaScript
import { isClientField } from './filter-entities.js';
import { generateTestEntityId, generateTsTestEntityForFields, stringifyTsEntity } from './template-utils.js';
import getTypescriptKeyType from './types-utils.js';
export default function prepareEntity() { }
const SEED = 'post-prepare-client';
export async function preparePostEntityClientDerivedProperties(entity) {
let clientFields = entity.fields.filter(field => isClientField(field));
if (entity.builtInUser) {
clientFields = clientFields.filter(field => ['id', 'login'].includes(field.fieldName));
}
await entity.resetFakerSeed(`${SEED}-1`);
const options = { sep: `\n ` };
const fieldsWithPartialData = clientFields.filter(field => field.id || field.fieldValidationRequired || (!field.transient && entity.faker.datatype.boolean()));
entity.tsSampleWithPartialData = stringifyTsEntity(generateTsTestEntityForFields(fieldsWithPartialData), options);
await entity.resetFakerSeed(`${SEED}-2`);
const fieldsWithRequiredData = clientFields.filter(field => field.id || field.fieldValidationRequired);
entity.tsSampleWithRequiredData = stringifyTsEntity(generateTsTestEntityForFields(fieldsWithRequiredData), options);
await entity.resetFakerSeed(`${SEED}-3`);
const fieldsWithFullData = clientFields.filter(field => !field.transient);
entity.tsSampleWithFullData = stringifyTsEntity(generateTsTestEntityForFields(fieldsWithFullData), options);
if (entity.primaryKey) {
await entity.resetFakerSeed(`${SEED}-4`);
const fieldsWithNewData = clientFields.filter(field => !field.id && field.fieldValidationRequired);
entity.tsSampleWithNewData = stringifyTsEntity({
...generateTsTestEntityForFields(fieldsWithNewData),
[entity.primaryKey.name]: null,
}, options);
await entity.resetFakerSeed(`${SEED}-5`);
entity.tsKeyType = getTypescriptKeyType(entity.primaryKey.type);
entity.primaryKey.tsSampleValues = [generateTestEntityId(entity.primaryKey, 0), generateTestEntityId(entity.primaryKey, 1)];
entity.tsPrimaryKeySamples = [
stringifyTsEntity(generateTsTestEntityForFields(entity.primaryKey.fields)),
stringifyTsEntity(generateTsTestEntityForFields(entity.primaryKey.fields)),
];
}
}