All files / ee/app/assets/javascripts/iterations utils.js

92.85% Statements 26/28
75% Branches 6/8
100% Functions 7/7
92.3% Lines 24/26

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65    58x               215x 215x 215x                   36x 36x 50x 2x   48x 48x         48x 48x 16x   32x     36x       55x 55x 22x     22x 22x         22x 22x     22x     55x    
import { formatDate } from '~/lib/utils/datetime_utility';
 
const PERIOD_DATE_FORMAT = 'mmm d, yyyy';
 
/**
 * The arguments are two date strings in formatted in ISO 8601 (YYYY-MM-DD)
 *
 * @returns {string} ex. "Oct 1, 2021 - Oct 10, 2021"
 */
export function getIterationPeriod({ startDate, dueDate }) {
  const start = formatDate(startDate, PERIOD_DATE_FORMAT, true);
  const due = formatDate(dueDate, PERIOD_DATE_FORMAT, true);
  return `${start} - ${due}`;
}
 
/**
 * Group a list of iterations by cadence.
 *
 * @param iterations A list of iterations
 * @return {Array} A list of cadences
 */
export function groupByIterationCadences(iterations) {
  const cadences = [];
  iterations.forEach((iteration) => {
    if (!iteration.iterationCadence) {
      return;
    }
    const { title, id } = iteration.iterationCadence;
    const cadenceIteration = {
      id: iteration.id,
      title: iteration.title,
      period: getIterationPeriod(iteration),
    };
    const cadence = cadences.find((c) => c.title === title);
    if (cadence) {
      cadence.iterations.push(cadenceIteration);
    } else {
      cadences.push({ title, iterations: [cadenceIteration], id });
    }
  });
  return cadences;
}
 
export function groupOptionsByIterationCadences(iterations) {
  const cadences = [];
  iterations.forEach((iteration) => {
    Iif (!iteration.iterationCadence) {
      return;
    }
    const { title } = iteration.iterationCadence;
    const cadenceIteration = {
      value: iteration.id,
      title: iteration.title,
      text: getIterationPeriod(iteration),
    };
    const cadence = cadences.find((c) => c.text === title);
    Iif (cadence) {
      cadence.options.push(cadenceIteration);
    } else {
      cadences.push({ text: title, options: [cadenceIteration] });
    }
  });
  return cadences;
}