Files
shields/lib/text-formatters.spec.js

93 lines
2.5 KiB
JavaScript

'use strict';
const { test, given } = require('sazerac');
const sinon = require('sinon');
const {
starRating,
currencyFromCode,
ordinalNumber,
metric,
omitv,
addv,
maybePluralize,
formatDate
} = require('./text-formatters');
describe('Text formatters', function() {
test(starRating, () => {
given(4.9).expect('★★★★★');
given(3.7).expect('★★★¾☆');
given(2.566).expect('★★½☆☆');
given(2.2).expect('★★¼☆☆');
given(3).expect('★★★☆☆');
});
test(currencyFromCode, () => {
given('CNY').expect('¥');
given('EUR').expect('€');
given('GBP').expect('₤');
given('USD').expect('$');
given('AUD').expect('AUD');
});
test(ordinalNumber, () => {
given(2).expect('2ⁿᵈ');
given(11).expect('11ᵗʰ');
given(23).expect('23ʳᵈ');
given(131).expect('131ˢᵗ');
});
test(metric, () => {
given(999).expect('999');
given(1000).expect('1k');
given(999499).expect('999k');
given(999500).expect('1M');
given(1578896212).expect('2G');
given(80000000000000).expect('80T');
given(4000000000000001).expect('4P');
given(71007000100580002000).expect('71E');
given(1000000000000000000000).expect('1Z');
given(2222222222222222222222222).expect('2Y');
});
test(omitv, () => {
given('hello').expect('hello');
given('v1.0.1').expect('1.0.1');
});
test(addv, () => {
given(9).expect('v9');
given(0.1).expect('v0.1');
given('1.0.0').expect('v1.0.0');
given('v0.6').expect('v0.6');
given('hello').expect('hello');
given('2017-05-05-Release-2.3.17').expect('2017-05-05-Release-2.3.17');
});
test(maybePluralize, () => {
given('foo', []).expect('foos');
given('foo', [123]).expect('foo');
given('foo', [123, 456]).expect('foos');
given('foo', undefined).expect('foos');
given('box', [], 'boxes').expect('boxes');
given('box', [123], 'boxes').expect('box');
given('box', [123, 456], 'boxes').expect('boxes');
given('box', undefined, 'boxes').expect('boxes');
});
test(formatDate, () => {
given(1465513200000).describe('when given a timestamp in june 2016').expect('june 2016');
});
context('in october', function () {
beforeEach(function () {
sinon.useFakeTimers(new Date(2017, 9, 15).getTime());
});
test(formatDate, () => {
given(new Date(2017, 0, 1).getTime()).describe('when given the beginning of this year').expect('january');
});
});
});