formatNumberAsCurrencyEuro Unit Test

In response to: https://dev.to/programmiri/how-frontend-unit-testing-turned-from-a-fling-to-a-real-thing-for-me-6bk

by Tobi Obeck

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

JavaScript

function formatNumberAsCurrencyEuro_Locale(number){
  return number.toLocaleString('de-DE', {
    style: 'currency', 
    currency: 'EUR', 
    currencyDisplay: 'name',
    minimumFractionDigits: 0
  });
}

function formatNumberAsCurrencyEuro_Miri(sum) {
  var sumNum = sum.toString().split('').reverse();
  var sumFormatted = [];

  for (var i = 0; i < sumNum.length; i++) {
    var currNum = sumNum[i];

    if (i != 0 && i % 3 == 0) {
      sumFormatted.push('.');
    }

    sumFormatted.push(currNum);
  }

  if (sumFormatted.length > 0) {
    sumFormatted.reverse();
    sumFormatted.push(' Euro');
  }

  return sumFormatted.join('');
}


function formatNumberAsCurrencyEuro_Tobi(value) {
  if (typeof value === 'string') {
    return value;
  }

  let formattedValue = '';
	
  // these should be function parameters
  const thousandsSeparator = '.';
  const decimalSeparator = ',';
  const currencyName = 'Euro';

  let valueString = String(_.round(value, 2)); // lodash.round
  let decimalString = '';

  if (valueString.indexOf('.') !== -1) { // has decimal portion
    const splittedValue = valueString.split('.');
    valueString = splittedValue[0];
    decimalString = decimalSeparator + splittedValue[1];
  }

  for (var i = 0; i < valueString.length; i++) {
    var currentChar = valueString[valueString.length - 1 - i];

    if (i !== 0 && i % 3 === 0 && currentChar !== '-') {
      formattedValue = thousandsSeparator + formattedValue;
    }
    formattedValue = currentChar + formattedValue;
  }

  return formattedValue + decimalString + ' ' + currencyName;
}

function assertEqual(actual, expected) {
  if (expected === actual) {
    console.info('[SUCCESS] Is ' + expected);
  } else {
    console.error('[ERROR] Expected ' + actual + ' to be ' + expected);
  }
}

function tests(formatNumberAsCurrencyEuro) {
  console.log('\nTest results', formatNumberAsCurrencyEuro);

  assertEqual(formatNumberAsCurrencyEuro(-1234567), '-1.234.567 Euro');
 ...