gen-jhipster
Version:
VHipster - Spring Boot + Angular/React/Vue in one handy generator
57 lines (56 loc) • 3.09 kB
JavaScript
/**
* Copyright 2013-2026 the original author or authors from the JHipster project.
*
* This file is part of the JHipster project, see https://www.jhipster.tech/
* for more information.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { mutateData } from "../../../lib/utils/object.js";
import { isClientField } from "./filter-entities.js";
import { generateTestEntityId, generateTsTestEntityForFields, stringifyTsEntity } from "./template-utils.js";
import getTypescriptKeyType from "./types-utils.js";
const SEED = 'post-prepare-client';
export function preparePostEntityClientDerivedProperties(entity) {
let clientFields = entity.fields.filter(field => isClientField(field));
if (entity.builtInUser) {
clientFields = clientFields.filter(field => ['id', 'login'].includes(field.fieldName));
}
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);
entity.resetFakerSeed(`${SEED}-2`);
const fieldsWithRequiredData = clientFields.filter(field => field.id || field.fieldValidationRequired);
entity.tsSampleWithRequiredData = stringifyTsEntity(generateTsTestEntityForFields(fieldsWithRequiredData), options);
entity.resetFakerSeed(`${SEED}-3`);
const fieldsWithFullData = clientFields.filter(field => !field.transient);
entity.tsSampleWithFullData = stringifyTsEntity(generateTsTestEntityForFields(fieldsWithFullData), options);
if (entity.primaryKey) {
entity.resetFakerSeed(`${SEED}-4`);
const fieldsWithNewData = clientFields.filter(field => !field.id && field.fieldValidationRequired);
entity.tsSampleWithNewData = stringifyTsEntity({
...generateTsTestEntityForFields(fieldsWithNewData),
[entity.primaryKey.name]: null,
}, options);
entity.resetFakerSeed(`${SEED}-5`);
mutateData(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)),
];
}
}