All files / libs/plan-agreements/shared/src/lib/business-rules/agreements/is-finalizable is-finalizable.ts

100% Statements 28/28
100% Branches 2/2
100% Functions 1/1
100% Lines 28/28

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 291x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import { PlanAgreementStatus, type PlanAgreement } from '@amalia/plan-agreements/types';
 
export const isPlanAgreementFinalizable = (
  planAgreement: Pick<
    PlanAgreement,
    | 'assignments'
    | 'error'
    | 'externalGoogleDocId'
    | 'googleDocFolderId'
    | 'internalGoogleDocId'
    | 'name'
    | 'plan'
    | 'status'
    | 'year'
  >,
): boolean =>
  PlanAgreementStatus.DRAFT === planAgreement.status &&
  [
    !planAgreement.error,
    !planAgreement.plan?.archived,
    planAgreement.externalGoogleDocId,
    planAgreement.assignments.length,
    planAgreement.googleDocFolderId,
    planAgreement.internalGoogleDocId,
    planAgreement.name,
    planAgreement.plan,
    planAgreement.year,
  ].every(Boolean);