Commits

Andreas Awouters authored c1fa52ee64e
118220: Store messages with ID so clears can be targeted
No tags

src/app/shared/live-region/live-region.service.spec.ts

Modified
1 1 import { LiveRegionService } from './live-region.service';
2 2 import { fakeAsync, tick, flush } from '@angular/core/testing';
3 +import { UUIDService } from '../../core/shared/uuid.service';
3 4
4 5 describe('liveRegionService', () => {
5 6 let service: LiveRegionService;
6 7
7 -
8 8 beforeEach(() => {
9 - service = new LiveRegionService();
9 + service = new LiveRegionService(
10 + new UUIDService(),
11 + );
10 12 });
11 13
12 14 describe('addMessage', () => {
13 15 it('should correctly add messages', () => {
14 16 expect(service.getMessages().length).toEqual(0);
15 17
16 18 service.addMessage('Message One');
17 19 expect(service.getMessages().length).toEqual(1);
18 20 expect(service.getMessages()[0]).toEqual('Message One');
19 21
78 80 expect(results.length).toEqual(3);
79 81 expect(results[2]).toEqual(['Message One', 'Message Two']);
80 82
81 83 service.clear();
82 84 flush();
83 85
84 86 expect(results.length).toEqual(4);
85 87 expect(results[3]).toEqual([]);
86 88 }));
87 89
90 + it('should not pop messages added after clearing within timeOut period', fakeAsync(() => {
91 + const results: string[][] = [];
92 +
93 + service.getMessages$().subscribe((messages) => {
94 + results.push(messages);
95 + });
96 +
97 + expect(results.length).toEqual(1);
98 + expect(results[0]).toEqual([]);
99 +
100 + service.addMessage('Message One');
101 + tick(10000);
102 + service.clear();
103 + tick(15000);
104 + service.addMessage('Message Two');
105 +
106 + // Message Two should not be cleared after 5 more seconds
107 + tick(5000);
108 +
109 + expect(results.length).toEqual(4);
110 + expect(results[3]).toEqual(['Message Two']);
111 +
112 + // But should be cleared 30 seconds after it was added
113 + tick(25000);
114 + expect(results.length).toEqual(5);
115 + expect(results[4]).toEqual([]);
116 + }));
117 +
88 118 it('should respect configured timeOut', fakeAsync(() => {
89 119 const results: string[][] = [];
90 120
91 121 service.getMessages$().subscribe((messages) => {
92 122 results.push(messages);
93 123 });
94 124
95 125 expect(results.length).toEqual(1);
96 126 expect(results[0]).toEqual([]);
97 127

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut