11import { waitForAsync , ComponentFixture , TestBed } from '@angular/core/testing' ;
22import * as moment from 'moment' ;
3- import { NEVER } from 'rxjs' ;
3+ import { CookieService } from 'ngx-cookie-service' ;
4+ import { FeatureToggle } from 'src/environments/enum' ;
45
56import { MonthPickerComponent } from './month-picker.component' ;
67
78describe ( 'MonthPickerComponent' , ( ) => {
89 let component : MonthPickerComponent ;
910 let fixture : ComponentFixture < MonthPickerComponent > ;
11+ let cookieService : CookieService ;
1012 beforeEach ( waitForAsync ( ( ) => {
1113 TestBed . configureTestingModule ( {
1214 declarations : [ MonthPickerComponent ]
@@ -16,6 +18,7 @@ describe('MonthPickerComponent', () => {
1618
1719 beforeEach ( ( ) => {
1820 fixture = TestBed . createComponent ( MonthPickerComponent ) ;
21+ cookieService = TestBed . inject ( CookieService ) ;
1922 component = fixture . componentInstance ;
2023 fixture . detectChanges ( ) ;
2124 } ) ;
@@ -73,4 +76,203 @@ describe('MonthPickerComponent', () => {
7376 expect ( component . monthEnable ( monthFuture ) ) . toBeTrue ( ) ;
7477 } ) ;
7578
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+ } ) ;
76278} ) ;
0 commit comments