All files / src/services/tables/formatters CostEstimateFormatter.js

85.71% Statements 12/14
33.33% Branches 1/3
100% Functions 0/0
85.71% Lines 12/14
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    1x   1x 1x 1x 1x         3x 3x         3x 3x             3x       3x   3x                          
'use es6';
 
import CurrencySymbol from 'currency-symbol-map';
 
import DistanceUnit from '../../../data/DistanceUnit';
import DistanceConverter from '../../converters/DistanceConverter';
import DurationConverter from '../../converters/DurationConverter';
import Utilities from '../../../Utilities';
 
export default class CostEstimateFormatter {
 
  static formatRange(range) {
    const currencySymbol = CurrencySymbol(range.currencyCode);
    return `${currencySymbol}${range.min / 100} - ${currencySymbol}${range.max / 100}`;
  }
 
  static formatDistance(distance) {
    // 2 decimal places
    const roundedDistanceValue = Math.round(distance.value * 100) / 100;
    return `${roundedDistanceValue} ${CostEstimateFormatter.getDistanceUnitAbbreviation(distance.unit)}.`;
  }
 
  static formatDuration(duration) {
    // TODO @jbradley Utilities currently formats time in seconds - build better formatting logic
    // const durationInSeconds = DurationConverter.convert(duration, TimeUnit.SECOND);
    // return Utilities.generateFormattedTime(durationInSeconds.length);
    return Utilities.generateFormattedTime(duration.length);
  }
 
  static getDistanceUnitAbbreviation(unit) {
    switch (unit) {
      case DistanceUnit.MILE: {
        return 'mi';
      }
 
      case DistanceUnit.KILOMETER: {
        return 'km';
      }
 
      default: {
        throw new TypeError('Unexpected distance unit');
      }
    }
  }
}