2011-07-17 08:05:43 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
describe('mocks', function() {
|
2011-05-17 18:42:41 +00:00
|
|
|
describe('TzDate', function() {
|
2010-10-26 23:44:59 +00:00
|
|
|
|
2011-05-17 18:42:41 +00:00
|
|
|
function minutes(min) {
|
|
|
|
|
return min*60*1000;
|
|
|
|
|
}
|
2010-10-26 23:44:59 +00:00
|
|
|
|
2011-11-08 05:54:01 +00:00
|
|
|
it('should look like a Date', function() {
|
2011-11-10 05:18:34 +00:00
|
|
|
var date = new angular.module.NG_MOCK.TzDate(0,0);
|
2011-11-08 05:54:01 +00:00
|
|
|
expect(angular.isDate(date)).toBe(true);
|
|
|
|
|
});
|
|
|
|
|
|
2011-05-17 18:42:41 +00:00
|
|
|
it('should take millis as constructor argument', function() {
|
2011-11-10 05:18:34 +00:00
|
|
|
expect(new angular.module.NG_MOCK.TzDate(0, 0).getTime()).toBe(0);
|
|
|
|
|
expect(new angular.module.NG_MOCK.TzDate(0, 1283555108000).getTime()).toBe(1283555108000);
|
2011-05-17 18:42:41 +00:00
|
|
|
});
|
2010-10-26 23:44:59 +00:00
|
|
|
|
2011-05-17 18:42:41 +00:00
|
|
|
it('should take dateString as constructor argument', function() {
|
2011-11-10 05:18:34 +00:00
|
|
|
expect(new angular.module.NG_MOCK.TzDate(0, '1970-01-01T00:00:00.000Z').getTime()).toBe(0);
|
|
|
|
|
expect(new angular.module.NG_MOCK.TzDate(0, '2010-09-03T23:05:08.023Z').getTime()).toBe(1283555108023);
|
2011-05-17 18:42:41 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should fake getLocalDateString method', function() {
|
|
|
|
|
//0 in -3h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t0 = new angular.module.NG_MOCK.TzDate(-3, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t0.toLocaleDateString()).toMatch('1970');
|
2010-10-26 23:44:59 +00:00
|
|
|
|
2011-05-17 18:42:41 +00:00
|
|
|
//0 in +0h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t1 = new angular.module.NG_MOCK.TzDate(0, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t1.toLocaleDateString()).toMatch('1970');
|
|
|
|
|
|
|
|
|
|
//0 in +3h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t2 = new angular.module.NG_MOCK.TzDate(3, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t2.toLocaleDateString()).toMatch('1969');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should fake getHours method', function() {
|
|
|
|
|
//0 in -3h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t0 = new angular.module.NG_MOCK.TzDate(-3, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t0.getHours()).toBe(3);
|
|
|
|
|
|
|
|
|
|
//0 in +0h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t1 = new angular.module.NG_MOCK.TzDate(0, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t1.getHours()).toBe(0);
|
|
|
|
|
|
|
|
|
|
//0 in +3h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t2 = new angular.module.NG_MOCK.TzDate(3, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t2.getHours()).toMatch(21);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should fake getMinutes method', function() {
|
|
|
|
|
//0:15 in -3h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t0 = new angular.module.NG_MOCK.TzDate(-3, minutes(15));
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t0.getMinutes()).toBe(15);
|
|
|
|
|
|
|
|
|
|
//0:15 in -3.25h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t0a = new angular.module.NG_MOCK.TzDate(-3.25, minutes(15));
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t0a.getMinutes()).toBe(30);
|
|
|
|
|
|
|
|
|
|
//0 in +0h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t1 = new angular.module.NG_MOCK.TzDate(0, minutes(0));
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t1.getMinutes()).toBe(0);
|
|
|
|
|
|
|
|
|
|
//0:15 in +0h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t1a = new angular.module.NG_MOCK.TzDate(0, minutes(15));
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t1a.getMinutes()).toBe(15);
|
|
|
|
|
|
|
|
|
|
//0:15 in +3h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t2 = new angular.module.NG_MOCK.TzDate(3, minutes(15));
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t2.getMinutes()).toMatch(15);
|
|
|
|
|
|
|
|
|
|
//0:15 in +3.25h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t2a = new angular.module.NG_MOCK.TzDate(3.25, minutes(15));
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t2a.getMinutes()).toMatch(0);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should fake getSeconds method', function() {
|
|
|
|
|
//0 in -3h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t0 = new angular.module.NG_MOCK.TzDate(-3, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t0.getSeconds()).toBe(0);
|
|
|
|
|
|
|
|
|
|
//0 in +0h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t1 = new angular.module.NG_MOCK.TzDate(0, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t1.getSeconds()).toBe(0);
|
|
|
|
|
|
|
|
|
|
//0 in +3h
|
2011-11-10 05:18:34 +00:00
|
|
|
var t2 = new angular.module.NG_MOCK.TzDate(3, 0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(t2.getSeconds()).toMatch(0);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should create a date representing new year in Bratislava', function() {
|
2011-11-10 05:18:34 +00:00
|
|
|
var newYearInBratislava = new angular.module.NG_MOCK.TzDate(-1, '2009-12-31T23:00:00.000Z');
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(newYearInBratislava.getTimezoneOffset()).toBe(-60);
|
|
|
|
|
expect(newYearInBratislava.getFullYear()).toBe(2010);
|
|
|
|
|
expect(newYearInBratislava.getMonth()).toBe(0);
|
|
|
|
|
expect(newYearInBratislava.getDate()).toBe(1);
|
|
|
|
|
expect(newYearInBratislava.getHours()).toBe(0);
|
|
|
|
|
expect(newYearInBratislava.getMinutes()).toBe(0);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should delegate all the UTC methods to the original UTC Date object', function() {
|
|
|
|
|
//from when created from string
|
2011-11-10 05:18:34 +00:00
|
|
|
var date1 = new angular.module.NG_MOCK.TzDate(-1, '2009-12-31T23:00:00.000Z');
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(date1.getUTCFullYear()).toBe(2009);
|
|
|
|
|
expect(date1.getUTCMonth()).toBe(11);
|
|
|
|
|
expect(date1.getUTCDate()).toBe(31);
|
|
|
|
|
expect(date1.getUTCHours()).toBe(23);
|
|
|
|
|
expect(date1.getUTCMinutes()).toBe(0);
|
|
|
|
|
expect(date1.getUTCSeconds()).toBe(0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//from when created from millis
|
2011-11-10 05:18:34 +00:00
|
|
|
var date2 = new angular.module.NG_MOCK.TzDate(-1, date1.getTime());
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(date2.getUTCFullYear()).toBe(2009);
|
|
|
|
|
expect(date2.getUTCMonth()).toBe(11);
|
|
|
|
|
expect(date2.getUTCDate()).toBe(31);
|
|
|
|
|
expect(date2.getUTCHours()).toBe(23);
|
|
|
|
|
expect(date2.getUTCMinutes()).toBe(0);
|
|
|
|
|
expect(date2.getUTCSeconds()).toBe(0);
|
|
|
|
|
});
|
2011-07-18 22:31:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should throw error when no third param but toString called', function() {
|
2011-11-10 05:18:34 +00:00
|
|
|
expect(function() { new angular.module.NG_MOCK.TzDate(0,0).toString(); }).
|
2011-07-14 19:02:01 +00:00
|
|
|
toThrow('Method \'toString\' is not implemented in the TzDate mock');
|
|
|
|
|
});
|
2011-05-17 18:42:41 +00:00
|
|
|
});
|
|
|
|
|
|
2011-11-02 23:32:46 +00:00
|
|
|
describe('$log', function() {
|
2011-05-17 18:42:41 +00:00
|
|
|
var $log;
|
2011-11-02 23:32:46 +00:00
|
|
|
beforeEach(inject(['$log', function(log) {
|
|
|
|
|
$log = log;
|
|
|
|
|
}]));
|
|
|
|
|
|
|
|
|
|
afterEach(inject(function($log){
|
|
|
|
|
$log.reset();
|
|
|
|
|
}));
|
2011-05-17 18:42:41 +00:00
|
|
|
|
|
|
|
|
it('should provide log method', function() {
|
|
|
|
|
expect(function() { $log.log(''); }).not.toThrow();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should provide info method', function() {
|
|
|
|
|
expect(function() { $log.info(''); }).not.toThrow();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should provide warn method', function() {
|
|
|
|
|
expect(function() { $log.warn(''); }).not.toThrow();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should provide error method', function() {
|
|
|
|
|
expect(function() { $log.error(''); }).not.toThrow();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should store log messages', function() {
|
|
|
|
|
$log.log('fake log');
|
|
|
|
|
expect($log.log.logs).toContain(['fake log']);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should store info messages', function() {
|
|
|
|
|
$log.info('fake log');
|
|
|
|
|
expect($log.info.logs).toContain(['fake log']);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should store warn messages', function() {
|
|
|
|
|
$log.warn('fake log');
|
|
|
|
|
expect($log.warn.logs).toContain(['fake log']);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should store error messages', function() {
|
|
|
|
|
$log.error('fake log');
|
|
|
|
|
expect($log.error.logs).toContain(['fake log']);
|
|
|
|
|
});
|
2011-11-02 23:32:46 +00:00
|
|
|
|
|
|
|
|
it('should assertEmpty', function(){
|
|
|
|
|
try {
|
|
|
|
|
$log.error(Error('MyError'));
|
|
|
|
|
$log.warn(Error('MyWarn'));
|
|
|
|
|
$log.info(Error('MyInfo'));
|
|
|
|
|
$log.log(Error('MyLog'));
|
|
|
|
|
$log.assertEmpty();
|
|
|
|
|
} catch (error) {
|
|
|
|
|
error = error.message || error;
|
|
|
|
|
expect(error).toMatch(/Error: MyError/m);
|
|
|
|
|
expect(error).toMatch(/Error: MyWarn/m);
|
|
|
|
|
expect(error).toMatch(/Error: MyInfo/m);
|
|
|
|
|
expect(error).toMatch(/Error: MyLog/m);
|
|
|
|
|
} finally {
|
|
|
|
|
$log.reset();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should reset state', function(){
|
|
|
|
|
$log.error(Error('MyError'));
|
|
|
|
|
$log.warn(Error('MyWarn'));
|
|
|
|
|
$log.info(Error('MyInfo'));
|
|
|
|
|
$log.log(Error('MyLog'));
|
|
|
|
|
$log.reset();
|
|
|
|
|
var passed = false;
|
|
|
|
|
try {
|
|
|
|
|
$log.assertEmpty(); // should not throw error!
|
|
|
|
|
passed = true;
|
|
|
|
|
} catch (e) {
|
|
|
|
|
passed = e;
|
|
|
|
|
}
|
|
|
|
|
expect(passed).toBe(true);
|
|
|
|
|
});
|
2011-05-17 18:42:41 +00:00
|
|
|
});
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
describe('defer', function() {
|
2011-05-17 18:42:41 +00:00
|
|
|
var browser, log;
|
2011-11-02 23:32:46 +00:00
|
|
|
beforeEach(inject(function($browser) {
|
|
|
|
|
browser = $browser;
|
2011-05-17 18:42:41 +00:00
|
|
|
log = '';
|
2011-11-02 23:32:46 +00:00
|
|
|
}));
|
2011-05-17 18:42:41 +00:00
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
function logFn(text){ return function() {
|
2011-05-17 18:42:41 +00:00
|
|
|
log += text +';';
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
it('should flush', function() {
|
2011-05-17 18:42:41 +00:00
|
|
|
browser.defer(logFn('A'));
|
|
|
|
|
expect(log).toEqual('');
|
|
|
|
|
browser.defer.flush();
|
|
|
|
|
expect(log).toEqual('A;');
|
|
|
|
|
});
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
it('should flush delayed', function() {
|
2011-05-17 18:42:41 +00:00
|
|
|
browser.defer(logFn('A'));
|
|
|
|
|
browser.defer(logFn('B'), 10);
|
|
|
|
|
browser.defer(logFn('C'), 20);
|
|
|
|
|
expect(log).toEqual('');
|
|
|
|
|
|
|
|
|
|
expect(browser.defer.now).toEqual(0);
|
2011-07-02 00:03:50 +00:00
|
|
|
browser.defer.flush(0);
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(log).toEqual('A;');
|
|
|
|
|
|
2011-07-02 00:03:50 +00:00
|
|
|
browser.defer.flush();
|
2011-05-17 18:42:41 +00:00
|
|
|
expect(log).toEqual('A;B;C;');
|
2011-05-17 20:13:16 +00:00
|
|
|
});
|
|
|
|
|
|
2011-10-07 18:27:49 +00:00
|
|
|
it('should defer and flush over time', function() {
|
2011-05-17 20:13:16 +00:00
|
|
|
browser.defer(logFn('A'), 1);
|
|
|
|
|
browser.defer(logFn('B'), 2);
|
|
|
|
|
browser.defer(logFn('C'), 3);
|
|
|
|
|
|
|
|
|
|
browser.defer.flush(0);
|
|
|
|
|
expect(browser.defer.now).toEqual(0);
|
|
|
|
|
expect(log).toEqual('');
|
|
|
|
|
|
|
|
|
|
browser.defer.flush(1);
|
|
|
|
|
expect(browser.defer.now).toEqual(1);
|
|
|
|
|
expect(log).toEqual('A;');
|
2011-05-17 18:42:41 +00:00
|
|
|
|
2011-05-17 20:13:16 +00:00
|
|
|
browser.defer.flush(2);
|
|
|
|
|
expect(browser.defer.now).toEqual(3);
|
|
|
|
|
expect(log).toEqual('A;B;C;');
|
2011-05-17 18:42:41 +00:00
|
|
|
});
|
2010-10-26 23:44:59 +00:00
|
|
|
});
|
|
|
|
|
|
2011-07-02 00:37:01 +00:00
|
|
|
|
|
|
|
|
describe('$exceptionHandler', function() {
|
2011-10-17 23:56:56 +00:00
|
|
|
it('should rethrow exceptions', inject(function($exceptionHandler) {
|
|
|
|
|
expect(function() { $exceptionHandler('myException'); }).toThrow('myException');
|
|
|
|
|
}));
|
2011-11-02 23:32:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should log exceptions', inject(function($exceptionHandlerProvider){
|
|
|
|
|
$exceptionHandlerProvider.mode('log');
|
|
|
|
|
var $exceptionHandler = $exceptionHandlerProvider.$get();
|
|
|
|
|
$exceptionHandler('MyError');
|
|
|
|
|
expect($exceptionHandler.errors).toEqual(['MyError']);
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should thorw on wrong argument', inject(function($exceptionHandlerProvider) {
|
|
|
|
|
expect(function() {
|
|
|
|
|
$exceptionHandlerProvider.mode('XXX');
|
|
|
|
|
}).toThrow("Unknown mode 'XXX', only 'log'/'rethrow' modes are allowed!");
|
|
|
|
|
}));
|
2011-07-02 00:37:01 +00:00
|
|
|
});
|
2011-11-04 19:33:01 +00:00
|
|
|
|
|
|
|
|
|
2011-11-10 05:18:34 +00:00
|
|
|
describe('angular.module.NG_MOCK.dump', function(){
|
|
|
|
|
var d = angular.module.NG_MOCK.dump;
|
2011-11-04 19:33:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should serialize primitive types', function(){
|
|
|
|
|
expect(d(undefined)).toEqual('undefined');
|
|
|
|
|
expect(d(1)).toEqual('1');
|
|
|
|
|
expect(d(null)).toEqual('null');
|
|
|
|
|
expect(d('abc')).toEqual('abc');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should serialize element', function(){
|
|
|
|
|
var e = angular.element('<div>abc</div><span>xyz</span>');
|
|
|
|
|
expect(d(e).toLowerCase()).toEqual('<div>abc</div><span>xyz</span>');
|
|
|
|
|
expect(d(e[0]).toLowerCase()).toEqual('<div>abc</div>');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('should serialize scope', inject(function($rootScope){
|
|
|
|
|
$rootScope.obj = {abc:'123'};
|
|
|
|
|
expect(d($rootScope)).toMatch(/Scope\(.*\): \{/);
|
|
|
|
|
expect(d($rootScope)).toMatch(/{"abc":"123"}/);
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('should be published on window', function(){
|
|
|
|
|
expect(window.dump instanceof Function).toBe(true);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('jasmine inject', function(){
|
|
|
|
|
it('should call invoke', function(){
|
|
|
|
|
var count = 0;
|
|
|
|
|
function fn1(){
|
|
|
|
|
expect(this).toBe(self);
|
|
|
|
|
count++;
|
|
|
|
|
}
|
|
|
|
|
function fn2(){
|
|
|
|
|
expect(this).toBe(self);
|
|
|
|
|
count++;
|
|
|
|
|
}
|
|
|
|
|
var fn = inject(fn1, fn2);
|
|
|
|
|
var self = {
|
|
|
|
|
$injector: {
|
|
|
|
|
invoke: function(self, fn) { fn.call(self); }
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
fn.call(self);
|
|
|
|
|
expect(count).toBe(2);
|
|
|
|
|
});
|
|
|
|
|
});
|
2011-02-04 01:32:55 +00:00
|
|
|
});
|