describe('example.personalLog.LogCtrl', function() { var logScope; beforeEach(function() { var injector = angular.injector(['ng', 'ngMock', 'ngCookies']); logScope = injector.get('$rootScope'); logScope.$cookies = injector.get('$cookies'); injector.instantiate(example.personalLog.LogCtrl, {$scope: logScope}); }); it('should initialize notes with an empty array', function() { expect(logScope.logs).toEqual([]); }); describe('addLog', function() { beforeEach(function() { expect(logScope.logs).toEqual([]); }); it('should add newMsg to logs as a log entry', function() { logScope.newMsg = 'first log message'; logScope.addLog(); expect(logScope.logs.length).toBe(1); expect(logScope.logs[0].msg).toBe('first log message'); //one more msg, this time passed in as param logScope.addLog('second log message'); expect(logScope.logs.length).toBe(2); expect(logScope.logs[0].msg).toBe('first log message'); expect(logScope.logs[1].msg).toBe('second log message'); }); it('should clear newMsg when log entry is persisted', function() { logScope.addLog('first log message'); expect(logScope.newMsg).toBe(''); }); it('should store logs in the logs cookie', function() { expect(logScope.$cookies.logs).not.toBeDefined(); logScope.addLog('first log message'); expect(logScope.$cookies.logs).toBeTruthy(); }); it('should do nothing if newMsg is empty', function() { logScope.addLog(''); expect(logScope.logs.length).toBe(0); }); }); describe('rmLog', function() { beforeEach(function() { logScope.addLog('message1'); logScope.addLog('message2'); logScope.addLog('message3'); logScope.addLog('message4'); expect(logScope.logs.length).toBe(4); }); it('should delete a message identified by index', function() { logScope.rmLog(logScope.logs[1]); expect(logScope.logs.length).toBe(3); logScope.rmLog(logScope.logs[2]); expect(logScope.logs.length).toBe(2); expect(logScope.logs[0].msg).toBe('message1'); expect(logScope.logs[1].msg).toBe('message3'); }); it('should update cookies when a log is deleted', function() { expect(logScope.$cookies.logs).toMatch(/\[\{.*?\}(,\{.*?\}){3}\]/); logScope.rmLog(logScope.logs[1]); expect(logScope.$cookies.logs).toMatch(/\[\{.*?\}(,\{.*?\}){2}\]/); logScope.rmLog(logScope.logs[0]); logScope.rmLog(logScope.logs[0]); logScope.rmLog(logScope.logs[0]); expect(logScope.$cookies.logs).toMatch(/\[\]/); }); }); describe('rmLogs', function() { beforeEach(function() { logScope.addLog('message1'); logScope.addLog('message2'); logScope.addLog('message3'); logScope.addLog('message4'); expect(logScope.logs.length).toBe(4); }); it('should remove all logs', function() { logScope.rmLogs(); expect(logScope.logs).toEqual([]); }); it('should remove logs cookie', function() { expect(logScope.$cookies.logs).toBeTruthy(); logScope.rmLogs(); expect(logScope.$cookies.logs).not.toBeDefined(); }); }); });