UNPKG

@cuba-platform/front-generator

Version:
87 lines (85 loc) 4.26 kB
"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