1
1
import { it , expect } from 'vitest' ;
2
- import fetch from 'node-fetch ' ;
2
+ import { createTHandler } from './thandler ' ;
3
3
import { RequestHeaders } from '../src/handler' ;
4
4
import { createClient , NetworkError } from '../src/client' ;
5
- import { startTServer } from './utils/tserver' ;
6
- import { texecute } from './utils/texecute' ;
5
+ import { ExecutionResult } from 'graphql' ;
6
+ import { RequestParams } from '../src/common' ;
7
+ import { Client } from '../src/client' ;
8
+
9
+ function texecute < D = unknown , E = unknown > (
10
+ client : Client ,
11
+ params : RequestParams ,
12
+ ) : [ request : Promise < ExecutionResult < D , E > > , cancel : ( ) => void ] {
13
+ let cancel ! : ( ) => void ;
14
+ const request = new Promise < ExecutionResult < D , E > > ( ( resolve , reject ) => {
15
+ let result : ExecutionResult < D , E > ;
16
+ cancel = client . subscribe < D , E > ( params , {
17
+ next : ( data ) => ( result = data ) ,
18
+ error : reject ,
19
+ complete : ( ) => resolve ( result ) ,
20
+ } ) ;
21
+ } ) ;
22
+ return [ request , cancel ] ;
23
+ }
7
24
8
25
it ( 'should use the provided headers' , async ( ) => {
9
26
let headers : RequestHeaders = { } ;
10
- const server = startTServer ( {
27
+ const { fetch } = createTHandler ( {
11
28
onSubscribe : ( req ) => {
12
29
headers = req . headers ;
13
30
} ,
14
31
} ) ;
15
32
16
33
const client = createClient ( {
17
- url : server . url ,
34
+ url : 'http://localhost' ,
18
35
fetchFn : fetch ,
19
36
headers : async ( ) => {
20
37
return { 'x-some' : 'header' } ;
@@ -24,14 +41,45 @@ it('should use the provided headers', async () => {
24
41
const [ request ] = texecute ( client , { query : '{ hello }' } ) ;
25
42
await request ;
26
43
27
- expect ( headers [ 'x-some' ] ) . toBe ( 'header' ) ;
44
+ expect ( headers ) . toMatchInlineSnapshot ( `
45
+ Headers {
46
+ Symbol(headers list): HeadersList {
47
+ "cookies": null,
48
+ Symbol(headers map): Map {
49
+ "x-some" => {
50
+ "name": "x-some",
51
+ "value": "header",
52
+ },
53
+ "content-type" => {
54
+ "name": "content-type",
55
+ "value": "application/json; charset=utf-8",
56
+ },
57
+ "accept" => {
58
+ "name": "accept",
59
+ "value": "application/graphql-response+json, application/json",
60
+ },
61
+ },
62
+ Symbol(headers map sorted): null,
63
+ },
64
+ Symbol(guard): "request",
65
+ Symbol(realm): {
66
+ "settingsObject": {
67
+ "baseUrl": undefined,
68
+ "origin": undefined,
69
+ "policyContainer": {
70
+ "referrerPolicy": "strict-origin-when-cross-origin",
71
+ },
72
+ },
73
+ },
74
+ }
75
+ ` ) ;
28
76
} ) ;
29
77
30
78
it ( 'should execute query, next the result and then complete' , async ( ) => {
31
- const server = startTServer ( ) ;
79
+ const { fetch } = createTHandler ( ) ;
32
80
33
81
const client = createClient ( {
34
- url : server . url ,
82
+ url : 'http://localhost' ,
35
83
fetchFn : fetch ,
36
84
} ) ;
37
85
@@ -43,10 +91,10 @@ it('should execute query, next the result and then complete', async () => {
43
91
} ) ;
44
92
45
93
it ( 'should execute mutation, next the result and then complete' , async ( ) => {
46
- const server = startTServer ( ) ;
94
+ const { fetch } = createTHandler ( ) ;
47
95
48
96
const client = createClient ( {
49
- url : server . url ,
97
+ url : 'http://localhost' ,
50
98
fetchFn : fetch ,
51
99
} ) ;
52
100
@@ -58,10 +106,10 @@ it('should execute mutation, next the result and then complete', async () => {
58
106
} ) ;
59
107
60
108
it ( 'should report invalid request' , async ( ) => {
61
- const server = startTServer ( ) ;
109
+ const { fetch } = createTHandler ( ) ;
62
110
63
111
const client = createClient ( {
64
- url : server . url ,
112
+ url : 'http://localhost' ,
65
113
fetchFn : fetch ,
66
114
} ) ;
67
115
0 commit comments