1
1
import { waitForAsync , ComponentFixture , TestBed } from '@angular/core/testing' ;
2
2
import * as moment from 'moment' ;
3
- import { NEVER } from 'rxjs' ;
3
+ import { CookieService } from 'ngx-cookie-service' ;
4
+ import { FeatureToggle } from 'src/environments/enum' ;
4
5
5
6
import { MonthPickerComponent } from './month-picker.component' ;
6
7
7
8
describe ( 'MonthPickerComponent' , ( ) => {
8
9
let component : MonthPickerComponent ;
9
10
let fixture : ComponentFixture < MonthPickerComponent > ;
11
+ let cookieService : CookieService ;
10
12
beforeEach ( waitForAsync ( ( ) => {
11
13
TestBed . configureTestingModule ( {
12
14
declarations : [ MonthPickerComponent ]
@@ -16,6 +18,7 @@ describe('MonthPickerComponent', () => {
16
18
17
19
beforeEach ( ( ) => {
18
20
fixture = TestBed . createComponent ( MonthPickerComponent ) ;
21
+ cookieService = TestBed . inject ( CookieService ) ;
19
22
component = fixture . componentInstance ;
20
23
fixture . detectChanges ( ) ;
21
24
} ) ;
@@ -73,4 +76,203 @@ describe('MonthPickerComponent', () => {
73
76
expect ( component . monthEnable ( monthFuture ) ) . toBeTrue ( ) ;
74
77
} ) ;
75
78
79
+ it ( 'call cookieService.get() when component was create' , ( ) => {
80
+ spyOn ( cookieService , 'get' ) ;
81
+
82
+ component . ngOnInit ( ) ;
83
+
84
+ expect ( cookieService . get ) . toHaveBeenCalledWith ( FeatureToggle . TIME_TRACKER_CALENDAR ) ;
85
+ } ) ;
86
+
87
+ it ( 'set true in isFeatureToggleCalendarActive when component was create' , ( ) => {
88
+ const expectCookieValue = true ;
89
+ spyOn ( cookieService , 'get' ) . and . returnValue ( `${ expectCookieValue } ` ) ;
90
+
91
+ component . ngOnInit ( ) ;
92
+
93
+ expect ( component . isFeatureToggleCalendarActive ) . toEqual ( expectCookieValue ) ;
94
+ } ) ;
95
+
96
+ it ( 'set false in isFeatureToggleCalendarActive when component was create' , ( ) => {
97
+ const expectCookieValue = false ;
98
+ spyOn ( cookieService , 'get' ) . and . returnValue ( `${ expectCookieValue } ` ) ;
99
+
100
+ component . ngOnInit ( ) ;
101
+
102
+ expect ( component . isFeatureToggleCalendarActive ) . toEqual ( expectCookieValue ) ;
103
+ } ) ;
104
+
105
+ it ( 'set false in isFeatureToggleCalendarActive when cookie does not exist' , ( ) => {
106
+ const expectCookieValue = false ;
107
+ spyOn ( cookieService , 'get' ) ;
108
+
109
+ component . ngOnInit ( ) ;
110
+
111
+ expect ( component . isFeatureToggleCalendarActive ) . toEqual ( expectCookieValue ) ;
112
+ } ) ;
113
+
114
+ it ( 'call refresData when updating the value of selectedDate' , ( ) => {
115
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( ) ) ;
116
+ spyOn ( component , 'refreshDate' ) ;
117
+
118
+ component . selectedDate = fakeSelectedDate ;
119
+
120
+ expect ( component . refreshDate ) . toHaveBeenCalledWith ( fakeSelectedDate ) ;
121
+ } ) ;
122
+
123
+ it ( 'not set value of selectedDate in selectedDateMoment when isFeatureToggleCalendarActive is false' , ( ) => {
124
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2021-07-05' ) ) ;
125
+ component . isFeatureToggleCalendarActive = false ;
126
+
127
+ component . refreshDate ( fakeSelectedDate ) ;
128
+
129
+ expect ( component . selectedDateMoment ) . not . toEqual ( fakeSelectedDate ) ;
130
+ } ) ;
131
+
132
+ it ( 'set value of selectedDate in selectedDateMoment when isFeatureToggleCalendarActive is true' , ( ) => {
133
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2021-07-05' ) ) ;
134
+ component . isFeatureToggleCalendarActive = true ;
135
+
136
+ component . refreshDate ( fakeSelectedDate ) ;
137
+
138
+ expect ( component . selectedDateMoment ) . toEqual ( fakeSelectedDate ) ;
139
+ } ) ;
140
+
141
+
142
+ it ( 'set current Month index in selectedMonthIndex when isFeatureToggleCalendarActive is false' , ( ) => {
143
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2021-07-05' ) ) ;
144
+ const currentDate : moment . Moment = moment ( new Date ( ) ) ;
145
+ component . isFeatureToggleCalendarActive = false ;
146
+
147
+ component . refreshDate ( fakeSelectedDate ) ;
148
+
149
+ expect ( component . selectedMonthIndex ) . toEqual ( currentDate . month ( ) ) ;
150
+ } ) ;
151
+
152
+ it ( 'set month of selectedDate in selectedMonthIndex when isFeatureToggleCalendarActive is true' , ( ) => {
153
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2021-07-05' ) ) ;
154
+ component . isFeatureToggleCalendarActive = true ;
155
+
156
+ component . refreshDate ( fakeSelectedDate ) ;
157
+
158
+ expect ( component . selectedMonthIndex ) . toEqual ( fakeSelectedDate . month ( ) ) ;
159
+ } ) ;
160
+
161
+ it ( 'set current year as a text in selectedYearText when isFeatureToggleCalendarActive is false' , ( ) => {
162
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2020-07-05' ) ) ;
163
+ const currentDate : number = moment ( new Date ( ) ) . year ( ) ;
164
+ component . isFeatureToggleCalendarActive = false ;
165
+
166
+ component . refreshDate ( fakeSelectedDate ) ;
167
+
168
+ expect ( component . selectedYearText ) . toEqual ( `${ currentDate } ` ) ;
169
+ } ) ;
170
+
171
+ it ( 'set year as a text of selectedDate in selectedYearText when isFeatureToggleCalendarActive is true' , ( ) => {
172
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '1999-07-05' ) ) ;
173
+ const expectedYear = '1999' ;
174
+ component . isFeatureToggleCalendarActive = true ;
175
+
176
+ component . refreshDate ( fakeSelectedDate ) ;
177
+
178
+ expect ( component . selectedYearText ) . toEqual ( expectedYear ) ;
179
+ } ) ;
180
+
181
+ it ( 'set current year in selectedYear when isFeatureToggleCalendarActive is false' , ( ) => {
182
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2020-07-05' ) ) ;
183
+ const currentDate : number = moment ( new Date ( ) ) . year ( ) ;
184
+ component . isFeatureToggleCalendarActive = false ;
185
+
186
+ component . refreshDate ( fakeSelectedDate ) ;
187
+
188
+ expect ( component . selectedYear ) . toEqual ( currentDate ) ;
189
+ } ) ;
190
+
191
+ it ( 'set year as a text of selectedDate in selectedYear when isFeatureToggleCalendarActive is true' , ( ) => {
192
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '1999-07-05' ) ) ;
193
+ const expectedYear = 1999 ;
194
+ component . isFeatureToggleCalendarActive = true ;
195
+
196
+ component . refreshDate ( fakeSelectedDate ) ;
197
+
198
+ expect ( component . selectedYear ) . toEqual ( expectedYear ) ;
199
+ } ) ;
200
+
201
+ it ( 'not true in showArrowNext when isFeatureToggleCalendarActive is false' , ( ) => {
202
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '1999-07-05' ) ) ;
203
+ component . isFeatureToggleCalendarActive = false ;
204
+
205
+ component . refreshDate ( fakeSelectedDate ) ;
206
+
207
+ expect ( component . showArrowNext ) . not . toEqual ( true ) ;
208
+ } ) ;
209
+
210
+ it ( 'false in showArrowNext when isFeatureToggleCalendarActive is false' , ( ) => {
211
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '1999-07-05' ) ) ;
212
+ component . isFeatureToggleCalendarActive = false ;
213
+
214
+ component . refreshDate ( fakeSelectedDate ) ;
215
+
216
+ expect ( component . showArrowNext ) . toEqual ( false ) ;
217
+ } ) ;
218
+
219
+ it ( 'set true in showArrowNext when isFeatureToggleCalendarActive is true' , ( ) => {
220
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '1999-07-05' ) ) ;
221
+ component . isFeatureToggleCalendarActive = true ;
222
+
223
+ component . refreshDate ( fakeSelectedDate ) ;
224
+
225
+ expect ( component . showArrowNext ) . toEqual ( true ) ;
226
+ } ) ;
227
+
228
+ it ( 'set false in showArrowNext when isFeatureToggleCalendarActive is true' , ( ) => {
229
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( ) ) . add ( 1 , 'month' ) ;
230
+ component . isFeatureToggleCalendarActive = true ;
231
+
232
+ component . refreshDate ( fakeSelectedDate ) ;
233
+
234
+ expect ( component . showArrowNext ) . toEqual ( false ) ;
235
+ } ) ;
236
+
237
+ it ( 'isSelectedMonth returns true when isFeatureToggleCalendarActive is true' , ( ) => {
238
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2021-07-06' ) ) ;
239
+ const expectedReturn = true ;
240
+ const fakeFeatureToggleValue = true ;
241
+ component . selectedMonthIndex = fakeSelectedDate . month ( ) ;
242
+ component . selectedYear = fakeSelectedDate . year ( ) ;
243
+ component . selectedDateMoment = fakeSelectedDate ;
244
+ component . isFeatureToggleCalendarActive = fakeFeatureToggleValue ;
245
+
246
+ const response = component . isSelectedMonth ( fakeSelectedDate . month ( ) ) ;
247
+
248
+ expect ( response ) . toEqual ( expectedReturn ) ;
249
+ } ) ;
250
+
251
+ it ( 'isSelectedMonth returns false when isFeatureToggleCalendarActive is true and the months are not the same' , ( ) => {
252
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2021-07-06' ) ) ;
253
+ const expectedReturn = false ;
254
+ const fakeFeatureToggleValue = true ;
255
+ component . selectedMonthIndex = fakeSelectedDate . month ( ) ;
256
+ component . selectedYear = fakeSelectedDate . year ( ) ;
257
+ component . selectedDateMoment = fakeSelectedDate ;
258
+ component . isFeatureToggleCalendarActive = fakeFeatureToggleValue ;
259
+
260
+ const response = component . isSelectedMonth ( fakeSelectedDate . add ( 1 , 'month' ) . month ( ) ) ;
261
+
262
+ expect ( response ) . toEqual ( expectedReturn ) ;
263
+ } ) ;
264
+
265
+ it ( 'isSelectedMonth returns false when isFeatureToggleCalendarActive is true and the years are not the same' , ( ) => {
266
+ const fakeSelectedDate : moment . Moment = moment ( new Date ( '2021-07-06' ) ) ;
267
+ const expectedReturn = false ;
268
+ const fakeFeatureToggleValue = true ;
269
+ component . selectedMonthIndex = fakeSelectedDate . month ( ) ;
270
+ component . selectedYear = fakeSelectedDate . year ( ) ;
271
+ component . selectedDateMoment = fakeSelectedDate . add ( 1 , 'year' ) ;
272
+ component . isFeatureToggleCalendarActive = fakeFeatureToggleValue ;
273
+
274
+ const response = component . isSelectedMonth ( fakeSelectedDate . month ( ) ) ;
275
+
276
+ expect ( response ) . toEqual ( expectedReturn ) ;
277
+ } ) ;
76
278
} ) ;
0 commit comments