5
5
Request as ExpressRequest ,
6
6
Response as ExpressResponse ,
7
7
} from 'express' ;
8
+ import { Request as MockRequest } from 'jest-express/lib/request' ;
8
9
import { Response as MockResponse } from 'jest-express/lib/response' ;
9
10
import { twiml } from 'twilio' ;
10
11
import { StartCliConfig } from '../../src/config/start' ;
@@ -25,12 +26,70 @@ const mockResponse = (new MockResponse() as unknown) as ExpressResponse;
25
26
mockResponse . type = jest . fn ( ( ) => mockResponse ) ;
26
27
27
28
describe ( 'handleError function' , ( ) => {
28
- test ( 'calls correct response methods' , ( ) => {
29
+ test ( 'returns string error' , ( ) => {
30
+ const mockRequest = ( new MockRequest ( ) as unknown ) as ExpressRequest ;
31
+ mockRequest [ 'useragent' ] = {
32
+ isDesktop : true ,
33
+ isMobile : false ,
34
+ } as ExpressUseragent . UserAgent ;
35
+
36
+ handleError ( 'string error' , mockRequest , mockResponse ) ;
37
+
38
+ expect ( mockResponse . status ) . toHaveBeenCalledWith ( 500 ) ;
39
+ expect ( mockResponse . send ) . toHaveBeenCalledWith ( 'string error' ) ;
40
+ } ) ;
41
+
42
+ test ( 'handles objects as error argument' , ( ) => {
43
+ const mockRequest = ( new MockRequest ( ) as unknown ) as ExpressRequest ;
44
+ mockRequest [ 'useragent' ] = {
45
+ isDesktop : true ,
46
+ isMobile : false ,
47
+ } as ExpressUseragent . UserAgent ;
48
+
49
+ handleError ( { errorMessage : 'oh no' } , mockRequest , mockResponse ) ;
50
+
51
+ expect ( mockResponse . status ) . toHaveBeenCalledWith ( 500 ) ;
52
+ expect ( mockResponse . send ) . toHaveBeenCalledWith ( { errorMessage : 'oh no' } ) ;
53
+ } ) ;
54
+
55
+ test ( 'wraps error object for desktop requests' , ( ) => {
56
+ const mockRequest = ( new MockRequest ( ) as unknown ) as ExpressRequest ;
57
+ mockRequest [ 'useragent' ] = {
58
+ isDesktop : true ,
59
+ isMobile : false ,
60
+ } as ExpressUseragent . UserAgent ;
61
+
29
62
const err = new Error ( 'Failed to execute' ) ;
30
- handleError ( err , ( mockResponse as unknown ) as ExpressResponse ) ;
63
+ handleError ( err , mockRequest , mockResponse ) ;
31
64
expect ( mockResponse . status ) . toHaveBeenCalledWith ( 500 ) ;
32
65
expect ( mockResponse . send ) . toHaveBeenCalledWith ( wrapErrorInHtml ( err ) ) ;
33
66
} ) ;
67
+
68
+ test ( 'wraps error object for mobile requests' , ( ) => {
69
+ const mockRequest = ( new MockRequest ( ) as unknown ) as ExpressRequest ;
70
+ mockRequest [ 'useragent' ] = {
71
+ isDesktop : false ,
72
+ isMobile : true ,
73
+ } as ExpressUseragent . UserAgent ;
74
+
75
+ const err = new Error ( 'Failed to execute' ) ;
76
+ handleError ( err , mockRequest , mockResponse ) ;
77
+ expect ( mockResponse . status ) . toHaveBeenCalledWith ( 500 ) ;
78
+ expect ( mockResponse . send ) . toHaveBeenCalledWith ( wrapErrorInHtml ( err ) ) ;
79
+ } ) ;
80
+
81
+ test ( 'returns string version of error for other requests' , ( ) => {
82
+ const mockRequest = ( new MockRequest ( ) as unknown ) as ExpressRequest ;
83
+ mockRequest [ 'useragent' ] = {
84
+ isDesktop : false ,
85
+ isMobile : false ,
86
+ } as ExpressUseragent . UserAgent ;
87
+
88
+ const err = new Error ( 'Failed to execute' ) ;
89
+ handleError ( err , mockRequest , mockResponse ) ;
90
+ expect ( mockResponse . status ) . toHaveBeenCalledWith ( 500 ) ;
91
+ expect ( mockResponse . send ) . toHaveBeenCalledWith ( err . toString ( ) ) ;
92
+ } ) ;
34
93
} ) ;
35
94
36
95
describe ( 'constructEvent function' , ( ) => {
0 commit comments