mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-14 00:19:16 +01:00
fix: import segment test and fix (#5017)
This commit is contained in:
parent
2adfb7bd15
commit
a7dd0d6c1a
@ -503,10 +503,21 @@ export default class ExportImportService
|
|||||||
|
|
||||||
private async cleanData(dto: ImportTogglesSchema) {
|
private async cleanData(dto: ImportTogglesSchema) {
|
||||||
const removedFeaturesDto = await this.removeArchivedFeatures(dto);
|
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 {
|
return {
|
||||||
...dto,
|
...dto,
|
||||||
data: {
|
data: {
|
||||||
@ -514,7 +525,9 @@ export default class ExportImportService
|
|||||||
featureStrategies: dto.data.featureStrategies.map(
|
featureStrategies: dto.data.featureStrategies.map(
|
||||||
(strategy) => ({
|
(strategy) => ({
|
||||||
...strategy,
|
...strategy,
|
||||||
segments: [],
|
segments: strategy.segments?.map(
|
||||||
|
(segment) => segmentMapping.get(segment)!,
|
||||||
|
),
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
@ -741,13 +741,44 @@ const validateImport = (importPayload: ImportTogglesSchema, status = 200) =>
|
|||||||
test('import features to existing project and environment', async () => {
|
test('import features to existing project and environment', async () => {
|
||||||
await createProjects();
|
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);
|
const { body: importedFeature } = await getFeature(defaultFeatureName);
|
||||||
expect(importedFeature).toMatchObject({
|
expect(importedFeature).toMatchObject({
|
||||||
name: defaultFeatureName,
|
name: defaultFeatureName,
|
||||||
project: DEFAULT_PROJECT,
|
project: DEFAULT_PROJECT,
|
||||||
variants,
|
variants,
|
||||||
|
environments: [
|
||||||
|
{
|
||||||
|
strategies: [
|
||||||
|
{
|
||||||
|
segments: [segment.id],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
const { body: importedFeatureEnvironment } = await getFeatureEnvironment(
|
const { body: importedFeatureEnvironment } = await getFeatureEnvironment(
|
||||||
|
Loading…
Reference in New Issue
Block a user