Skip to content

Commit 71ffa66

Browse files
committed
test: add missing cases
1 parent 6645113 commit 71ffa66

File tree

4 files changed

+178
-42
lines changed

4 files changed

+178
-42
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
/**
2+
* Copyright 2024-2025 NetCracker Technology Corporation
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import { Editor, exportDocumentMatcher, exportDocumentsMatcher, LocalRegistry } from './helpers'
18+
import {
19+
BUILD_TYPE,
20+
ExportRestOperationsGroupBuildConfig,
21+
FILE_FORMAT_HTML,
22+
FILE_FORMAT_JSON,
23+
FILE_FORMAT_YAML,
24+
TRANSFORMATION_KIND_REDUCED,
25+
} from '../src'
26+
// import fs from 'fs/promises'
27+
// import AdmZip = require('adm-zip')
28+
29+
// const EXPORT_RESULTS_PATH = 'test/versions/export_results'
30+
31+
let editor: Editor
32+
let dashboard: LocalRegistry
33+
const GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES = 'GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES'
34+
35+
const groupToOperationIdsMap = {
36+
[GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES]: [
37+
'some-path1-get',
38+
'another-path1-put',
39+
'some-path2-post',
40+
],
41+
}
42+
43+
const COMMON_REDUCED_GROUP_EXPORT_CONFIG: Partial<ExportRestOperationsGroupBuildConfig> = {
44+
packageId: 'documents-collision',
45+
version: 'v1',
46+
groupName: GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES,
47+
buildType: BUILD_TYPE.EXPORT_REST_OPERATIONS_GROUP,
48+
operationsSpecTransformation: TRANSFORMATION_KIND_REDUCED,
49+
}
50+
51+
describe('Export operations group with filename collision test', () => {
52+
beforeAll(async () => {
53+
dashboard = LocalRegistry.openPackage('documents-collision', groupToOperationIdsMap)
54+
const package1 = LocalRegistry.openPackage('documents-collision/package1')
55+
const package2 = LocalRegistry.openPackage('documents-collision/package2')
56+
const package3 = LocalRegistry.openPackage('documents-collision/package3')
57+
58+
await dashboard.publish(dashboard.packageId, { packageId: dashboard.packageId })
59+
await package1.publish(package1.packageId, { packageId: package1.packageId })
60+
await package2.publish(package2.packageId, { packageId: package2.packageId })
61+
await package3.publish(package3.packageId, { packageId: package3.packageId })
62+
63+
editor = await Editor.openProject(dashboard.packageId, dashboard)
64+
65+
// await fs.rm(EXPORT_RESULTS_PATH, { recursive: true, force: true })
66+
// await fs.mkdir(EXPORT_RESULTS_PATH)
67+
})
68+
69+
// afterEach(async () => {
70+
// const { packageVersion, exportFileName } = await editor.createNodeVersionPackage()
71+
// const infoPrefix = editor.config.operationsSpecTransformation
72+
// ? `${editor.config.operationsSpecTransformation}___${editor.config.format}___`
73+
// : `${editor.config.format}___`
74+
//
75+
// if (exportFileName?.endsWith('.zip')) {
76+
// const zip = new AdmZip(packageVersion)
77+
// return zip.extractAllTo(`${EXPORT_RESULTS_PATH}/${infoPrefix}${exportFileName}`)
78+
// }
79+
// return await fs.writeFile(`${EXPORT_RESULTS_PATH}/${infoPrefix}${exportFileName}`, packageVersion)
80+
// })
81+
82+
test('should export reduced rest operations group to yaml', async () => {
83+
const result = await editor.run({
84+
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
85+
format: FILE_FORMAT_YAML,
86+
})
87+
88+
expect(result.exportFileName).toEqual('documents-collision_v1_GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES.zip')
89+
expect(result).toEqual(exportDocumentsMatcher([
90+
exportDocumentMatcher('package1_1.yaml'),
91+
exportDocumentMatcher('package1_2.yaml'),
92+
exportDocumentMatcher('package2_1.yaml'),
93+
exportDocumentMatcher('package3_1.yaml'),
94+
]))
95+
})
96+
97+
test('should export reduced rest operations group to json', async () => {
98+
const result = await editor.run({
99+
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
100+
format: FILE_FORMAT_JSON,
101+
})
102+
103+
expect(result.exportFileName).toEqual('documents-collision_v1_GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES.zip')
104+
expect(result).toEqual(exportDocumentsMatcher([
105+
exportDocumentMatcher('package1_1.json'),
106+
exportDocumentMatcher('package1_2.json'),
107+
exportDocumentMatcher('package2_1.json'),
108+
exportDocumentMatcher('package3_1.json'),
109+
]))
110+
})
111+
112+
test('should export reduced rest operations group to html', async () => {
113+
const result = await editor.run({
114+
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
115+
format: FILE_FORMAT_HTML,
116+
})
117+
118+
expect(result.exportFileName).toEqual('documents-collision_v1_GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES.zip')
119+
expect(result).toEqual(exportDocumentsMatcher([
120+
exportDocumentMatcher('package1_1.html'),
121+
exportDocumentMatcher('package1_2.html'),
122+
exportDocumentMatcher('package2_1.html'),
123+
exportDocumentMatcher('package3_1.html'),
124+
125+
exportDocumentMatcher('index.html'),
126+
exportDocumentMatcher('ls.html'),
127+
exportDocumentMatcher('resources/corporatelogo.png'),
128+
exportDocumentMatcher('resources/styles.css'),
129+
]))
130+
})
131+
})

test/export.test.ts

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { Editor, exportDocumentMatcher, exportDocumentsMatcher, LocalRegistry } from './helpers'
17+
import { Editor, exportDocumentMatcher, exportDocumentsMatcher, loadFileAsString, LocalRegistry } from './helpers'
1818
import {
1919
BUILD_TYPE,
2020
ExportRestOperationsGroupBuildConfig,
2121
FILE_FORMAT_HTML,
2222
FILE_FORMAT_JSON,
23+
FILE_FORMAT_YAML,
2324
TRANSFORMATION_KIND_MERGED,
2425
TRANSFORMATION_KIND_REDUCED,
25-
FILE_FORMAT_YAML,
2626
} from '../src'
27+
import YAML from 'js-yaml'
2728
// import fs from 'fs/promises'
2829
// import AdmZip = require('adm-zip')
2930

@@ -33,6 +34,8 @@ let pkg: LocalRegistry
3334
let editor: Editor
3435
const GROUP_WITH_OPERATIONS_FROM_TWO_DOCUMENTS = 'GROUP_WITH_OPERATIONS_FROM_TWO_DOCUMENTS'
3536
const GROUP_WITH_OPERATIONS_FROM_ONE_DOCUMENT_ONLY = 'GROUP_WITH_OPERATIONS_FROM_ONE_DOCUMENT_ONLY'
37+
const GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES = 'GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES'
38+
3639
const groupToOperationIdsMap = {
3740
[GROUP_WITH_OPERATIONS_FROM_TWO_DOCUMENTS]: [
3841
'path1-get',
@@ -42,11 +45,19 @@ const groupToOperationIdsMap = {
4245
'path2-get',
4346
'path2-post',
4447
],
48+
[GROUP_WITH_OPERATIONS_FROM_DOCUMENTS_WITH_THE_SAME_NAMES]: [
49+
'some-path1-get',
50+
'another-path1-put',
51+
'some-path2-post',
52+
],
4553
}
4654

4755
const REGULAR_VERSION = 'regular-version@123'
4856
const SINGLE_DOCUMENT_VERSION = 'single-document-version@24'
4957
const SINGLE_DOCUMENT_VERSION_WITH_README = 'single-document-version-with-readme@31'
58+
const NO_DOCUMENTS_VERSION = 'no-documents-version@51'
59+
60+
const EXPECTED_RESULT_FILE = 'result.yaml'
5061

5162
const COMMON_GROUP_EXPORT_CONFIG = {
5263
packageId: 'export',
@@ -56,27 +67,29 @@ const COMMON_GROUP_EXPORT_CONFIG = {
5667

5768
const COMMON_REDUCED_GROUP_EXPORT_CONFIG: Partial<ExportRestOperationsGroupBuildConfig> = {
5869
...COMMON_GROUP_EXPORT_CONFIG,
59-
groupName: GROUP_WITH_OPERATIONS_FROM_TWO_DOCUMENTS,
6070
buildType: BUILD_TYPE.EXPORT_REST_OPERATIONS_GROUP,
6171
operationsSpecTransformation: TRANSFORMATION_KIND_REDUCED,
6272
}
6373

6474
const COMMON_MERGED_GROUP_EXPORT_CONFIG: Partial<ExportRestOperationsGroupBuildConfig> = {
6575
...COMMON_GROUP_EXPORT_CONFIG,
66-
groupName: GROUP_WITH_OPERATIONS_FROM_TWO_DOCUMENTS,
6776
buildType: BUILD_TYPE.EXPORT_REST_OPERATIONS_GROUP,
6877
operationsSpecTransformation: TRANSFORMATION_KIND_MERGED,
6978
}
7079

7180
describe('Export test', () => {
7281
beforeAll(async () => {
73-
pkg = LocalRegistry.openPackage('export')
82+
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
7483
await pkg.publish(pkg.packageId, { version: REGULAR_VERSION })
7584
await pkg.publish(pkg.packageId, { version: SINGLE_DOCUMENT_VERSION, files: [{ fileId: '1.yaml' }] })
7685
await pkg.publish(pkg.packageId, {
7786
version: SINGLE_DOCUMENT_VERSION_WITH_README,
7887
files: [{ fileId: '1.yaml' }, { fileId: 'README.md' }],
7988
})
89+
await pkg.publish(pkg.packageId, {
90+
version: NO_DOCUMENTS_VERSION,
91+
files: [{ fileId: 'Document.docx' }, { fileId: 'README.md' }, { fileId: 'Test.png' }],
92+
})
8093

8194
editor = await Editor.openProject(pkg.packageId, pkg)
8295

@@ -250,12 +263,21 @@ describe('Export test', () => {
250263
]))
251264
})
252265

253-
// todo same 3 tests but without extensions? (excessive)
266+
test('should export version without documents to html without adding any extra files', async () => {
267+
const result = await editor.run({
268+
version: NO_DOCUMENTS_VERSION,
269+
buildType: BUILD_TYPE.EXPORT_VERSION,
270+
format: FILE_FORMAT_HTML,
271+
})
272+
expect(result.exportFileName).toEqual('export_no-documents-version.zip')
273+
expect(result).toEqual(exportDocumentsMatcher([
274+
exportDocumentMatcher('Document.docx'),
275+
exportDocumentMatcher('README.md'),
276+
exportDocumentMatcher('Test.png'),
277+
]))
278+
})
254279

255280
test('should export reduced rest operations group to html', async () => {
256-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
257-
editor = await Editor.openProject(pkg.packageId, pkg)
258-
259281
const result = await editor.run({
260282
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
261283
format: FILE_FORMAT_HTML,
@@ -273,9 +295,6 @@ describe('Export test', () => {
273295
})
274296

275297
test('should export reduced rest operations group to html (operations originated from one document)', async () => {
276-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
277-
editor = await Editor.openProject(pkg.packageId, pkg)
278-
279298
const result = await editor.run({
280299
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
281300
groupName: GROUP_WITH_OPERATIONS_FROM_ONE_DOCUMENT_ONLY,
@@ -292,9 +311,6 @@ describe('Export test', () => {
292311
})
293312

294313
test('should export reduced rest operations group to json', async () => {
295-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
296-
editor = await Editor.openProject(pkg.packageId, pkg)
297-
298314
const result = await editor.run({
299315
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
300316
format: FILE_FORMAT_JSON,
@@ -307,9 +323,6 @@ describe('Export test', () => {
307323
})
308324

309325
test('should export reduced rest operations group to json (operations originated from one document)', async () => {
310-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
311-
editor = await Editor.openProject(pkg.packageId, pkg)
312-
313326
const result = await editor.run({
314327
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
315328
groupName: GROUP_WITH_OPERATIONS_FROM_ONE_DOCUMENT_ONLY,
@@ -322,9 +335,6 @@ describe('Export test', () => {
322335
})
323336

324337
test('should export reduced rest operations group to yaml', async () => {
325-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
326-
editor = await Editor.openProject(pkg.packageId, pkg)
327-
328338
const result = await editor.run({
329339
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
330340
format: FILE_FORMAT_YAML,
@@ -337,9 +347,6 @@ describe('Export test', () => {
337347
})
338348

339349
test('should export reduced rest operations group to yaml (operations originated from one document)', async () => {
340-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
341-
editor = await Editor.openProject(pkg.packageId, pkg)
342-
343350
const result = await editor.run({
344351
...COMMON_REDUCED_GROUP_EXPORT_CONFIG,
345352
groupName: GROUP_WITH_OPERATIONS_FROM_ONE_DOCUMENT_ONLY,
@@ -352,8 +359,6 @@ describe('Export test', () => {
352359
})
353360

354361
test('should export merged rest operations group to html', async () => {
355-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
356-
editor = await Editor.openProject(pkg.packageId, pkg)
357362
const result = await editor.run({
358363
...COMMON_MERGED_GROUP_EXPORT_CONFIG,
359364
format: FILE_FORMAT_HTML,
@@ -369,8 +374,6 @@ describe('Export test', () => {
369374
})
370375

371376
test('should export merged rest operations group to json', async () => {
372-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
373-
editor = await Editor.openProject(pkg.packageId, pkg)
374377
const result = await editor.run({
375378
...COMMON_MERGED_GROUP_EXPORT_CONFIG,
376379
format: FILE_FORMAT_JSON,
@@ -379,12 +382,11 @@ describe('Export test', () => {
379382
expect(result).toEqual(exportDocumentsMatcher([
380383
exportDocumentMatcher('GROUP_WITH_OPERATIONS_FROM_TWO_DOCUMENTS.json'),
381384
]))
385+
const expectedResult = JSON.stringify(YAML.load((await loadFileAsString(pkg.projectsDir, pkg.packageId, EXPECTED_RESULT_FILE))!), undefined, 2)
386+
expect(await result.exportDocuments[0].data.text()).toEqual(expectedResult)
382387
})
383388

384389
test('should export merged rest operations group to yaml', async () => {
385-
pkg = LocalRegistry.openPackage('export', groupToOperationIdsMap)
386-
editor = await Editor.openProject(pkg.packageId, pkg)
387-
388390
const result = await editor.run({
389391
...COMMON_MERGED_GROUP_EXPORT_CONFIG,
390392
format: FILE_FORMAT_YAML,
@@ -393,5 +395,7 @@ describe('Export test', () => {
393395
expect(result).toEqual(exportDocumentsMatcher([
394396
exportDocumentMatcher('GROUP_WITH_OPERATIONS_FROM_TWO_DOCUMENTS.yaml'),
395397
]))
398+
const expectedResult = await loadFileAsString(pkg.projectsDir, pkg.packageId, EXPECTED_RESULT_FILE)
399+
expect(await result.exportDocuments[0].data.text()).toEqual(expectedResult)
396400
})
397401
})

test/projects/documents-collision/config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"packageId": "documents-collision",
3+
"packageName": "documents collision dashboard",
34
"apiType": "rest",
45
"version": "v1",
56
"refs": [

test/projects/export/result.yaml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
openapi: 3.0.0
22
info:
3-
title: manualGroup
4-
version: v1
3+
title: GROUP_WITH_OPERATIONS_FROM_TWO_DOCUMENTS
4+
version: regular-version
55
paths:
66
/path1:
77
summary: path item summary
@@ -10,7 +10,7 @@ paths:
1010
- url: https://example1.com
1111
description: This is a server description in path item
1212
parameters:
13-
- $ref: "#/components/parameters/usedParameter1"
13+
- $ref: '#/components/parameters/usedParameter1'
1414
get:
1515
summary: operation summary
1616
description: operation description
@@ -24,24 +24,24 @@ paths:
2424
description: response description
2525
/path2:
2626
parameters:
27-
- $ref: "#/components/parameters/usedParameter1"
27+
- $ref: '#/components/parameters/usedParameter1'
2828
post:
2929
parameters:
3030
- $ref: '#/components/parameters/usedParameter2'
3131
responses:
3232
'200':
3333
description: response description
3434
components:
35-
parameters:
36-
usedParameter1:
37-
name: usedParameter1
38-
in: query
39-
usedParameter2:
40-
name: usedParameter2
41-
in: query
4235
securitySchemes:
4336
BearerAuth:
4437
type: http
4538
description: Bearer token authentication. Default security scheme for API usage.
4639
scheme: bearer
4740
bearerFormat: JWT
41+
parameters:
42+
usedParameter2:
43+
name: usedParameter2
44+
in: query
45+
usedParameter1:
46+
name: usedParameter1
47+
in: query

0 commit comments

Comments
 (0)