All files mapRetrievedResult.ts

100% Statements 10/10
100% Branches 6/6
100% Functions 3/3
100% Lines 9/9

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    2x           2x   2x 1x           1x         2x 3x 3x 3x    
import { RetrieveResponseResult, RetrieveArgs } from './types';
 
const isNumeric = (str: string) => !isNaN(parseFloat(str));
 
interface CountryMappers {
  [countryCode: string]: (result: RetrieveResponseResult) => RetrieveResponseResult;
}
 
const countryMappers: CountryMappers = {
  ES(result: RetrieveResponseResult) {
    if (isNumeric(result.building_name) && !result.building_number) {
      return {
        ...result,
        building_name: '',
        building_number: result.building_name,
      }
    }
    return result;
  }
} as const;
 
 
export default function mapRetrievedResult(args: RetrieveArgs, result: RetrieveResponseResult) {
  const countryCode = args.country as keyof typeof countryMappers;
  const mapper = countryMappers[`${countryCode}`.toUpperCase()];
  return mapper ? mapper(result) : result;
}