Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit da9f4df

Browse files
committed
feat(TzDate): add support for toISOString method
1 parent ac4318a commit da9f4df

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

src/ngMock/angular-mocks.js

+27-1
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,19 @@ angular.mock.$LogProvider = function() {
397397
return parseInt(str, 10);
398398
}
399399

400+
function padNumber(num, digits, trim) {
401+
var neg = '';
402+
if (num < 0) {
403+
neg = '-';
404+
num = -num;
405+
}
406+
num = '' + num;
407+
while(num.length < digits) num = '0' + num;
408+
if (trim)
409+
num = num.substr(num.length - digits);
410+
return neg + num;
411+
}
412+
400413

401414
/**
402415
* @ngdoc object
@@ -523,12 +536,25 @@ angular.mock.$LogProvider = function() {
523536
return self.date.getDay();
524537
};
525538

539+
// provide this method only on browsers that already have it
540+
if (self.toISOString) {
541+
self.toISOString = function() {
542+
return padNumber(self.origDate.getUTCFullYear(), 4) + '-' +
543+
padNumber(self.origDate.getUTCMonth() + 1, 2) + '-' +
544+
padNumber(self.origDate.getUTCDate(), 2) + 'T' +
545+
padNumber(self.origDate.getUTCHours(), 2) + ':' +
546+
padNumber(self.origDate.getUTCMinutes(), 2) + ':' +
547+
padNumber(self.origDate.getUTCSeconds(), 2) + '.' +
548+
padNumber(self.origDate.getUTCMilliseconds(), 3) + 'Z'
549+
}
550+
}
551+
526552
//hide all methods not implemented in this mock that the Date prototype exposes
527553
var unimplementedMethods = ['getMilliseconds', 'getUTCDay',
528554
'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',
529555
'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
530556
'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds',
531-
'setYear', 'toDateString', 'toJSON', 'toGMTString', 'toLocaleFormat', 'toLocaleString',
557+
'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString',
532558
'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf'];
533559

534560
angular.forEach(unimplementedMethods, function(methodName) {

test/ngMock/angular-mocksSpec.js

+11
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,17 @@ describe('ngMock', function() {
6363
});
6464

6565

66+
it('should fake toISOString method', function() {
67+
var date = new angular.mock.TzDate(-1, '2009-10-09T01:02:03.027Z');
68+
69+
if (new Date().toISOString) {
70+
expect(date.toISOString()).toEqual('2009-10-09T01:02:03.027Z');
71+
} else {
72+
expect(date.toISOString).toBeUndefined();
73+
}
74+
});
75+
76+
6677
it('should fake getHours method', function() {
6778
//0 in -3h
6879
var t0 = new angular.mock.TzDate(-3, 0);

0 commit comments

Comments
 (0)