1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-09 00:18:00 +01:00

fix: import segment test and fix (#5017)

This commit is contained in:
Jaanus Sellin 2023-10-13 09:40:34 +03:00 committed by GitHub
parent 2adfb7bd15
commit a7dd0d6c1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 4 deletions

View File

@ -503,10 +503,21 @@ export default class ExportImportService
private async cleanData(dto: ImportTogglesSchema) {
const removedFeaturesDto = await this.removeArchivedFeatures(dto);
return ExportImportService.remapSegments(removedFeaturesDto);
return this.remapSegments(removedFeaturesDto);
}
private static async remapSegments(dto: ImportTogglesSchema) {
private async remapSegments(dto: ImportTogglesSchema) {
const existingSegments = await this.segmentService.getAll();
const segmentMapping = new Map(
dto.data.segments?.map((segment) => [
segment.id,
existingSegments.find(
(existingSegment) => existingSegment.name === segment.name,
)?.id,
]),
);
return {
...dto,
data: {
@ -514,7 +525,9 @@ export default class ExportImportService
featureStrategies: dto.data.featureStrategies.map(
(strategy) => ({
...strategy,
segments: [],
segments: strategy.segments?.map(
(segment) => segmentMapping.get(segment)!,
),
}),
),
},

View File

@ -741,13 +741,44 @@ const validateImport = (importPayload: ImportTogglesSchema, status = 200) =>
test('import features to existing project and environment', async () => {
await createProjects();
await app.importToggles(defaultImportPayload);
const segment = await createSegment({
name: 'newSegment',
constraints: [],
});
await app.importToggles({
...defaultImportPayload,
data: {
...defaultImportPayload.data,
featureStrategies: [
{
...exportedStrategy,
segments: [segment.id],
},
],
segments: [
{
id: segment.id,
name: segment.name,
},
],
},
});
const { body: importedFeature } = await getFeature(defaultFeatureName);
expect(importedFeature).toMatchObject({
name: defaultFeatureName,
project: DEFAULT_PROJECT,
variants,
environments: [
{
strategies: [
{
segments: [segment.id],
},
],
},
],
});
const { body: importedFeatureEnvironment } = await getFeatureEnvironment(