Skip to content

Commit 7cf7b5e

Browse files
author
taylorhakes
committed
Changed testing library from jasmine to painless
1 parent 847aa00 commit 7cf7b5e

File tree

3 files changed

+150
-207
lines changed

3 files changed

+150
-207
lines changed

fecha.spec.js

-199
This file was deleted.

package.json

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "fecha",
3-
"version": "1.2.0",
3+
"version": "1.2.1",
44
"description": "Date formatting and parsing",
55
"main": "fecha.js",
66
"scripts": {
7-
"test": "node_modules/karma/bin/karma start"
7+
"test": "node test.js"
88
},
99
"repository": {
1010
"type": "git",
@@ -25,13 +25,9 @@
2525
},
2626
"homepage": "https://github.com/taylorhakes/fecha",
2727
"devDependencies": {
28-
"karma": "^0.12.31",
29-
"jasmine-core": "^2.1.3",
30-
"karma-jasmine": "^0.3.4",
31-
"karma-phantomjs-launcher": "^0.1.4",
32-
"karma-coverage": "^0.2.7",
3328
"gulp": "^3.8.10",
29+
"gulp-rename": "^1.2.0",
3430
"gulp-uglify": "^1.0.2",
35-
"gulp-rename": "^1.2.0"
31+
"painless": "^0.2.2"
3632
}
3733
}

test.js

