mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-22 19:07:54 +01:00
fix: ignore segment order in diff calculation (#8880)
This commit is contained in:
parent
302af67a29
commit
8d1ebf6527
@ -333,3 +333,38 @@ test('Adding strategy always diffs against undefined strategy', async () => {
|
||||
await screen.findByText('Setting strategy variants to:');
|
||||
await screen.findByText('change_variant');
|
||||
});
|
||||
|
||||
test('Segments order does not matter for diff calculation', async () => {
|
||||
render(
|
||||
<Routes>
|
||||
<Route
|
||||
path='/projects/:projectId'
|
||||
element={
|
||||
<StrategyChange
|
||||
featureName={feature}
|
||||
environmentName={environmentName}
|
||||
projectId={projectId}
|
||||
changeRequestState='Applied'
|
||||
change={{
|
||||
action: 'updateStrategy',
|
||||
id: 1,
|
||||
payload: {
|
||||
...strategy,
|
||||
segments: [3, 2, 1],
|
||||
snapshot: {
|
||||
...strategy,
|
||||
segments: [1, 2, 3],
|
||||
},
|
||||
},
|
||||
}}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
</Routes>,
|
||||
{ route: `/projects/${projectId}` },
|
||||
);
|
||||
|
||||
const viewDiff = await screen.findByText('View Diff');
|
||||
await userEvent.hover(viewDiff);
|
||||
await screen.findByText('(no changes)');
|
||||
});
|
||||
|
@ -28,6 +28,18 @@ const StyledCodeSection = styled('div')(({ theme }) => ({
|
||||
},
|
||||
}));
|
||||
|
||||
const sortSegments = <T extends { segments?: number[] }>(
|
||||
item?: T,
|
||||
): T | undefined => {
|
||||
if (!item || !item.segments) {
|
||||
return item;
|
||||
}
|
||||
return {
|
||||
...item,
|
||||
segments: [...item.segments].sort((a, b) => a - b),
|
||||
};
|
||||
};
|
||||
|
||||
export const StrategyDiff: FC<{
|
||||
change:
|
||||
| IChangeRequestAddStrategy
|
||||
@ -38,12 +50,15 @@ export const StrategyDiff: FC<{
|
||||
const changeRequestStrategy =
|
||||
change.action === 'deleteStrategy' ? undefined : change.payload;
|
||||
|
||||
const sortedCurrentStrategy = sortSegments(currentStrategy);
|
||||
const sortedChangeRequestStrategy = sortSegments(changeRequestStrategy);
|
||||
|
||||
return (
|
||||
<StyledCodeSection>
|
||||
<EventDiff
|
||||
entry={{
|
||||
preData: omit(currentStrategy, 'sortOrder'),
|
||||
data: omit(changeRequestStrategy, 'snapshot'),
|
||||
preData: omit(sortedCurrentStrategy, 'sortOrder'),
|
||||
data: omit(sortedChangeRequestStrategy, 'snapshot'),
|
||||
}}
|
||||
/>
|
||||
</StyledCodeSection>
|
||||
|
Loading…
Reference in New Issue
Block a user