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');
...