|  | 
| 14 | 14 |  * limitations under the License. | 
| 15 | 15 |  */ | 
| 16 | 16 | 
 | 
| 17 |  | -import { Editor, LocalRegistry } from './helpers' | 
| 18 |  | -import { BUILD_TYPE } from '../src' | 
|  | 17 | +import { | 
|  | 18 | +  buildPrefixGroupChangelogPackage, | 
|  | 19 | +  changesSummaryMatcher, | 
|  | 20 | +  Editor, | 
|  | 21 | +  LocalRegistry, | 
|  | 22 | +  numberOfImpactedOperationsMatcher, | 
|  | 23 | +} from './helpers' | 
|  | 24 | +import { ANNOTATION_CHANGE_TYPE, BREAKING_CHANGE_TYPE, BUILD_TYPE, NON_BREAKING_CHANGE_TYPE } from '../src' | 
| 19 | 25 | 
 | 
| 20 | 26 | const pkg = LocalRegistry.openPackage('apihub') | 
| 21 | 27 | 
 | 
| 22 |  | -describe('Prefix Groups test',  () => { | 
| 23 |  | -  beforeAll(async () => { | 
|  | 28 | +describe('Prefix Groups test', () => { | 
|  | 29 | +  test('should compare prefix groups /api/{group}, groups=v2, v3', async () => { | 
| 24 | 30 |     // generate missing versions/apihub folder contents | 
| 25 | 31 |     await pkg.publish(pkg.packageId, { | 
| 26 | 32 |       version: 'v1', | 
| @@ -62,18 +68,72 @@ describe('Prefix Groups test',  () => { | 
| 62 | 68 |         { fileId: 'Public Registry API.yaml' }, | 
| 63 | 69 |       ], | 
| 64 | 70 |     }) | 
| 65 |  | -  }) | 
| 66 | 71 | 
 | 
| 67 |  | -  test('should compare prefix groups /api/{group}, groups=v2, v3', async () => { | 
| 68 | 72 |     const editor = await Editor.openProject(pkg.packageId, pkg) | 
| 69 | 73 |     const result = await editor.run({ | 
| 70 | 74 |       version: 'prefix2', | 
| 71 |  | -      previousVersion: 'prefix1', | 
| 72 | 75 |       currentGroup: '/api/v3', | 
| 73 | 76 |       previousGroup: 'api/v2', | 
| 74 | 77 |       buildType: BUILD_TYPE.PREFIX_GROUPS_CHANGELOG, | 
| 75 | 78 |     }) | 
| 76 | 79 | 
 | 
| 77 | 80 |     expect(result.comparisons?.[0].data?.length).toBe(95) | 
| 78 | 81 |   }) | 
|  | 82 | + | 
|  | 83 | +  test('should compare prefix groups /api/{group}', async () => { | 
|  | 84 | +    const result = await buildPrefixGroupChangelogPackage({ packageId: 'prefix-groups/mixed-cases' }) | 
|  | 85 | + | 
|  | 86 | +    expect(result).toEqual(changesSummaryMatcher({ | 
|  | 87 | +      [BREAKING_CHANGE_TYPE]: 1, | 
|  | 88 | +      [NON_BREAKING_CHANGE_TYPE]: 1, | 
|  | 89 | +      [ANNOTATION_CHANGE_TYPE]: 2, | 
|  | 90 | +    })) | 
|  | 91 | +    expect(result).toEqual(numberOfImpactedOperationsMatcher({ | 
|  | 92 | +      [BREAKING_CHANGE_TYPE]: 1, | 
|  | 93 | +      [NON_BREAKING_CHANGE_TYPE]: 1, | 
|  | 94 | +      [ANNOTATION_CHANGE_TYPE]: 2, | 
|  | 95 | +    })) | 
|  | 96 | +  }) | 
|  | 97 | + | 
|  | 98 | +  test('Add method in a new version', async () => { | 
|  | 99 | +    const result = await buildPrefixGroupChangelogPackage({ packageId: 'prefix-groups/add-method' }) | 
|  | 100 | + | 
|  | 101 | +    expect(result).toEqual(changesSummaryMatcher({ [NON_BREAKING_CHANGE_TYPE]: 1 })) | 
|  | 102 | +    expect(result).toEqual(numberOfImpactedOperationsMatcher({ [NON_BREAKING_CHANGE_TYPE]: 1 })) | 
|  | 103 | +  }) | 
|  | 104 | + | 
|  | 105 | +  test('Remove method in a new version', async () => { | 
|  | 106 | +    const result = await buildPrefixGroupChangelogPackage({ packageId: 'prefix-groups/remove-method' }) | 
|  | 107 | + | 
|  | 108 | +    expect(result).toEqual(changesSummaryMatcher({ [BREAKING_CHANGE_TYPE]: 1 })) | 
|  | 109 | +    expect(result).toEqual(numberOfImpactedOperationsMatcher({ [BREAKING_CHANGE_TYPE]: 1 })) | 
|  | 110 | +  }) | 
|  | 111 | + | 
|  | 112 | +  test('Change method content in a new version', async () => { | 
|  | 113 | +    const result = await buildPrefixGroupChangelogPackage({ packageId: 'prefix-groups/change-method' }) | 
|  | 114 | + | 
|  | 115 | +    expect(result).toEqual(changesSummaryMatcher({ | 
|  | 116 | +      [BREAKING_CHANGE_TYPE]: 1, | 
|  | 117 | +      [NON_BREAKING_CHANGE_TYPE]: 1, | 
|  | 118 | +    })) | 
|  | 119 | +    expect(result).toEqual(numberOfImpactedOperationsMatcher({ | 
|  | 120 | +      [BREAKING_CHANGE_TYPE]: 1, | 
|  | 121 | +      [NON_BREAKING_CHANGE_TYPE]: 1, | 
|  | 122 | +    })) | 
|  | 123 | +  }) | 
|  | 124 | + | 
|  | 125 | +  test('should compare prefix groups with different length', async () => { | 
|  | 126 | +    const result = await buildPrefixGroupChangelogPackage({ | 
|  | 127 | +      packageId: 'prefix-groups/different-prefix-length', | 
|  | 128 | +      config: { | 
|  | 129 | +        currentGroup: '/api/v10', | 
|  | 130 | +        previousGroup: '/api/v1000', | 
|  | 131 | +      }, | 
|  | 132 | +    }) | 
|  | 133 | + | 
|  | 134 | +    expect(result).toEqual(changesSummaryMatcher({ [ANNOTATION_CHANGE_TYPE]: 1 })) | 
|  | 135 | +    expect(result).toEqual(numberOfImpactedOperationsMatcher({ [ANNOTATION_CHANGE_TYPE]: 1 })) | 
|  | 136 | +  }) | 
|  | 137 | + | 
|  | 138 | +  // todo add case when api/v1 in servers and api/v2 in some paths? | 
| 79 | 139 | }) | 
0 commit comments