Skip to content

Commit 0e884f8

Browse files
authored
Merge pull request #1580 from topcoder-platform/PM-4636
PM-4636: make task reviewer optional
2 parents 7ece71a + b374f58 commit 0e884f8

5 files changed

Lines changed: 6 additions & 22 deletions

File tree

src/apps/work/src/lib/schemas/challenge-editor.schema.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ describe('challenge-editor schema task reviewer validation', () => {
3535
roundType: ROUND_TYPES.SINGLE_ROUND,
3636
}
3737

38-
it('requires reviewer for task internal review', async () => {
38+
it('does not require reviewer for task internal review', async () => {
3939
await expect(
4040
challengeAdvancedOptionsSchema.validate({
4141
...baseFormData,
@@ -46,8 +46,8 @@ describe('challenge-editor schema task reviewer validation', () => {
4646
reviewer: '',
4747
}),
4848
)
49-
.rejects
50-
.toThrow('Select a reviewer')
49+
.resolves
50+
.toBeTruthy()
5151
})
5252

5353
it('does not require reviewer for non-task internal review', async () => {

src/apps/work/src/lib/schemas/challenge-editor.schema.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -459,22 +459,7 @@ export const challengeAdvancedOptionsSchema = yup.object({
459459
.optional(),
460460
reviewer: yup.string()
461461
.transform(emptyStringToUndefined)
462-
.when([
463-
'legacy.isTask',
464-
'legacy.reviewType',
465-
], {
466-
is: (
467-
isTask: boolean | undefined,
468-
reviewType: string | undefined,
469-
): boolean => (
470-
isTask === true
471-
&& String(reviewType || '')
472-
.trim()
473-
.toUpperCase() === REVIEW_TYPES.INTERNAL
474-
),
475-
otherwise: schema => schema.optional(),
476-
then: schema => schema.required('Select a reviewer'),
477-
}),
462+
.optional(),
478463
reviewers: yup.array()
479464
.of(reviewerSchema)
480465
.optional(),

src/apps/work/src/pages/challenges/ChallengeEditorPage/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ The form uses `challengeBasicInfoSchema` from `src/apps/work/src/lib/schemas/cha
3030
- `wiproAllowed`: optional boolean, defaults to `false` (unchecked).
3131
- `tags`: optional string array.
3232
- `skills`: required unless billing account is listed in `SKILLS_OPTIONAL_BILLING_ACCOUNT_IDS`.
33-
- `reviewer`: required for task challenges when `legacy.reviewType` is `INTERNAL`.
33+
- `reviewer`: optional for task challenges.
3434
- `reviewers`: when using `Save as Draft` from `NEW` status, non-task/non-marathon challenges must include reviewer coverage for configured review phases. If required phases are configured, each phase must have at least one member reviewer with a scorecard.
3535
- `AI review configuration`: templates and manual configs autosave separately once valid, and the AI tab becomes read-only after the challenge has submissions.
3636

src/apps/work/src/pages/challenges/ChallengeEditorPage/components/ReviewTypeField/ReviewTypeField.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ describe('ReviewTypeField', () => {
103103
screen.getByTestId('reviewer-autocomplete')
104104
.getAttribute('data-required'),
105105
)
106-
.toBe('true')
106+
.toBe('false')
107107
})
108108

109109
it('forces task challenges to use the internal review type', async () => {

src/apps/work/src/pages/challenges/ChallengeEditorPage/components/ReviewTypeField/ReviewTypeField.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ export const ReviewTypeField: FC<ReviewTypeFieldProps> = (
8888
label='Reviewer'
8989
name='reviewer'
9090
placeholder='Search reviewer'
91-
required
9291
/>
9392
</div>
9493
)

0 commit comments

Comments
 (0)