@@ -2,7 +2,7 @@ import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angul
2
2
import { RouterTestingModule } from '@angular/router/testing' ;
3
3
import { ActivatedRoute } from '@angular/router' ;
4
4
import { TranslateFakeLoader , TranslateLoader , TranslateModule , TranslateService } from '@ngx-translate/core' ;
5
- import { provideMockStore } from '@ngrx/store/testing' ;
5
+ import { provideMockStore , MockStore } from '@ngrx/store/testing' ;
6
6
import { Subject } from 'rxjs' ;
7
7
import sinon from 'sinon' ;
8
8
import { expect } from 'chai' ;
@@ -23,6 +23,7 @@ describe('AnalyticsTargetAggregatesDetailComponent', () => {
23
23
let targetAggregatesActions ;
24
24
let globalActions ;
25
25
let route ;
26
+ let store ;
26
27
27
28
beforeEach ( waitForAsync ( ( ) => {
28
29
targetAggregatesService = {
@@ -64,10 +65,12 @@ describe('AnalyticsTargetAggregatesDetailComponent', () => {
64
65
component = fixture . componentInstance ;
65
66
translateService = TestBed . inject ( TranslateService ) ;
66
67
fixture . detectChanges ( ) ;
68
+ store = TestBed . inject ( MockStore ) ;
67
69
} ) ;
68
70
} ) ) ;
69
71
70
72
afterEach ( ( ) => {
73
+ store . resetSelectors ( ) ;
71
74
sinon . restore ( ) ;
72
75
} ) ;
73
76
@@ -144,4 +147,59 @@ describe('AnalyticsTargetAggregatesDetailComponent', () => {
144
147
expect ( translateService . instant . callCount ) . to . equal ( 1 ) ;
145
148
expect ( translateService . instant . args [ 0 ] ) . to . deep . equal ( [ 'analytics.target.aggregates' , undefined ] ) ;
146
149
} ) ) ;
150
+
151
+ it ( 'should update title when aggregrates change' , fakeAsync ( ( ) => {
152
+ sinon . reset ( ) ;
153
+ targetAggregatesService . getAggregateDetails . returns ( {
154
+ an : 'aggregate' ,
155
+ translation_key : 'the_title' ,
156
+ heading : 'the translated title'
157
+ } ) ;
158
+ translateService . instant = sinon . stub ( ) . returns ( 'target aggregate' ) ;
159
+
160
+ route . params . next ( { id : 'target1' } ) ;
161
+ tick ( ) ;
162
+
163
+ expect ( targetAggregatesService . getAggregateDetails . callCount ) . to . equal ( 1 ) ;
164
+ expect ( targetAggregatesService . getAggregateDetails . args [ 0 ] ) . to . deep . equal ( [ 'target1' , [ 'aggregates' ] ] ) ;
165
+ expect ( globalActions . setShowContent . callCount ) . to . equal ( 1 ) ;
166
+ expect ( globalActions . setShowContent . args [ 0 ] [ 0 ] ) . to . equal ( true ) ;
167
+ expect ( globalActions . setTitle . callCount ) . to . equal ( 1 ) ;
168
+ expect ( globalActions . setTitle . args [ 0 ] [ 0 ] ) . to . equal ( 'target aggregate' ) ;
169
+ expect ( targetAggregatesActions . setSelectedTargetAggregate . callCount ) . to . equal ( 1 ) ;
170
+ expect ( targetAggregatesActions . setSelectedTargetAggregate . args [ 0 ] [ 0 ] ) . to . deep . equal ( {
171
+ an : 'aggregate' ,
172
+ translation_key : 'the_title' ,
173
+ heading : 'the translated title' ,
174
+ } ) ;
175
+ expect ( translateService . instant . callCount ) . to . equal ( 1 ) ;
176
+ expect ( translateService . instant . args [ 0 ] ) . to . deep . equal ( [ 'analytics.target.aggregates' , undefined ] ) ;
177
+
178
+ // Selecting a different user's facility which triggers changes to the aggregates
179
+ const newAggregates = [ 'new aggregate 1' , 'new aggregate 2' ] ;
180
+ store . overrideSelector ( Selectors . getTargetAggregates , newAggregates ) ;
181
+ store . refreshState ( ) ;
182
+
183
+ targetAggregatesService . getAggregateDetails . returns ( {
184
+ an : 'aggregate1_updated' ,
185
+ translation_key : 'title1_updated' ,
186
+ heading : 'translated title 1 updated'
187
+ } ) ;
188
+ translateService . instant = sinon . stub ( ) . returns ( 'target aggregate 1 updated' ) ;
189
+
190
+ tick ( ) ;
191
+
192
+ expect ( targetAggregatesService . getAggregateDetails . callCount ) . to . equal ( 2 ) ;
193
+ expect ( targetAggregatesService . getAggregateDetails . args [ 1 ] ) . to . deep . equal ( [ 'target1' , newAggregates ] ) ;
194
+ expect ( globalActions . setShowContent . callCount ) . to . equal ( 2 ) ;
195
+ expect ( globalActions . setShowContent . args [ 1 ] [ 0 ] ) . to . equal ( true ) ;
196
+ expect ( globalActions . setTitle . callCount ) . to . equal ( 2 ) ;
197
+ expect ( globalActions . setTitle . args [ 1 ] [ 0 ] ) . to . equal ( 'target aggregate 1 updated' ) ;
198
+ expect ( targetAggregatesActions . setSelectedTargetAggregate . callCount ) . to . equal ( 2 ) ;
199
+ expect ( targetAggregatesActions . setSelectedTargetAggregate . args [ 1 ] [ 0 ] ) . to . deep . equal ( {
200
+ an : 'aggregate1_updated' ,
201
+ translation_key : 'title1_updated' ,
202
+ heading : 'translated title 1 updated' ,
203
+ } ) ;
204
+ } ) ) ;
147
205
} ) ;
0 commit comments