17c804472Sopenharmony_ci/*
27c804472Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
47c804472Sopenharmony_ci * you may not use this file except in compliance with the License.
57c804472Sopenharmony_ci * You may obtain a copy of the License at
67c804472Sopenharmony_ci *
77c804472Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
87c804472Sopenharmony_ci *
97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
127c804472Sopenharmony_ci * See the License for the specific language governing permissions and
137c804472Sopenharmony_ci * limitations under the License.
147c804472Sopenharmony_ci */
157c804472Sopenharmony_ci
167c804472Sopenharmony_ciimport fs from 'fs';
177c804472Sopenharmony_ciimport path from 'path';
187c804472Sopenharmony_ciimport { describe, expect, test } from '@jest/globals';
197c804472Sopenharmony_ciimport { createSourceFile, ScriptTarget } from 'typescript';
207c804472Sopenharmony_ciimport { generateModuleDeclaration } from '../generate/generateModuleDeclaration';
217c804472Sopenharmony_ci
227c804472Sopenharmony_ciconst filePath = path.join(__dirname, './api/@ohos.ability.ability.d.ts');
237c804472Sopenharmony_ciconst code = fs.readFileSync(filePath);
247c804472Sopenharmony_ciconst sourceFile = createSourceFile(filePath, code.toString(), ScriptTarget.Latest);
257c804472Sopenharmony_ci
267c804472Sopenharmony_cidescribe('generateModuleDeclaration.ts file test', () => {
277c804472Sopenharmony_ci  test('Test the generateModuleDeclaration function', () => {
287c804472Sopenharmony_ci    const moduleEntity = {
297c804472Sopenharmony_ci      typeAliasDeclarations: [
307c804472Sopenharmony_ci        {
317c804472Sopenharmony_ci          typeAliasName: 'DataAbilityHelper',
327c804472Sopenharmony_ci          typeAliasTypeKind: 173,
337c804472Sopenharmony_ci          typeAliasTypeElements: [
347c804472Sopenharmony_ci            {
357c804472Sopenharmony_ci              typeName: '_DataAbilityHelper',
367c804472Sopenharmony_ci              typeKind: 78
377c804472Sopenharmony_ci            }
387c804472Sopenharmony_ci          ],
397c804472Sopenharmony_ci          modifiers: [92]
407c804472Sopenharmony_ci        },
417c804472Sopenharmony_ci        {
427c804472Sopenharmony_ci          typeAliasName: 'PacMap',
437c804472Sopenharmony_ci          typeAliasTypeKind: 173,
447c804472Sopenharmony_ci          typeAliasTypeElements: [
457c804472Sopenharmony_ci            {
467c804472Sopenharmony_ci              typeName: '_PacMap',
477c804472Sopenharmony_ci              typeKind: 78
487c804472Sopenharmony_ci            }
497c804472Sopenharmony_ci          ],
507c804472Sopenharmony_ci          modifiers: [92]
517c804472Sopenharmony_ci        },
527c804472Sopenharmony_ci        {
537c804472Sopenharmony_ci          typeAliasName: 'DataAbilityOperation',
547c804472Sopenharmony_ci          typeAliasTypeKind: 173,
557c804472Sopenharmony_ci          typeAliasTypeElements: [
567c804472Sopenharmony_ci            {
577c804472Sopenharmony_ci              typeName: '_DataAbilityOperation',
587c804472Sopenharmony_ci              typeKind: 78
597c804472Sopenharmony_ci            }
607c804472Sopenharmony_ci          ],
617c804472Sopenharmony_ci          modifiers: [92]
627c804472Sopenharmony_ci        },
637c804472Sopenharmony_ci        {
647c804472Sopenharmony_ci          typeAliasName: 'DataAbilityResult',
657c804472Sopenharmony_ci          typeAliasTypeKind: 173,
667c804472Sopenharmony_ci          typeAliasTypeElements: [
677c804472Sopenharmony_ci            {
687c804472Sopenharmony_ci              typeName: '_DataAbilityResult',
697c804472Sopenharmony_ci              typeKind: 78
707c804472Sopenharmony_ci            }
717c804472Sopenharmony_ci          ],
727c804472Sopenharmony_ci          modifiers: [92]
737c804472Sopenharmony_ci        },
747c804472Sopenharmony_ci        {
757c804472Sopenharmony_ci          typeAliasName: 'AbilityResult',
767c804472Sopenharmony_ci          typeAliasTypeKind: 173,
777c804472Sopenharmony_ci          typeAliasTypeElements: [
787c804472Sopenharmony_ci            {
797c804472Sopenharmony_ci              typeName: '_AbilityResult',
807c804472Sopenharmony_ci              typeKind: 78
817c804472Sopenharmony_ci            }
827c804472Sopenharmony_ci          ],
837c804472Sopenharmony_ci          modifiers: [92]
847c804472Sopenharmony_ci        },
857c804472Sopenharmony_ci        {
867c804472Sopenharmony_ci          typeAliasName: 'ConnectOptions',
877c804472Sopenharmony_ci          typeAliasTypeKind: 173,
887c804472Sopenharmony_ci          typeAliasTypeElements: [
897c804472Sopenharmony_ci            {
907c804472Sopenharmony_ci              typeName: '_ConnectOptions',
917c804472Sopenharmony_ci              typeKind: 78
927c804472Sopenharmony_ci            }
937c804472Sopenharmony_ci          ],
947c804472Sopenharmony_ci          modifiers: [92]
957c804472Sopenharmony_ci        },
967c804472Sopenharmony_ci        {
977c804472Sopenharmony_ci          typeAliasName: 'StartAbilityParameter',
987c804472Sopenharmony_ci          typeAliasTypeKind: 173,
997c804472Sopenharmony_ci          typeAliasTypeElements: [
1007c804472Sopenharmony_ci            {
1017c804472Sopenharmony_ci              typeName: '_StartAbilityParameter',
1027c804472Sopenharmony_ci              typeKind: 78
1037c804472Sopenharmony_ci            }
1047c804472Sopenharmony_ci          ],
1057c804472Sopenharmony_ci          modifiers: [92]
1067c804472Sopenharmony_ci        }
1077c804472Sopenharmony_ci      ],
1087c804472Sopenharmony_ci      classDeclarations: [],
1097c804472Sopenharmony_ci      interfaceDeclarations: [],
1107c804472Sopenharmony_ci      functionDeclarations: new Map(),
1117c804472Sopenharmony_ci      enumDeclarations: [],
1127c804472Sopenharmony_ci      moduleDeclarations: [],
1137c804472Sopenharmony_ci      variableStatements: [],
1147c804472Sopenharmony_ci      moduleImportEquaqls: [],
1157c804472Sopenharmony_ci      exportDeclarations: [],
1167c804472Sopenharmony_ci      exportModifiers: [133],
1177c804472Sopenharmony_ci      moduleName: 'ability'
1187c804472Sopenharmony_ci    };
1197c804472Sopenharmony_ci    const filename = 'ohos_ability_ability';
1207c804472Sopenharmony_ci    const mockApi = 'import { DataAbilityHelper as _DataAbilityHelper } from \'./ability/dataAbilityHelper\''
1217c804472Sopenharmony_ci      + 'import { PacMap as _PacMap } from \'./ability/dataAbilityHelper\''
1227c804472Sopenharmony_ci      + 'import { DataAbilityOperation as _DataAbilityOperation } from \'./ability/dataAbilityOperation\''
1237c804472Sopenharmony_ci      + 'import { DataAbilityResult as _DataAbilityResult } from \'./ability/dataAbilityResult\''
1247c804472Sopenharmony_ci      + 'import { AbilityResult as _AbilityResult } from \'./ability/abilityResult\''
1257c804472Sopenharmony_ci      + 'import { ConnectOptions as _ConnectOptions } from \'./ability/connectOptions\''
1267c804472Sopenharmony_ci      + 'import { StartAbilityParameter as _StartAbilityParameter } from \'./ability/startAbilityParameter\'';
1277c804472Sopenharmony_ci    const extraImport = [];
1287c804472Sopenharmony_ci    const importDeclarations = [
1297c804472Sopenharmony_ci      {
1307c804472Sopenharmony_ci        importPath: './ability/dataAbilityHelper',
1317c804472Sopenharmony_ci        importElements: '{ DataAbilityHelper as _DataAbilityHelper }'
1327c804472Sopenharmony_ci      },
1337c804472Sopenharmony_ci      {
1347c804472Sopenharmony_ci        importPath: './ability/dataAbilityHelper',
1357c804472Sopenharmony_ci        importElements: '{ PacMap as _PacMap }'
1367c804472Sopenharmony_ci      },
1377c804472Sopenharmony_ci      {
1387c804472Sopenharmony_ci        importPath: './ability/dataAbilityOperation',
1397c804472Sopenharmony_ci        importElements: '{ DataAbilityOperation as _DataAbilityOperation }'
1407c804472Sopenharmony_ci      },
1417c804472Sopenharmony_ci      {
1427c804472Sopenharmony_ci        importPath: './ability/dataAbilityResult',
1437c804472Sopenharmony_ci        importElements: '{ DataAbilityResult as _DataAbilityResult }'
1447c804472Sopenharmony_ci      },
1457c804472Sopenharmony_ci      {
1467c804472Sopenharmony_ci        importPath: './ability/abilityResult',
1477c804472Sopenharmony_ci        importElements: '{ AbilityResult as _AbilityResult }'
1487c804472Sopenharmony_ci      },
1497c804472Sopenharmony_ci      {
1507c804472Sopenharmony_ci        importPath: './ability/connectOptions',
1517c804472Sopenharmony_ci        importElements: '{ ConnectOptions as _ConnectOptions }'
1527c804472Sopenharmony_ci      },
1537c804472Sopenharmony_ci      {
1547c804472Sopenharmony_ci        importPath: './ability/startAbilityParameter',
1557c804472Sopenharmony_ci        importElements: '{ StartAbilityParameter as _StartAbilityParameter }'
1567c804472Sopenharmony_ci      }
1577c804472Sopenharmony_ci    ];
1587c804472Sopenharmony_ci    const data = 'export function mockAbility() {\n\tconst ability = {\n\n\n\tDataAbilityHelper: DataAbilityHelper,\n'
1597c804472Sopenharmony_ci      + 'PacMap: PacMap,\nDataAbilityOperation: DataAbilityOperation,\nDataAbilityResult: DataAbilityResult,\n'
1607c804472Sopenharmony_ci      + 'AbilityResult: AbilityResult,\nConnectOptions: ConnectOptions,\nStartAbilityParameter: StartAbilityParameter,\n\t'
1617c804472Sopenharmony_ci      + '};\n\treturn ability;}\nconst DataAbilityHelper = _DataAbilityHelper;\nconst PacMap = _PacMap;\n'
1627c804472Sopenharmony_ci      + 'const DataAbilityOperation = _DataAbilityOperation;\nconst DataAbilityResult = _DataAbilityResult;\n'
1637c804472Sopenharmony_ci      + 'const AbilityResult = _AbilityResult;\nconst ConnectOptions = _ConnectOptions;\n'
1647c804472Sopenharmony_ci      + 'const StartAbilityParameter = _StartAbilityParameter;\n';
1657c804472Sopenharmony_ci    const result = generateModuleDeclaration(
1667c804472Sopenharmony_ci      moduleEntity,
1677c804472Sopenharmony_ci      sourceFile,
1687c804472Sopenharmony_ci      filename,
1697c804472Sopenharmony_ci      mockApi,
1707c804472Sopenharmony_ci      extraImport,
1717c804472Sopenharmony_ci      importDeclarations
1727c804472Sopenharmony_ci    );
1737c804472Sopenharmony_ci    expect(result).toBe(data);
1747c804472Sopenharmony_ci  });
1757c804472Sopenharmony_ci});
176