1- import { deriveChapterOwnershipState } from './chapterOwnershipState' ;
1+ import {
2+ deriveChapterOwnershipState ,
3+ resolveStageAssigneeId ,
4+ } from './chapterOwnershipState' ;
25
36describe ( 'deriveChapterOwnershipState' , ( ) => {
47 it ( 'returns unassigned when there is no assigned user' , ( ) => {
@@ -15,3 +18,34 @@ describe('deriveChapterOwnershipState', () => {
1518 expect ( deriveChapterOwnershipState ( 42 , null ) ) . toBe ( 'other' ) ;
1619 } ) ;
1720} ) ;
21+
22+ describe ( 'resolveStageAssigneeId' , ( ) => {
23+ it ( 'returns the drafter at Drafting (draft or not_started)' , ( ) => {
24+ expect ( resolveStageAssigneeId ( 'draft' , 42 , 99 ) ) . toBe ( 42 ) ;
25+ expect ( resolveStageAssigneeId ( 'not_started' , 42 , 99 ) ) . toBe ( 42 ) ;
26+ } ) ;
27+
28+ it ( 'returns null at Drafting when no drafter is assigned' , ( ) => {
29+ expect ( resolveStageAssigneeId ( 'not_started' , null , 99 ) ) . toBeNull ( ) ;
30+ } ) ;
31+
32+ it ( 'returns the PM-assigned peer checker at Peer Check' , ( ) => {
33+ expect ( resolveStageAssigneeId ( 'peer_check' , 42 , 99 ) ) . toBe ( 99 ) ;
34+ } ) ;
35+
36+ it ( 'returns null/undefined at Peer Check when open/unassigned (#442)' , ( ) => {
37+ expect ( resolveStageAssigneeId ( 'peer_check' , 42 , null ) ) . toBeNull ( ) ;
38+ expect ( resolveStageAssigneeId ( 'peer_check' , 42 , undefined ) ) . toBeUndefined ( ) ;
39+ } ) ;
40+
41+ it ( 'returns null for stages with no assignee concept' , ( ) => {
42+ expect ( resolveStageAssigneeId ( 'community_review' , 42 , 99 ) ) . toBeNull ( ) ;
43+ expect ( resolveStageAssigneeId ( 'consultant_check' , 42 , 99 ) ) . toBeNull ( ) ;
44+ expect ( resolveStageAssigneeId ( 'complete' , 42 , 99 ) ) . toBeNull ( ) ;
45+ } ) ;
46+
47+ it ( 'returns null for unrecognized or null status' , ( ) => {
48+ expect ( resolveStageAssigneeId ( 'some_future_status' , 42 , 99 ) ) . toBeNull ( ) ;
49+ expect ( resolveStageAssigneeId ( null , 42 , 99 ) ) . toBeNull ( ) ;
50+ } ) ;
51+ } ) ;
0 commit comments