mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-09 00:18:00 +01:00
fix: show Changes scheduled badge for strategies even if change reque… (#5599)
show Changes scheduled badge for strategies even if change requests are disabled Closes # [1-1745](https://linear.app/unleash/issue/1-1745/show-changes-scheduled-badge-in-strategy-item-even-if-change-requests) --------- Signed-off-by: andreas-unleash <andreas@getunleash.ai>
This commit is contained in:
parent
abf540a1cc
commit
e02c252636
@ -314,7 +314,13 @@ describe('Change request badges for strategies', () => {
|
|||||||
testServerRoute(
|
testServerRoute(
|
||||||
server,
|
server,
|
||||||
'/api/admin/projects/default/change-requests/pending/feature1',
|
'/api/admin/projects/default/change-requests/pending/feature1',
|
||||||
[scheduledRequest('updateStrategy')],
|
[],
|
||||||
|
);
|
||||||
|
|
||||||
|
testServerRoute(
|
||||||
|
server,
|
||||||
|
'/api/admin/projects/default/change-requests/scheduled',
|
||||||
|
[{ id: 1 }],
|
||||||
);
|
);
|
||||||
|
|
||||||
render(<Component />, {
|
render(<Component />, {
|
||||||
@ -336,6 +342,11 @@ describe('Change request badges for strategies', () => {
|
|||||||
'/api/admin/projects/default/change-requests/pending/feature1',
|
'/api/admin/projects/default/change-requests/pending/feature1',
|
||||||
[scheduledRequest('deleteStrategy')],
|
[scheduledRequest('deleteStrategy')],
|
||||||
);
|
);
|
||||||
|
testServerRoute(
|
||||||
|
server,
|
||||||
|
'/api/admin/projects/default/change-requests/scheduled',
|
||||||
|
[{ id: 1 }],
|
||||||
|
);
|
||||||
|
|
||||||
render(<Component />, {
|
render(<Component />, {
|
||||||
route: '/projects/default/features/feature1',
|
route: '/projects/default/features/feature1',
|
||||||
@ -359,6 +370,11 @@ describe('Change request badges for strategies', () => {
|
|||||||
draftRequest('updateStrategy', 1),
|
draftRequest('updateStrategy', 1),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
testServerRoute(
|
||||||
|
server,
|
||||||
|
'/api/admin/projects/default/change-requests/scheduled',
|
||||||
|
[{ id: 1 }],
|
||||||
|
);
|
||||||
|
|
||||||
render(<Component />, {
|
render(<Component />, {
|
||||||
route: '/projects/default/features/feature1',
|
route: '/projects/default/features/feature1',
|
||||||
@ -382,6 +398,11 @@ describe('Change request badges for strategies', () => {
|
|||||||
draftRequest('deleteStrategy', 1),
|
draftRequest('deleteStrategy', 1),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
testServerRoute(
|
||||||
|
server,
|
||||||
|
'/api/admin/projects/default/change-requests/scheduled',
|
||||||
|
[{ id: 1 }],
|
||||||
|
);
|
||||||
|
|
||||||
render(<Component />, {
|
render(<Component />, {
|
||||||
route: '/projects/default/features/feature1',
|
route: '/projects/default/features/feature1',
|
||||||
@ -395,4 +416,45 @@ describe('Change request badges for strategies', () => {
|
|||||||
await screen.findByText('Changes Scheduled');
|
await screen.findByText('Changes Scheduled');
|
||||||
await screen.findByText('Deleted in draft');
|
await screen.findByText('Deleted in draft');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should render "Changes scheduled" badge if strategy is modified in a scheduled request event if change requests are disabled', async () => {
|
||||||
|
testServerRoute(
|
||||||
|
server,
|
||||||
|
'/api/admin/projects/default/change-requests/config',
|
||||||
|
[
|
||||||
|
{
|
||||||
|
environment: 'development',
|
||||||
|
type: 'development',
|
||||||
|
changeRequestEnabled: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
environment: 'production',
|
||||||
|
type: 'production',
|
||||||
|
changeRequestEnabled: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'get',
|
||||||
|
);
|
||||||
|
testServerRoute(
|
||||||
|
server,
|
||||||
|
'/api/admin/projects/default/change-requests/pending/feature1',
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
testServerRoute(
|
||||||
|
server,
|
||||||
|
'/api/admin/projects/default/change-requests/scheduled',
|
||||||
|
[{ id: 1 }],
|
||||||
|
);
|
||||||
|
|
||||||
|
render(<Component />, {
|
||||||
|
route: '/projects/default/features/feature1',
|
||||||
|
permissions: [
|
||||||
|
{
|
||||||
|
permission: ADMIN,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
await screen.findByText('Changes Scheduled');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -13,6 +13,10 @@ import {
|
|||||||
import { ChangesScheduledBadge } from 'component/changeRequest/ModifiedInChangeRequestStatusBadge/ChangesScheduledBadge';
|
import { ChangesScheduledBadge } from 'component/changeRequest/ModifiedInChangeRequestStatusBadge/ChangesScheduledBadge';
|
||||||
import { IFeatureChange } from 'component/changeRequest/changeRequest.types';
|
import { IFeatureChange } from 'component/changeRequest/changeRequest.types';
|
||||||
import { Badge } from 'component/common/Badge/Badge';
|
import { Badge } from 'component/common/Badge/Badge';
|
||||||
|
import {
|
||||||
|
ChangeRequestIdentityData,
|
||||||
|
useScheduledChangeRequestsWithStrategy,
|
||||||
|
} from 'hooks/api/getters/useScheduledChangeRequestsWithStrategy/useScheduledChangeRequestsWithStrategy';
|
||||||
|
|
||||||
interface IStrategyDraggableItemProps {
|
interface IStrategyDraggableItemProps {
|
||||||
strategy: IFeatureStrategy;
|
strategy: IFeatureStrategy;
|
||||||
@ -51,6 +55,9 @@ export const StrategyDraggableItem = ({
|
|||||||
strategy.id,
|
strategy.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const { changeRequests: scheduledChangesUsingStrategy } =
|
||||||
|
useScheduledChangeRequestsWithStrategy(projectId, strategy.id);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
key={strategy.id}
|
key={strategy.id}
|
||||||
@ -72,6 +79,7 @@ export const StrategyDraggableItem = ({
|
|||||||
orderNumber={index + 1}
|
orderNumber={index + 1}
|
||||||
headerChildren={renderHeaderChildren(
|
headerChildren={renderHeaderChildren(
|
||||||
strategyChangesFromRequest,
|
strategyChangesFromRequest,
|
||||||
|
scheduledChangesUsingStrategy,
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
@ -105,14 +113,15 @@ const ChangeRequestStatusBadge = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const renderHeaderChildren = (
|
const renderHeaderChildren = (
|
||||||
changes: UseStrategyChangeFromRequestResult,
|
changes?: UseStrategyChangeFromRequestResult,
|
||||||
|
scheduledChanges?: ChangeRequestIdentityData[],
|
||||||
): JSX.Element[] => {
|
): JSX.Element[] => {
|
||||||
const badges: JSX.Element[] = [];
|
const badges: JSX.Element[] = [];
|
||||||
if (changes.length === 0) {
|
if (changes?.length === 0 && scheduledChanges?.length === 0) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
const draftChange = changes.find(
|
const draftChange = changes?.find(
|
||||||
({ isScheduledChange }) => !isScheduledChange,
|
({ isScheduledChange }) => !isScheduledChange,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -125,16 +134,12 @@ const renderHeaderChildren = (
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const scheduledChanges = changes.filter(
|
if (scheduledChanges && scheduledChanges.length > 0) {
|
||||||
({ isScheduledChange }) => isScheduledChange,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (scheduledChanges.length > 0) {
|
|
||||||
badges.push(
|
badges.push(
|
||||||
<ChangesScheduledBadge
|
<ChangesScheduledBadge
|
||||||
key='scheduled-changes'
|
key='scheduled-changes'
|
||||||
scheduledChangeRequestIds={scheduledChanges.map(
|
scheduledChangeRequestIds={scheduledChanges.map(
|
||||||
(scheduledChange) => scheduledChange.changeRequestId,
|
(scheduledChange) => scheduledChange.id,
|
||||||
)}
|
)}
|
||||||
/>,
|
/>,
|
||||||
);
|
);
|
||||||
|
@ -8,7 +8,7 @@ const fetcher = (path: string) => {
|
|||||||
.then((res) => res.json());
|
.then((res) => res.json());
|
||||||
};
|
};
|
||||||
|
|
||||||
type ChangeRequestIdentityData = {
|
export type ChangeRequestIdentityData = {
|
||||||
id: number;
|
id: number;
|
||||||
title?: string;
|
title?: string;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user