+146
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
var painless = require('painless');
2+
var fecha = require('./fecha');
3+
var test = painless.test;
4+
var assert = painless.assert;
5+
var today = new Date();
6+
var year = today.getFullYear();
7+
8+
function testParse(name, str, format, date) {
9+
test(name, function() {
10+
assert.equal(+fecha.parse(str, format), +date);
11+
});
12+
}
13+
14+
function testFormat(name, dateObj, format, expected) {
15+
test(name, function () {
16+
assert.equal(fecha.format(dateObj, format), expected);
17+
});
18+
}
19+
20+
testParse('basic date parse', '2012/05/03', 'YYYY/MM/DD', new Date(2012, 4, 3));
21+
testParse('basic date parse with time', '2012/05/03 05:01:40', 'YYYY/MM/DD HH:mm:ss', new Date(2012, 4, 3, 5, 1, 40));
22+
testParse('date with different slashes', '2012-05-03 05:01:40', 'YYYY-MM-DD HH:mm:ss', new Date(2012, 4, 3, 5, 1, 40));
23+
testParse('date with different order', '11-7-97', 'D-M-YY', new Date(1997, 6, 11));
24+
testParse('date very short', '2-8-04', 'D-M-YY', new Date(2004, 7, 2));
25+
testParse('compact', '11081997', 'MMDDYYYY', new Date(1997, 10, 8));
26+
testParse('month names', 'March 3rd, 1999', 'MMMM Do, YYYY', new Date(1999, 2, 3));
27+
testParse('month names short', 'Jun 12, 2003', 'MMM D, YYYY', new Date(2003, 5, 12));
28+
testParse('day name', 'Wednesday Feb 03, 2100', 'dddd MMM DD, YYYY', new Date(2100, 1, 3));
29+
testParse('ampm 10PM', '2015-11-07 10PM', 'YYYY-MM-DD hhA', new Date(2015, 10, 7, 22));
30+
testParse('ampm 9AM', '2015-11-07 9AM', 'YYYY-MM-DD hhA', new Date(2015, 10, 7, 9));
31+
testParse('ampm 12am', '2000-01-01 12AM', 'YYYY-MM-DD hhA', new Date(2000, 0, 1, 0));
32+
testParse('ampm 3am', '2000-01-01 12AM', 'YYYY-MM-DD hhA', new Date(2000, 0, 1, 0));
33+
testParse('ampm am lowercase', '2000-01-01 11am', 'YYYY-MM-DD hha', new Date(2000, 0, 1, 11));
34+
testParse('noon pm lowercase', '2000-01-01 12pm', 'YYYY-MM-DD hha', new Date(2000, 0, 1, 12));
35+
testParse('24 hour time long', '2000-01-01 20', 'YYYY-MM-DD HH', new Date(2000, 0, 1, 20));
36+
testParse('24 hour time long 02', '2000-01-01 02', 'YYYY-MM-DD HH', new Date(2000, 0, 1, 2));
37+
testParse('24 hour time short', '2000-01-01 3', 'YYYY-MM-DD H', new Date(2000, 0, 1, 3));
38+
testParse('milliseconds time', '10:20:30.123', 'HH:mm:ss.SSS', new Date(year, 0, 1, 10, 20, 30, 123));
39+
testParse('milliseconds medium', '10:20:30.12', 'HH:mm:ss.SS', new Date(year, 0, 1, 10, 20, 30, 120));
40+
testParse('milliseconds short', '10:20:30.1', 'HH:mm:ss.S', new Date(year, 0, 1, 10, 20, 30, 100));
41+
testParse('timezone offset', '09:20:31 GMT-0500 (EST)', 'HH:mm:ss ZZ', new Date(Date.UTC(year, 0, 1, 14, 20, 31)));
42+
testParse('UTC timezone offset', '09:20:31 GMT-0000 (UTC)', 'HH:mm:ss ZZ', new Date(Date.UTC(year, 0, 1, 9,20, 31)));
43+
testParse('invalid date', 'hello', 'HH:mm:ss ZZ', false);
44+
test('invalid date no format', function () {
45+
assert.throws(function () {
46+
fecha.parse('hello');
47+
});
48+
});
49+
test('no format specified', function () {
50+
assert.throws(function () {
51+
fecha.parse('2014-11-05', false);
52+
});
53+
});
54+
test('long input false', function () {
55+
var input = '';
56+
for (var i = 0; i < 1002; i++) {
57+
input += '1';
58+
}
59+
assert.isFalse(fecha.parse(input, 'HH'));
60+
});
61+
62+
// Day of the month
63+
testFormat('Day of the month', new Date(2014, 2, 5), 'D', '5');
64+
testFormat('Day of the month padded', new Date(2014, 2, 5), 'DD', '05');
65+
66+
// Day of the week
67+
testFormat('Day of the week short', new Date(2015, 0, 8), 'd', '4');
68+
testFormat('Day of the week long', new Date(2015, 0, 10), 'dd', '06');
69+
testFormat('Day of the week short name', new Date(2014, 2, 5), 'ddd', 'Wed');
70+
testFormat('Day of the week long name', new Date(2014, 2, 5), 'dddd', 'Wednesday');
71+
72+
// Month
73+
testFormat('Month', new Date(2014, 2, 5), 'M', '3');
74+
testFormat('Month padded', new Date(2014, 2, 5), 'MM', '03');
75+
testFormat('Month short name', new Date(2014, 2, 5), 'MMM', 'Mar');
76+
testFormat('Month full name mmmm', new Date(2014, 2, 5), 'MMMM', 'March');
77+
78+
// Year
79+
testFormat('Year short', new Date(2001, 2, 5), 'YY', '01');
80+
testFormat('Year long', new Date(2001, 2, 5), 'YYYY', '2001');
81+
82+
// Hour
83+
testFormat('Hour 12 hour short', new Date(2001, 2, 5, 6), 'h', '6');
84+
testFormat('Hour 12 hour padded', new Date(2001, 2, 5, 6), 'hh', '06');
85+
testFormat('Hour 12 hour short 2', new Date(2001, 2, 5, 14), 'h', '2');
86+
testFormat('Hour 12 hour padded 2', new Date(2001, 2, 5, 14), 'hh', '02');
87+
testFormat('Hour 24 hour short', new Date(2001, 2, 5, 13), 'H', '13');
88+
testFormat('Hour 24 hour padded', new Date(2001, 2, 5, 13), 'HH', '13');
89+
testFormat('Hour 24 hour short', new Date(2001, 2, 5, 3), 'H', '3');
90+
testFormat('Hour 24 hour padded', new Date(2001, 2, 5, 3), 'HH', '03');
91+
92+
// Minute
93+
testFormat('Minutes short', new Date(2001, 2, 5, 6, 7), 'm', '7');
94+
testFormat('Minutes padded', new Date(2001, 2, 5, 6, 7), 'mm', '07');
95+
96+
// Seconds
97+
testFormat('Seconds short', new Date(2001, 2, 5, 6, 7, 2), 's', '2');
98+
testFormat('Seconds padded', new Date(2001, 2, 5, 6, 7, 2), 'ss', '02');
99+
100+
// Milliseconds
101+
testFormat('milliseconds short', new Date(2001, 2, 5, 6, 7, 2, 500), 'S', '5');
102+
testFormat('milliseconds short 2', new Date(2001, 2, 5, 6, 7, 2, 2), 'S', '0');
103+
testFormat('milliseconds medium', new Date(2001, 2, 5, 6, 7, 2, 300), 'SS', '30');
104+
testFormat('milliseconds medium 2', new Date(2001, 2, 5, 6, 7, 2, 10), 'SS', '01');
105+
testFormat('milliseconds long', new Date(2001, 2, 5, 6, 7, 2, 5), 'SSS', '005');
106+
107+
// AM PM
108+
testFormat('ampm am', new Date(2001, 2, 5, 3, 7, 2, 5), 'a', 'am');
109+
testFormat('ampm pm', new Date(2001, 2, 5, 15, 7, 2, 5), 'a', 'pm');
110+
testFormat('ampm AM', new Date(2001, 2, 5, 3, 7, 2, 5), 'A', 'AM');
111+
testFormat('ampm PM', new Date(2001, 2, 5, 16, 7, 2, 5), 'A', 'PM');
112+
113+
// th, st, nd, rd
114+
testFormat('th', new Date(2001, 2, 11), 'Do', '11th');
115+
testFormat('st', new Date(2001, 2, 21), 'Do', '21st');
116+
testFormat('nd', new Date(2001, 2, 2), 'Do', '2nd');
117+
testFormat('rd', new Date(2001, 2, 23), 'Do', '23rd');
118+
119+
// Timezone offset
120+
test('timezone offset', function () {
121+
assert(fecha.format(new Date(2001, 2, 11), 'ZZ').match(/^[\+\-]\d{4}$/));
122+
});
123+
124+
// Random groupings
125+
testFormat('MM-DD-YYYY HH:mm:ss', new Date(2001, 2, 5, 6, 7, 2, 5), 'MM-DD-YYYY HH:mm:ss',
126+
'03-05-2001 06:07:02');
127+
testFormat('MMMM D, YY', new Date(1987, 0, 8, 6, 7, 2, 5), 'MMMM D, YY', 'January 8, 87');
128+
testFormat('M MMMM MM YYYY, YY', new Date(1987, 0, 8, 6, 7, 2, 5), 'M MMMM MM YYYY, YY',
129+
'1 January 01 1987, 87');
130+
testFormat('YYYY/MM/DD HH:mm:ss', new Date(2031, 10, 29, 2, 1, 9, 5), 'YYYY/MM/DD HH:mm:ss',
131+
'2031/11/29 02:01:09');
132+
testFormat('D-M-YYYY', new Date(2043, 8, 18, 2, 1, 9, 5), 'D-M-YYYY', '18-9-2043');
133+
testFormat('current date', new Date(), 'YYYY', '' + (new Date()).getFullYear());
134+
testFormat('mask', new Date(1999, 0, 2), 'mediumDate', 'Jan 2, 1999');
135+
136+
test('Invalid date', function () {
137+
assert.throws(function () {
138+
fecha.format('hello', 'YYYY');
139+
});
140+
});
141+
test('string date', function () {
142+
assert.throws(function () {
143+
fecha.format('2011-10-01', 'MM-DD-YYYY')
144+
})
145+
});
146+

0 commit comments

Comments
 (0)