1
+ /**
2
+ * @jest -environment jsdom
3
+ */
4
+
5
+ import EventSourceTrigger from './EventSourceTrigger' ;
6
+ import EventSourceHandlerWithProgressBar from './EventSourceHandlerWithProgressBar' ;
7
+ import ProgressBar from './ProgressBar' ;
8
+ import ProgressBarWithLabel from './UIComponents/ProgressBarWithLabel' ;
9
+
10
+ jest . mock ( './EventSourceHandlerWithProgressBar' ) ;
11
+ jest . mock ( './ProgressBar' ) ;
12
+ jest . mock ( './UIComponents/ProgressBarWithLabel' ) ;
13
+
14
+ describe ( 'EventSourceTrigger' , ( ) => {
15
+ let triggerElement : HTMLElement ;
16
+ let eventSourceUrl : string ;
17
+ let eventSourceTrigger : EventSourceTrigger ;
18
+
19
+ beforeEach ( ( ) => {
20
+ triggerElement = document . createElement ( 'button' ) ;
21
+ eventSourceUrl = 'http://example.com/events' ;
22
+ eventSourceTrigger = new EventSourceTrigger ( triggerElement , eventSourceUrl ) ;
23
+ } ) ;
24
+
25
+ it ( 'should initialize EventSourceHandlerWithProgressBar on instantiation' , ( ) => {
26
+ expect ( EventSourceHandlerWithProgressBar ) . toHaveBeenCalledWith ( triggerElement , eventSourceUrl , expect . any ( ProgressBar ) ) ;
27
+ } ) ;
28
+
29
+ it ( 'should add click event listener to triggerElement' , ( ) => {
30
+ const addEventListenerSpy = jest . spyOn ( triggerElement , 'addEventListener' ) ;
31
+ new EventSourceTrigger ( triggerElement , eventSourceUrl ) ;
32
+ expect ( addEventListenerSpy ) . toHaveBeenCalledWith ( 'click' , expect . any ( Function ) ) ;
33
+ } ) ;
34
+
35
+ it ( 'should prevent default action and start EventSourceHandlerWithProgressBar on click' , ( ) => {
36
+ const event = new MouseEvent ( 'click' , { bubbles : true , cancelable : true } ) ;
37
+ const preventDefaultSpy = jest . spyOn ( event , 'preventDefault' ) ;
38
+ const startSpy = jest . spyOn ( eventSourceTrigger [ 'eventSourceHandlerWithProgressBar' ] , 'start' ) ;
39
+
40
+ triggerElement . dispatchEvent ( event ) ;
41
+
42
+ expect ( preventDefaultSpy ) . toHaveBeenCalled ( ) ;
43
+ expect ( startSpy ) . toHaveBeenCalled ( ) ;
44
+ } ) ;
45
+
46
+ it ( 'should create a ProgressBar instance in createProgressBar' , ( ) => {
47
+ const progressBar = eventSourceTrigger [ 'createProgressBar' ] ( ) ;
48
+ expect ( progressBar ) . toBeInstanceOf ( ProgressBar ) ;
49
+ } ) ;
50
+
51
+ it ( 'should create a ProgressBarWithLabel element in createProgressBar' , ( ) => {
52
+ const progressBarElement = document . createElement ( ProgressBarWithLabel . customElementName ) ;
53
+ document . createElement = jest . fn ( ) . mockReturnValue ( progressBarElement ) ;
54
+
55
+ eventSourceTrigger [ 'createProgressBar' ] ( ) ;
56
+
57
+ expect ( document . createElement ) . toHaveBeenCalledWith ( ProgressBarWithLabel . customElementName ) ;
58
+ } ) ;
59
+ } ) ;
0 commit comments