• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import fs from 'fs';
17import path from 'path';
18import { describe, expect, test } from '@jest/globals';
19import { createSourceFile, ScriptTarget } from 'typescript';
20import { generateModuleDeclaration } from '../generate/generateModuleDeclaration';
21
22const filePath = path.join(__dirname, './api/@ohos.ability.ability.d.ts');
23const code = fs.readFileSync(filePath);
24const sourceFile = createSourceFile(filePath, code.toString(), ScriptTarget.Latest);
25
26describe('generateModuleDeclaration.ts file test', () => {
27  test('Test the generateModuleDeclaration function', () => {
28    const moduleEntity = {
29      typeAliasDeclarations: [
30        {
31          typeAliasName: 'DataAbilityHelper',
32          typeAliasTypeKind: 173,
33          typeAliasTypeElements: [
34            {
35              typeName: '_DataAbilityHelper',
36              typeKind: 78
37            }
38          ],
39          modifiers: [92]
40        },
41        {
42          typeAliasName: 'PacMap',
43          typeAliasTypeKind: 173,
44          typeAliasTypeElements: [
45            {
46              typeName: '_PacMap',
47              typeKind: 78
48            }
49          ],
50          modifiers: [92]
51        },
52        {
53          typeAliasName: 'DataAbilityOperation',
54          typeAliasTypeKind: 173,
55          typeAliasTypeElements: [
56            {
57              typeName: '_DataAbilityOperation',
58              typeKind: 78
59            }
60          ],
61          modifiers: [92]
62        },
63        {
64          typeAliasName: 'DataAbilityResult',
65          typeAliasTypeKind: 173,
66          typeAliasTypeElements: [
67            {
68              typeName: '_DataAbilityResult',
69              typeKind: 78
70            }
71          ],
72          modifiers: [92]
73        },
74        {
75          typeAliasName: 'AbilityResult',
76          typeAliasTypeKind: 173,
77          typeAliasTypeElements: [
78            {
79              typeName: '_AbilityResult',
80              typeKind: 78
81            }
82          ],
83          modifiers: [92]
84        },
85        {
86          typeAliasName: 'ConnectOptions',
87          typeAliasTypeKind: 173,
88          typeAliasTypeElements: [
89            {
90              typeName: '_ConnectOptions',
91              typeKind: 78
92            }
93          ],
94          modifiers: [92]
95        },
96        {
97          typeAliasName: 'StartAbilityParameter',
98          typeAliasTypeKind: 173,
99          typeAliasTypeElements: [
100            {
101              typeName: '_StartAbilityParameter',
102              typeKind: 78
103            }
104          ],
105          modifiers: [92]
106        }
107      ],
108      classDeclarations: [],
109      interfaceDeclarations: [],
110      functionDeclarations: new Map(),
111      enumDeclarations: [],
112      moduleDeclarations: [],
113      variableStatements: [],
114      moduleImportEquaqls: [],
115      exportDeclarations: [],
116      exportModifiers: [133],
117      moduleName: 'ability'
118    };
119    const filename = 'ohos_ability_ability';
120    const mockApi = 'import { DataAbilityHelper as _DataAbilityHelper } from \'./ability/dataAbilityHelper\''
121      + 'import { PacMap as _PacMap } from \'./ability/dataAbilityHelper\''
122      + 'import { DataAbilityOperation as _DataAbilityOperation } from \'./ability/dataAbilityOperation\''
123      + 'import { DataAbilityResult as _DataAbilityResult } from \'./ability/dataAbilityResult\''
124      + 'import { AbilityResult as _AbilityResult } from \'./ability/abilityResult\''
125      + 'import { ConnectOptions as _ConnectOptions } from \'./ability/connectOptions\''
126      + 'import { StartAbilityParameter as _StartAbilityParameter } from \'./ability/startAbilityParameter\'';
127    const extraImport = [];
128    const importDeclarations = [
129      {
130        importPath: './ability/dataAbilityHelper',
131        importElements: '{ DataAbilityHelper as _DataAbilityHelper }'
132      },
133      {
134        importPath: './ability/dataAbilityHelper',
135        importElements: '{ PacMap as _PacMap }'
136      },
137      {
138        importPath: './ability/dataAbilityOperation',
139        importElements: '{ DataAbilityOperation as _DataAbilityOperation }'
140      },
141      {
142        importPath: './ability/dataAbilityResult',
143        importElements: '{ DataAbilityResult as _DataAbilityResult }'
144      },
145      {
146        importPath: './ability/abilityResult',
147        importElements: '{ AbilityResult as _AbilityResult }'
148      },
149      {
150        importPath: './ability/connectOptions',
151        importElements: '{ ConnectOptions as _ConnectOptions }'
152      },
153      {
154        importPath: './ability/startAbilityParameter',
155        importElements: '{ StartAbilityParameter as _StartAbilityParameter }'
156      }
157    ];
158    const data = 'export function mockAbility() {\n\tconst ability = {\n\n\n\tDataAbilityHelper: DataAbilityHelper,\n'
159      + 'PacMap: PacMap,\nDataAbilityOperation: DataAbilityOperation,\nDataAbilityResult: DataAbilityResult,\n'
160      + 'AbilityResult: AbilityResult,\nConnectOptions: ConnectOptions,\nStartAbilityParameter: StartAbilityParameter,\n\t'
161      + '};\n\treturn ability;}\nconst DataAbilityHelper = _DataAbilityHelper;\nconst PacMap = _PacMap;\n'
162      + 'const DataAbilityOperation = _DataAbilityOperation;\nconst DataAbilityResult = _DataAbilityResult;\n'
163      + 'const AbilityResult = _AbilityResult;\nconst ConnectOptions = _ConnectOptions;\n'
164      + 'const StartAbilityParameter = _StartAbilityParameter;\n';
165    const result = generateModuleDeclaration(
166      moduleEntity,
167      sourceFile,
168      filename,
169      mockApi,
170      extraImport,
171      importDeclarations
172    );
173    expect(result).toBe(data);
174  });
175});
176