mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-04 00:18:01 +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(
|
||||
server,
|
||||
'/api/admin/projects/default/change-requests/pending/feature1',
|
||||
[scheduledRequest('updateStrategy')],
|
||||
[],
|
||||
);
|
||||
|
||||
testServerRoute(
|
||||
server,
|
||||
'/api/admin/projects/default/change-requests/scheduled',
|
||||
[{ id: 1 }],
|
||||
);
|
||||
|
||||
render(<Component />, {
|
||||
@ -336,6 +342,11 @@ describe('Change request badges for strategies', () => {
|
||||
'/api/admin/projects/default/change-requests/pending/feature1',
|
||||
[scheduledRequest('deleteStrategy')],
|
||||
);
|
||||
testServerRoute(
|
||||
server,
|
||||
'/api/admin/projects/default/change-requests/scheduled',
|
||||
[{ id: 1 }],
|
||||
);
|
||||
|
||||
render(<Component />, {
|
||||
route: '/projects/default/features/feature1',
|
||||
@ -359,6 +370,11 @@ describe('Change request badges for strategies', () => {
|
||||
draftRequest('updateStrategy', 1),
|
||||
],
|
||||
);
|
||||
testServerRoute(
|
||||
server,
|
||||
'/api/admin/projects/default/change-requests/scheduled',
|
||||
[{ id: 1 }],
|
||||
);
|
||||
|
||||
render(<Component />, {
|
||||
route: '/projects/default/features/feature1',
|
||||
@ -382,6 +398,11 @@ describe('Change request badges for strategies', () => {
|
||||
draftRequest('deleteStrategy', 1),
|
||||
],
|
||||
);
|
||||
testServerRoute(
|
||||
server,
|
||||
'/api/admin/projects/default/change-requests/scheduled',
|
||||
[{ id: 1 }],
|
||||
);
|
||||
|
||||
render(<Component />, {
|
||||
route: '/projects/default/features/feature1',
|
||||
@ -395,4 +416,45 @@ describe('Change request badges for strategies', () => {
|
||||
await screen.findByText('Changes Scheduled');
|
||||
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 { IFeatureChange } from 'component/changeRequest/changeRequest.types';
|
||||
import { Badge } from 'component/common/Badge/Badge';
|
||||
import {
|
||||
ChangeRequestIdentityData,
|
||||
useScheduledChangeRequestsWithStrategy,
|
||||
} from 'hooks/api/getters/useScheduledChangeRequestsWithStrategy/useScheduledChangeRequestsWithStrategy';
|
||||
|
||||
interface IStrategyDraggableItemProps {
|
||||
strategy: IFeatureStrategy;
|
||||
@ -51,6 +55,9 @@ export const StrategyDraggableItem = ({
|
||||
strategy.id,
|
||||
);
|
||||
|
||||
const { changeRequests: scheduledChangesUsingStrategy } =
|
||||
useScheduledChangeRequestsWithStrategy(projectId, strategy.id);
|
||||
|
||||
return (
|
||||
<Box
|
||||
key={strategy.id}
|
||||
@ -72,6 +79,7 @@ export const StrategyDraggableItem = ({
|
||||
orderNumber={index + 1}
|
||||
headerChildren={renderHeaderChildren(
|
||||
strategyChangesFromRequest,
|
||||
scheduledChangesUsingStrategy,
|
||||
)}
|
||||
/>
|
||||
</Box>
|
||||
@ -105,14 +113,15 @@ const ChangeRequestStatusBadge = ({
|
||||
};
|
||||
|
||||
const renderHeaderChildren = (
|
||||
changes: UseStrategyChangeFromRequestResult,
|
||||
changes?: UseStrategyChangeFromRequestResult,
|
||||
scheduledChanges?: ChangeRequestIdentityData[],
|
||||
): JSX.Element[] => {
|
||||
const badges: JSX.Element[] = [];
|
||||
if (changes.length === 0) {
|
||||
if (changes?.length === 0 && scheduledChanges?.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const draftChange = changes.find(
|
||||
const draftChange = changes?.find(
|
||||
({ isScheduledChange }) => !isScheduledChange,
|
||||
);
|
||||
|
||||
@ -125,16 +134,12 @@ const renderHeaderChildren = (
|
||||
);
|
||||
}
|
||||
|
||||
const scheduledChanges = changes.filter(
|
||||
({ isScheduledChange }) => isScheduledChange,
|
||||
);
|
||||
|
||||
if (scheduledChanges.length > 0) {
|
||||
if (scheduledChanges && scheduledChanges.length > 0) {
|
||||
badges.push(
|
||||
<ChangesScheduledBadge
|
||||
key='scheduled-changes'
|
||||
scheduledChangeRequestIds={scheduledChanges.map(
|
||||
(scheduledChange) => scheduledChange.changeRequestId,
|
||||
(scheduledChange) => scheduledChange.id,
|
||||
)}
|
||||
/>,
|
||||
);
|
||||
|
@ -8,7 +8,7 @@ const fetcher = (path: string) => {
|
||||
.then((res) => res.json());
|
||||
};
|
||||
|
||||
type ChangeRequestIdentityData = {
|
||||
export type ChangeRequestIdentityData = {
|
||||
id: number;
|
||||
title?: string;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user