1+ import TimerController from '../TimeController' ;
2+ import * as TimeUtils from '../TimeUtils' ;
3+
4+ jest . mock ( '../TimeUtils' ) ;
5+
6+ describe ( 'TimerController' , ( ) => {
7+ let mockReference ;
8+
9+ beforeEach ( ( ) => {
10+ mockReference = {
11+ querySelector : jest . fn ( selector => {
12+ if ( String ( selector ) . includes ( 'input' ) ) {
13+ return {
14+ addEventListener : jest . fn ( ) ,
15+ value : '00' ,
16+ disabled : false ,
17+ } ;
18+ }
19+ if ( selector === '.js-stopwatch-action-buttons' ) {
20+ return {
21+ querySelector : jest . fn ( innerSelector => {
22+ if ( innerSelector === '.js-start-button' ) {
23+ return {
24+ addEventListener : jest . fn ( ) ,
25+ hideElement : jest . fn ( ) ,
26+ showElement : jest . fn ( ) ,
27+ } ;
28+ }
29+ return {
30+ addEventListener : jest . fn ( ) ,
31+ hideElement : jest . fn ( ) ,
32+ showElement : jest . fn ( ) ,
33+ } ;
34+ } ) ,
35+ hideElement : jest . fn ( ) ,
36+ showElement : jest . fn ( ) ,
37+ } ;
38+ }
39+ if ( selector === '.js-edit-container-stopwatch' ) {
40+ return {
41+ querySelector : jest . fn ( innerSelector => ( {
42+ addEventListener : jest . fn ( ) ,
43+ hideElement : jest . fn ( ) ,
44+ showElement : jest . fn ( ) ,
45+ } ) ) ,
46+ hideElement : jest . fn ( ) ,
47+ showElement : jest . fn ( ) ,
48+ } ;
49+ }
50+ if ( selector === '.js-countdown-container' ) {
51+ return {
52+ querySelector : jest . fn ( innerSelector => {
53+ if ( innerSelector === '.js-close-countdown-button' ) {
54+ return {
55+ addEventListener : jest . fn ( ) ,
56+ } ;
57+ }
58+ return {
59+ textContent : '' ,
60+ } ;
61+ } ) ,
62+ hideElement : jest . fn ( ) ,
63+ showElement : jest . fn ( ) ,
64+ classList : {
65+ add : jest . fn ( ) ,
66+ remove : jest . fn ( ) ,
67+ } ,
68+ textContent : '' ,
69+ } ;
70+ }
71+ if ( selector === '.js-stopwatch-action-buttons' ) {
72+ return {
73+ querySelector : jest . fn ( innerSelector => {
74+ if ( innerSelector === '.js-start-button' ) {
75+ const mockAddEventListener = jest . fn ( ) ;
76+ return {
77+ addEventListener : mockAddEventListener ,
78+ hideElement : jest . fn ( ) ,
79+ showElement : jest . fn ( ) ,
80+ } ;
81+ }
82+ if ( innerSelector === '.js-pause-button' ) {
83+ return {
84+ addEventListener : jest . fn ( ) ,
85+ hideElement : jest . fn ( ) ,
86+ showElement : jest . fn ( ) ,
87+ } ;
88+ }
89+ return {
90+ addEventListener : jest . fn ( ) ,
91+ hideElement : jest . fn ( ) ,
92+ showElement : jest . fn ( ) ,
93+ } ;
94+ } ) ,
95+ hideElement : jest . fn ( ) ,
96+ showElement : jest . fn ( ) ,
97+ } ;
98+ }
99+ return {
100+ addEventListener : jest . fn ( ) ,
101+ hideElement : jest . fn ( ) ,
102+ showElement : jest . fn ( ) ,
103+ focus : jest . fn ( ) ,
104+ value : '00' ,
105+ classList : { add : jest . fn ( ) , remove : jest . fn ( ) } ,
106+ } ;
107+ } ) ,
108+ } ;
109+ } ) ;
110+
111+
112+ it ( 'deve inicializar corretamente' , ( ) => {
113+ const timerController = new TimerController ( mockReference ) ;
114+ expect ( mockReference . querySelector ) . toHaveBeenCalledWith ( '.js-hour-input' ) ;
115+ } ) ;
116+
117+ it ( 'deve formatar corretamente os valores de tempo' , ( ) => {
118+ TimeUtils . formatTimeUnit . mockReturnValue ( '05' ) ;
119+ const result = TimeUtils . formatTimeUnit ( 5 ) ;
120+ expect ( result ) . toBe ( '05' ) ;
121+ expect ( TimeUtils . formatTimeUnit ) . toHaveBeenCalledWith ( 5 ) ;
122+ } ) ;
123+ } ) ;
0 commit comments