@cuba-platform/front-generator
Version:
CUBA Platform front-end clients generator
87 lines (85 loc) • 4.26 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const services_generation_1 = require("../../../../generators/sdk/services/services-generation");
const ts_helpers_1 = require("../../../../common/ts-helpers");
const method_params_type_1 = require("../../../../generators/sdk/services/method-params-type");
const assert = require("assert");
const test_commons_1 = require("../../../test-commons");
const servicesModel = require('../../../fixtures/service-model.json');
const expectedRestServices = '' +
`import { CubaApp, FetchOptions } from "@cuba-platform/rest";
import { Car } from "./entities/mpg$Car";
export type mpg_FavoriteService_addFavorite_params = {
carId: string;
notes: string;
} | {
car: Car;
notes: string;
} | {
favInfo: any;
};
export var restServices = {
mpg_FavoriteService: {
addFavorite: (cubaApp: CubaApp, fetchOpts?: FetchOptions) => (params: mpg_FavoriteService_addFavorite_params) => {
return cubaApp.invokeService("mpg_FavoriteService", "addFavorite", params, fetchOpts);
},
getFavorites: (cubaApp: CubaApp, fetchOpts?: FetchOptions) => () => {
return cubaApp.invokeService("mpg_FavoriteService", "getFavorites", {}, fetchOpts);
}
},
mpg_TestService: {
getTestInfo: (cubaApp: CubaApp, fetchOpts?: FetchOptions) => () => {
return cubaApp.invokeService("mpg_TestService", "getTestInfo", {}, fetchOpts);
}
}
};`;
describe('generate TS REST service', () => {
it('should generate rest service TS assignment from CUBA model', () => {
const restService = servicesModel[0];
const service = (0, services_generation_1.createService)(restService, (0, test_commons_1.modelCtx)());
const expected = '' +
`mpg_FavoriteService: {
addFavorite: (cubaApp: CubaApp, fetchOpts?: FetchOptions) => (params: mpg_FavoriteService_addFavorite_params) => {
return cubaApp.invokeService("mpg_FavoriteService", "addFavorite", params, fetchOpts);
},
getFavorites: (cubaApp: CubaApp, fetchOpts?: FetchOptions) => () => {
return cubaApp.invokeService("mpg_FavoriteService", "getFavorites", {}, fetchOpts);
}
}`;
const content = (0, ts_helpers_1.renderTSNodes)([service.node]);
(0, test_commons_1.assertContent)(content, expected);
});
it('should generate rest service methods param types', () => {
const restService = servicesModel[0];
const service = (0, services_generation_1.createService)(restService, (0, test_commons_1.modelCtx)());
const expected = '' +
`export type mpg_FavoriteService_addFavorite_params = {
carId: string;
notes: string;
} | {
car: Car;
notes: string;
} | {
favInfo: any;
};`;
const content = (0, ts_helpers_1.renderTSNodes)(service.methodParamsTypes);
(0, test_commons_1.assertContent)(content, expected);
});
it('should generate all rest services from CUBA model', () => {
const content = (0, services_generation_1.generateServices)(servicesModel, (0, test_commons_1.modelCtx)());
(0, test_commons_1.assertContent)(content, expectedRestServices);
});
it('should sort out duplicate rest services', () => {
const servicesModelWithDuplicates = [];
servicesModelWithDuplicates.push(servicesModel[0]);
servicesModelWithDuplicates.push(servicesModel[0]);
servicesModelWithDuplicates.push(servicesModel[1]);
const content = (0, services_generation_1.generateServices)(servicesModelWithDuplicates, (0, test_commons_1.modelCtx)());
(0, test_commons_1.assertContent)(content, expectedRestServices);
});
it('should collect overload methods for service', () => {
const methodWithOverloadsList = (0, method_params_type_1.collectMethods)(servicesModel[0].methods);
assert.strictEqual(3, methodWithOverloadsList[0].methods.length);
});
});
//# sourceMappingURL=services-generation.test.js.map