• 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: [
40            92,
41          ],
42        },
43        {
44          typeAliasName: 'PacMap',
45          typeAliasTypeKind: 173,
46          typeAliasTypeElements: [
47            {
48              typeName: '_PacMap',
49              typeKind: 78,
50            },
51          ],
52          modifiers: [
53            92,
54          ],
55        },
56        {
57          typeAliasName: 'DataAbilityOperation',
58          typeAliasTypeKind: 173,
59          typeAliasTypeElements: [
60            {
61              typeName: '_DataAbilityOperation',
62              typeKind: 78,
63            },
64          ],
65          modifiers: [
66            92,
67          ],
68        },
69        {
70          typeAliasName: 'DataAbilityResult',
71          typeAliasTypeKind: 173,
72          typeAliasTypeElements: [
73            {
74              typeName: '_DataAbilityResult',
75              typeKind: 78,
76            },
77          ],
78          modifiers: [
79            92,
80          ],
81        },
82        {
83          typeAliasName: 'AbilityResult',
84          typeAliasTypeKind: 173,
85          typeAliasTypeElements: [
86            {
87              typeName: '_AbilityResult',
88              typeKind: 78,
89            },
90          ],
91          modifiers: [
92            92,
93          ],
94        },
95        {
96          typeAliasName: 'ConnectOptions',
97          typeAliasTypeKind: 173,
98          typeAliasTypeElements: [
99            {
100              typeName: '_ConnectOptions',
101              typeKind: 78,
102            },
103          ],
104          modifiers: [
105            92,
106          ],
107        },
108        {
109          typeAliasName: 'StartAbilityParameter',
110          typeAliasTypeKind: 173,
111          typeAliasTypeElements: [
112            {
113              typeName: '_StartAbilityParameter',
114              typeKind: 78,
115            },
116          ],
117          modifiers: [
118            92,
119          ],
120        },
121      ],
122      classDeclarations: [],
123      interfaceDeclarations: [],
124      functionDeclarations: new Map(),
125      enumDeclarations: [],
126      moduleDeclarations: [],
127      variableStatements: [],
128      moduleImportEquaqls: [],
129      exportDeclarations: [],
130      exportModifiers: [133],
131      moduleName: 'ability',
132    };
133    const filename = 'ohos_ability_ability';
134    const mockApi = 'import { DataAbilityHelper as _DataAbilityHelper } from \'./ability/dataAbilityHelper\''
135      + 'import { PacMap as _PacMap } from \'./ability/dataAbilityHelper\''
136      + 'import { DataAbilityOperation as _DataAbilityOperation } from \'./ability/dataAbilityOperation\''
137      + 'import { DataAbilityResult as _DataAbilityResult } from \'./ability/dataAbilityResult\''
138      + 'import { AbilityResult as _AbilityResult } from \'./ability/abilityResult\''
139      + 'import { ConnectOptions as _ConnectOptions } from \'./ability/connectOptions\''
140      + 'import { StartAbilityParameter as _StartAbilityParameter } from \'./ability/startAbilityParameter\'';
141    const extraImport = [];
142    const importDeclarations = [
143      {
144        importPath: './ability/dataAbilityHelper',
145        importElements: '{ DataAbilityHelper as _DataAbilityHelper }',
146      },
147      {
148        importPath: './ability/dataAbilityHelper',
149        importElements: '{ PacMap as _PacMap }',
150      },
151      {
152        importPath: './ability/dataAbilityOperation',
153        importElements: '{ DataAbilityOperation as _DataAbilityOperation }',
154      },
155      {
156        importPath: './ability/dataAbilityResult',
157        importElements: '{ DataAbilityResult as _DataAbilityResult }',
158      },
159      {
160        importPath: './ability/abilityResult',
161        importElements: '{ AbilityResult as _AbilityResult }',
162      },
163      {
164        importPath: './ability/connectOptions',
165        importElements: '{ ConnectOptions as _ConnectOptions }',
166      },
167      {
168        importPath: './ability/startAbilityParameter',
169        importElements: '{ StartAbilityParameter as _StartAbilityParameter }',
170      },
171    ];
172    const data = 'export function mockAbility() {\n\tconst ability = {\n\n\n\tDataAbilityHelper: DataAbilityHelper,\n'
173      + 'PacMap: PacMap,\nDataAbilityOperation: DataAbilityOperation,\nDataAbilityResult: DataAbilityResult,\n'
174      + 'AbilityResult: AbilityResult,\nConnectOptions: ConnectOptions,\nStartAbilityParameter: StartAbilityParameter,\n\t'
175      + '};\n\treturn ability;}\nconst DataAbilityHelper = _DataAbilityHelper;\nconst PacMap = _PacMap;\n'
176      + 'const DataAbilityOperation = _DataAbilityOperation;\nconst DataAbilityResult = _DataAbilityResult;\n'
177      + 'const AbilityResult = _AbilityResult;\nconst ConnectOptions = _ConnectOptions;\n'
178      + 'const StartAbilityParameter = _StartAbilityParameter;\n';
179    const result = generateModuleDeclaration(moduleEntity, sourceFile, filename, mockApi, extraImport, importDeclarations);
180    expect(result).toBe(data);
181  });
182});