Files
shields/lib/color-formatters.spec.js
chris48s 8ba33d419f [bower clojars] version() should throw on invalid inputs (#1705)
Throw Error in version() on invalid inputs
2018-05-28 20:08:30 +01:00

92 lines
2.8 KiB
JavaScript

'use strict';
const { test, given, forCases } = require('sazerac');
const { expect } = require('chai');
const {
coveragePercentage,
colorScale,
letterScore,
age,
version
} = require('./color-formatters');
describe('Color formatters', function() {
const byPercentage = colorScale([Number.EPSILON, 80, 90, 100]);
test(byPercentage, () => {
given(-1).expect('red');
given(0).expect('red');
given(0.5).expect('yellow');
given(1).expect('yellow');
given(50).expect('yellow');
given(80).expect('yellowgreen');
given(85).expect('yellowgreen');
given(90).expect('green');
given(100).expect('brightgreen');
given(101).expect('brightgreen');
forCases([-1, 0, 0.5, 1, 50, 80, 85, 90, 100, 101]
.map(v => given(v).expect(coveragePercentage(v))))
.should("return '%s', for parity with coveragePercentage()");
});
context('when reversed', function () {
test(colorScale([7, 30, 180, 365, 730], undefined, true), () => {
given(3).expect('brightgreen');
given(7).expect('green');
given(10).expect('green');
given(60).expect('yellowgreen');
given(250).expect('yellow');
given(400).expect('orange');
given(800).expect('red');
});
});
test(letterScore, () => {
given('A').expect('brightgreen');
given('B').expect('green');
given('C').expect('yellowgreen');
given('D').expect('yellow');
given('E').expect('orange');
given('F').expect('red');
given('Z').expect('red');
});
const monthsAgo = months => {
const result = new Date();
// This looks wack but it works.
result.setMonth(result.getMonth() - months);
return result;
};
test(age, () => {
given(Date.now()).describe('when given the current timestamp').expect('brightgreen');
given(new Date()).describe('when given the current Date').expect('brightgreen');
given(new Date(2001, 1, 1)).describe('when given a Date many years ago').expect('red');
given(monthsAgo(2)).describe('when given a Date two months ago').expect('yellowgreen');
given(monthsAgo(15)).describe('when given a Date 15 months ago').expect('orange');
});
test(version, () => {
forCases([
given('1.0'),
given(9),
given(1.0),
]).expect('blue');
forCases([
given(0.1),
given('0.9'),
given('1.0-Beta'),
given('1.1-alpha'),
given('6.0-SNAPSHOT'),
given('1.0.1-dev'),
given('2.1.6-prerelease'),
]).expect('orange');
expect(() => version(null)).to.throw(Error, "Can't generate a version color for null");
expect(() => version(undefined)).to.throw(Error, "Can't generate a version color for undefined");
expect(() => version(true)).to.throw(Error, "Can't generate a version color for true");
expect(() => version({})).to.throw(Error, "Can't generate a version color for [object Object]");
});
});