@@ -2,41 +2,112 @@ import { mount, ReactWrapper } from "enzyme";
22import * as React from "react" ;
33import * as renderer from "react-test-renderer" ;
44
5+ import { IIPCMessage , IPCChannel , IPCMessageType } from "./ipc" ;
6+
57import * as TestSubject from "./rendererService" ;
68
9+
710describe ( "RendererService" , ( ) : void => {
811
9- it ( "RendererService export exists" , ( ) : void => {
12+ const sendMock : jest . Mock < any , any [ ] > = jest . fn ( ) ;
13+ const onMock : jest . Mock < any , any [ ] > = jest . fn ( ) ;
14+ let eventCallback : ( event : Electron . IpcMainEvent | Electron . IpcRendererEvent , ...args : any [ ] ) => void ;
15+
16+ const handler : ( channel : IPCChannel ,
17+ callback : ( event : Electron . IpcMainEvent | Electron . IpcRendererEvent , ...args : any [ ] ) => void )
18+ => void = ( channel : IPCChannel , callback : ( event : Electron . IpcMainEvent | Electron . IpcRendererEvent ,
19+ ...args : any [ ] ) => void ) : void => {
20+ eventCallback = callback ;
21+ onMock ( channel ) ;
22+ } ;
23+
24+ const ipcMock : any = {
25+ on : handler ,
26+ send : sendMock ,
27+ } ;
28+
29+ beforeEach ( ( ) : void => {
30+ onMock . mockClear ( ) ;
31+ } ) ;
32+
33+ it ( "export exists" , ( ) : void => {
1034 expect ( TestSubject . RendererService ) . toBeDefined ( ) ;
1135 } ) ;
1236
1337 it ( "ping" , ( ) : void => {
14- const ipc : any = {
15- send : jest . fn ( ) ,
16- } ;
17-
18- const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipc , "main-channel" ) ;
38+ const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipcMock , "main-channel" ) ;
1939 testSubject . ping ( ) ;
20- expect ( ipc . send ) . toHaveBeenCalledTimes ( 1 ) ;
40+ expect ( ipcMock . send ) . toHaveBeenCalledTimes ( 1 ) ;
2141 } ) ;
2242
2343 it ( "register" , ( ) : void => {
24- const ipc : any = {
25- on : jest . fn ( ) ,
44+ const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipcMock , "main-channel" ) ;
45+ testSubject . register ( ) ;
46+ expect ( onMock ) . toHaveBeenNthCalledWith ( 1 , "main-channel" ) ;
47+ } ) ;
48+
49+
50+ it ( "event" , ( ) : void => {
51+ const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipcMock , "main-channel" ) ;
52+ const eventSenderSendMock : jest . Mock < any , any [ ] > = jest . fn ( ) ;
53+ const event : any = {
54+ sender : {
55+ send : eventSenderSendMock ,
56+ } ,
2657 } ;
58+ testSubject . register ( ) ;
59+ expect ( onMock ) . toHaveBeenNthCalledWith ( 1 , "main-channel" ) ;
60+ eventCallback ( event , "test" ) ;
61+ } ) ;
2762
28- const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipc , "main-channel" ) ;
63+ it ( "invalid event" , ( ) : void => {
64+ const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipcMock , "main-channel" ) ;
65+ const eventSenderSendMock : jest . Mock < any , any [ ] > = jest . fn ( ) ;
66+ const event : any = {
67+ sender : {
68+ send : eventSenderSendMock ,
69+ } ,
70+ } ;
2971 testSubject . register ( ) ;
30- expect ( ipc . on ) . toHaveBeenCalledTimes ( 1 ) ;
72+ expect ( onMock ) . toHaveBeenNthCalledWith ( 1 , "main-channel" ) ;
73+ eventCallback ( event , "test" , 1 ) ;
74+ eventCallback ( event ) ;
3175 } ) ;
3276
33- it ( "callback" , ( ) : void => {
34- const ipc : any = {
35- on : jest . fn ( ) ,
77+ it ( "ping event" , ( ) : void => {
78+ const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipcMock , "main-channel" ) ;
79+ const eventSenderSendMock : jest . Mock < any , any [ ] > = jest . fn ( ) ;
80+ const event : any = {
81+ sender : {
82+ send : eventSenderSendMock ,
83+ } ,
3684 } ;
85+ testSubject . register ( ) ;
86+ expect ( onMock ) . toHaveBeenNthCalledWith ( 1 , "main-channel" ) ;
87+ eventCallback ( event , {
88+ data : "test" ,
89+ timestamp : new Date ( ) ,
90+ type : "ping" ,
91+ } as IIPCMessage < string > ) ;
92+ expect ( event . sender . send ) . toHaveBeenCalledTimes ( 1 ) ;
93+ } ) ;
3794
38- const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipc , "main-channel" ) ;
95+
96+ it ( "pong event" , ( ) : void => {
97+ const testSubject : TestSubject . RendererService = new TestSubject . RendererService ( ipcMock , "main-channel" ) ;
98+ const eventSenderSendMock : jest . Mock < any , any [ ] > = jest . fn ( ) ;
99+ const event : any = {
100+ sender : {
101+ send : eventSenderSendMock ,
102+ } ,
103+ } ;
39104 testSubject . register ( ) ;
40- expect ( ipc . on ) . toHaveBeenCalledTimes ( 1 ) ;
105+ expect ( onMock ) . toHaveBeenNthCalledWith ( 1 , "main-channel" ) ;
106+ eventCallback ( event , {
107+ data : "test" ,
108+ timestamp : new Date ( ) ,
109+ type : "pong" ,
110+ } as IIPCMessage < string > ) ;
111+ expect ( event . sender . send ) . toHaveBeenCalledTimes ( 0 ) ;
41112 } ) ;
42113} ) ;
0 commit comments