Files
shields/lib/color-formatters.spec.js
Pyves 435903ae4a [CodeClimate] Fix remaining badges (#1387)
* Fixed remaining CodeClimate badges

* Added explicit percentage keyword and dropped top level URL

* Merged the two badge handlers into one

* Removed trailing space

* Switched to "dash" URL style

* Reinstated top-level URL

* Swicthed to use letter as optional keyword

* Updated badge examples

* Cleaned up

* Changed badge label to technical debt

* Switched tests to more mainstream projects as previous ones were deleted

* Rearranged badge URLs and default formats

* Updated examples
2018-02-01 09:33:29 +13:00

81 lines
2.3 KiB
JavaScript

'use strict';
const { test, given, forCases } = require('sazerac');
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, () => {
given('1.0').expect('blue');
forCases([
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');
});
});