| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 | describe('example.personalLog.LogCtrl', function() {
  var logScope;
  beforeEach(function() {
    var injector = angular.injector(['ng', 'ngMock']);
    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();
    });
  });
});
 |