Skip to content

Commit f5914e2

Browse files
committed
Fix for processing phases in challenge update
1 parent 67d72d4 commit f5914e2

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/common/phase-helper.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const _ = require("lodash");
22

3-
const { v4: uuid } = require('uuid');
3+
const uuid = require("uuid/v4");
44
const moment = require("moment");
55

66
const errors = require("./errors");
@@ -91,6 +91,7 @@ class ChallengePhaseHelper {
9191
timelineTemplateId
9292
);
9393
const { phaseDefinitionMap } = await this.getPhaseDefinitionsAndMap();
94+
const challengePhaseIds = new Set(_.map(challengePhases, "phaseId"));
9495

9596
// Ensure deterministic processing order based on the timeline template sequence
9697
// DB returns phases ordered by dates, which can cause "fixedStartDate" logic below
@@ -107,9 +108,18 @@ class ChallengePhaseHelper {
107108
const phaseFromTemplate = timelineTemplateMap.get(phase.phaseId);
108109
const phaseDefinition = phaseDefinitionMap.get(phase.phaseId);
109110
const newPhase = _.find(newPhases, (p) => p.phaseId === phase.phaseId);
111+
const templatePredecessor = _.get(phaseFromTemplate, "predecessor");
112+
// Prefer template predecessor only when that phase exists on the challenge, otherwise keep the stored link.
113+
const resolvedPredecessor = _.isNil(phaseFromTemplate)
114+
? phase.predecessor
115+
: _.isNil(templatePredecessor)
116+
? null
117+
: challengePhaseIds.has(templatePredecessor)
118+
? templatePredecessor
119+
: phase.predecessor;
110120
const updatedPhase = {
111121
...phase,
112-
predecessor: phaseFromTemplate && phaseFromTemplate.predecessor,
122+
predecessor: resolvedPredecessor,
113123
description: phaseDefinition.description,
114124
};
115125
if (updatedPhase.name === "Post-Mortem") {
@@ -157,6 +167,9 @@ class ChallengePhaseHelper {
157167
const predecessorPhase = _.find(updatedPhases, {
158168
phaseId: phase.predecessor,
159169
});
170+
if (_.isNil(predecessorPhase)) {
171+
continue;
172+
}
160173
if (phase.name === "Iterative Review") {
161174
if (!iterativeReviewSet) {
162175
if (_.isNil(phase.actualStartDate)) {

0 commit comments

Comments
 (0)