All files / libs/tenants/users/profile/components/src/lib/integrations/helpers has-user-integrations.ts

100% Statements 36/36
100% Branches 12/12
100% Functions 1/1
100% Lines 36/36

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 371x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 1x 1x 29x 30x 4x 4x 25x 30x 5x 5x 20x 20x 20x  
import { UserExternalIdSource, UserHrisIdSource } from '@amalia/tenants/users/types';
 
import { type UserIntegrationsInfo } from '../types';
 
export enum HasUserIntegrations {
  NONE = 'NONE',
  EXTERNAL_ONLY = 'EXTERNAL_ONLY',
  HRIS_ONLY = 'HRIS_ONLY',
  BOTH = 'BOTH',
}
 
export const deriveHasUserIntegrations = ({
  externalId,
  externalIdSource = UserExternalIdSource.OTHERSOURCE,
  hrisId,
  hrisIdSource = UserHrisIdSource.OTHERSOURCE,
}: UserIntegrationsInfo): HasUserIntegrations => {
  const isExternalIdSourceNone = !externalId || externalIdSource === UserExternalIdSource.NONE;
  const isHrisIdSourceNone = !hrisId || hrisIdSource === UserHrisIdSource.NONE;
 
  const areBothSourcesNone = isExternalIdSourceNone && isHrisIdSourceNone;
 
  if (areBothSourcesNone) {
    return HasUserIntegrations.NONE;
  }
 
  if (isExternalIdSourceNone && !isHrisIdSourceNone) {
    return HasUserIntegrations.HRIS_ONLY;
  }
 
  if (!isExternalIdSourceNone && isHrisIdSourceNone) {
    return HasUserIntegrations.EXTERNAL_ONLY;
  }
 
  return HasUserIntegrations.BOTH;
};