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