All files / src/components CheckStatusInfo.tsx

33.33% Statements 5/15
16.66% Branches 1/6
100% Functions 1/1
33.33% Lines 5/15

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 66 67 68 69 70 71 72                                      2x                 2x                                                 2x 2x   2x                              
import { MouseEventHandler } from 'react'
 
import { CheckStatusApiResponse, StatusCode } from '../lib/types'
import ActionButton, { ActionButtonStyle } from './ActionButton'
import CheckStatusFileBeingProcessed from './check-status-responses/CheckStatusFileBeingProcessed'
import CheckStatusNoRecord from './check-status-responses/CheckStatusNoRecord'
import CheckStatusNotAcceptable from './check-status-responses/CheckStatusNotAcceptable'
import CheckStatusReadyForPickup from './check-status-responses/CheckStatusReadyForPickup'
import CheckStatusShippingCanadaPost from './check-status-responses/CheckStatusShippingCanadaPost'
import CheckStatusShippingFedex from './check-status-responses/CheckStatusShippingFedex'
 
export interface CheckStatusInfoProps {
  id: string
  onGoBackClick: MouseEventHandler<HTMLButtonElement>
  goBackText: string
  goBackStyle?: ActionButtonStyle
  checkStatusResponse?: CheckStatusApiResponse | null
}
 
export const CheckStatusInfo = ({
  goBackText,
  id,
  onGoBackClick,
  goBackStyle,
  checkStatusResponse,
}: CheckStatusInfoProps) => {
  //Determine which status response to render
  let statusComponent
  switch (checkStatusResponse?.status) {
    case StatusCode.FILE_BEING_PROCESSED:
      statusComponent = <CheckStatusFileBeingProcessed />
      break
    case StatusCode.PASSPORT_ISSUED_READY_FOR_PICKUP:
      statusComponent = <CheckStatusReadyForPickup />
      break
    case StatusCode.PASSPORT_ISSUED_SHIPPING_CANADA_POST:
      statusComponent = (
        <CheckStatusShippingCanadaPost
          trackingNumber={checkStatusResponse.manifestNumber}
        />
      )
      break
    case StatusCode.PASSPORT_ISSUED_SHIPPING_FEDEX:
      statusComponent = (
        <CheckStatusShippingFedex
          trackingNumber={checkStatusResponse.manifestNumber}
        />
      )
      break
    case StatusCode.NOT_ACCEPTABLE_FOR_PROCESSING:
      statusComponent = <CheckStatusNotAcceptable />
      break
    default:
      statusComponent = <CheckStatusNoRecord />
      break
  }
  return (
    <div id={id}>
      {statusComponent}
      <div className="my-8">
        <ActionButton
          onClick={onGoBackClick}
          text={goBackText}
          style={goBackStyle}
        />
      </div>
    </div>
  )
}
 
export default CheckStatusInfo