mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-24 01:18:01 +02:00
fix: allow deletion of segments referencing strategies in archived f… (#6406)
Subset of #6392, allowing you to delete segments that are referenced in strategies on archived features.
This commit is contained in:
parent
a08bada1de
commit
bfbd18eb97
@ -3,7 +3,7 @@ import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
|||||||
import Input from 'component/common/Input/Input';
|
import Input from 'component/common/Input/Input';
|
||||||
import { ISegment } from 'interfaces/segment';
|
import { ISegment } from 'interfaces/segment';
|
||||||
import { SEGMENT_DIALOG_NAME_ID } from 'utils/testIds';
|
import { SEGMENT_DIALOG_NAME_ID } from 'utils/testIds';
|
||||||
import { styled } from '@mui/material';
|
import { Alert, styled } from '@mui/material';
|
||||||
|
|
||||||
const StyledInput = styled(Input)(({ theme }) => ({
|
const StyledInput = styled(Input)(({ theme }) => ({
|
||||||
marginTop: theme.spacing(2),
|
marginTop: theme.spacing(2),
|
||||||
@ -46,6 +46,11 @@ export const SegmentDeleteConfirm = ({
|
|||||||
onClose={handleCancel}
|
onClose={handleCancel}
|
||||||
formId={formId}
|
formId={formId}
|
||||||
>
|
>
|
||||||
|
<Alert sx={{ marginBottom: 2 }} severity='warning'>
|
||||||
|
Deleted segments may be referenced in strategies if the feature
|
||||||
|
flag is archived. Removing the segment will also remove the
|
||||||
|
segments from strategies of archived flags.
|
||||||
|
</Alert>
|
||||||
<p>
|
<p>
|
||||||
In order to delete this segment, please enter the name of the
|
In order to delete this segment, please enter the name of the
|
||||||
segment in the field below: <strong>{segment?.name}</strong>
|
segment in the field below: <strong>{segment?.name}</strong>
|
||||||
|
@ -814,7 +814,14 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore {
|
|||||||
`${T.featureStrategySegment}.feature_strategy_id`,
|
`${T.featureStrategySegment}.feature_strategy_id`,
|
||||||
`${T.featureStrategies}.id`,
|
`${T.featureStrategies}.id`,
|
||||||
)
|
)
|
||||||
.where(`${T.featureStrategySegment}.segment_id`, '=', segmentId);
|
.join(
|
||||||
|
T.features,
|
||||||
|
`${T.features}.name`,
|
||||||
|
`${T.featureStrategies}.feature_name`,
|
||||||
|
)
|
||||||
|
.where(`${T.featureStrategySegment}.segment_id`, '=', segmentId)
|
||||||
|
.andWhere(`${T.features}.archived_at`, 'IS', null);
|
||||||
|
|
||||||
stopTimer();
|
stopTimer();
|
||||||
return rows.map(mapRow);
|
return rows.map(mapRow);
|
||||||
}
|
}
|
||||||
|
@ -290,6 +290,36 @@ test('should not delete segments used by strategies', async () => {
|
|||||||
expect((await fetchSegments()).length).toEqual(1);
|
expect((await fetchSegments()).length).toEqual(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should delete segments used by strategies in archived feature toggles', async () => {
|
||||||
|
await app.createSegment({
|
||||||
|
name: 'a',
|
||||||
|
constraints: [],
|
||||||
|
});
|
||||||
|
const toggle = mockFeatureToggle();
|
||||||
|
await createFeatureToggle(app, toggle);
|
||||||
|
const [segment] = await fetchSegments();
|
||||||
|
|
||||||
|
await addStrategyToFeatureEnv(
|
||||||
|
app,
|
||||||
|
{ ...toggle.strategies[0] },
|
||||||
|
'default',
|
||||||
|
toggle.name,
|
||||||
|
);
|
||||||
|
const [feature] = await fetchFeatures();
|
||||||
|
//@ts-ignore
|
||||||
|
await addSegmentsToStrategy([segment.id], feature.strategies[0].id);
|
||||||
|
const segments = await fetchSegments();
|
||||||
|
expect(segments.length).toEqual(1);
|
||||||
|
|
||||||
|
await app.archiveFeature(feature.name);
|
||||||
|
|
||||||
|
await app.request
|
||||||
|
.delete(`${SEGMENTS_BASE_PATH}/${segments[0].id}`)
|
||||||
|
.expect(204);
|
||||||
|
|
||||||
|
expect((await fetchSegments()).length).toEqual(0);
|
||||||
|
});
|
||||||
|
|
||||||
test('should list strategies by segment', async () => {
|
test('should list strategies by segment', async () => {
|
||||||
await app.createSegment({
|
await app.createSegment({
|
||||||
name: 'S1',
|
name: 'S1',
|
||||||
|
Loading…
Reference in New Issue
Block a user