All files / src/shared/GiveExportModal/hooks/merchantTable merchantTableReserveDate.ts

100% Statements 12/12
75% Branches 9/12
100% Functions 5/5
100% Lines 12/12

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          28x 16x           8x 8x   8x       8x 16x         8x 8x   8x       8x               5x    
type ReserveMonthlyDateRange = {
  startDate?: Date | null;
  endDate?: Date | null;
};
 
const isValidDate = (date?: Date | null): date is Date =>
  date instanceof Date && !Number.isNaN(date.getTime());
 
export function formatReserveMonthlyRangeToken({
  startDate,
  endDate,
}: ReserveMonthlyDateRange) {
  const start = isValidDate(startDate) ? startDate : new Date();
  const rawEnd = isValidDate(endDate) ? endDate : start;
  const end =
    rawEnd > start && rawEnd.getDate() === 1
      ? new Date(rawEnd.getFullYear(), rawEnd.getMonth(), 0)
      : rawEnd;
 
  const formatMonthYear = (date: Date) =>
    date
      .toLocaleString("en-US", { month: "short", year: "numeric" })
      .replace(" ", "")
      .toUpperCase();
 
  const startLabel = formatMonthYear(start);
  const endLabel = formatMonthYear(end);
 
  return startLabel === endLabel ? startLabel : `${startLabel}_TO_${endLabel}`;
}
 
export function buildReserveMonthlyFileName(dateRange: ReserveMonthlyDateRange) {
  return `GIVE_${formatReserveMonthlyRangeToken(
    dateRange,
  )}_MERCHANT_RESERVE`;
}
 
export function buildReserveMonthlyFileNamePrefix(
  dateRange: ReserveMonthlyDateRange,
) {
  return `${buildReserveMonthlyFileName(dateRange)}_`;
}