@@ -140,6 +140,13 @@ query Test {
140
140
` ) ;
141
141
} ) ;
142
142
143
+ it ( 'finds queries with nested graphql.experimental template tag expression' , async ( ) => {
144
+ const text = `const query = graphql.experimental\` query {} \`` ;
145
+
146
+ const contents = findGraphQLTags ( text , '.ts' ) ;
147
+ expect ( contents [ 0 ] . template ) . toEqual ( ` query {} ` ) ;
148
+ } ) ;
149
+
143
150
it ( 'finds queries with nested template tag expressions' , async ( ) => {
144
151
const text = `export default {
145
152
else: () => gql\` query {} \`
@@ -151,13 +158,39 @@ query Test {
151
158
152
159
it ( 'finds queries with template tags inside call expressions' , async ( ) => {
153
160
const text = `something({
154
- else: () => gql \` query {} \`
161
+ else: () => graphql \` query {} \`
155
162
})` ;
156
163
157
164
const contents = findGraphQLTags ( text , '.ts' ) ;
158
165
expect ( contents [ 0 ] . template ) . toEqual ( ` query {} ` ) ;
159
166
} ) ;
160
167
168
+ it ( 'finds multiple queries in a single file' , async ( ) => {
169
+ const text = `something({
170
+ else: () => gql\` query {} \`
171
+ })
172
+ const query = graphql\`query myQuery {}\`` ;
173
+
174
+ const contents = findGraphQLTags ( text , '.ts' ) ;
175
+
176
+ expect ( contents . length ) . toEqual ( 2 ) ;
177
+
178
+ // let's double check that we're properly
179
+ // extracting the positions of each embedded string
180
+ expect ( contents [ 0 ] . range . start . line ) . toEqual ( 1 ) ;
181
+ expect ( contents [ 0 ] . range . start . character ) . toEqual ( 18 ) ;
182
+ expect ( contents [ 0 ] . range . end . line ) . toEqual ( 1 ) ;
183
+ expect ( contents [ 0 ] . range . end . character ) . toEqual ( 28 ) ;
184
+ expect ( contents [ 0 ] . template ) . toEqual ( ` query {} ` ) ;
185
+
186
+ // and the second string, with correct positional information!
187
+ expect ( contents [ 1 ] . range . start . line ) . toEqual ( 3 ) ;
188
+ expect ( contents [ 1 ] . range . start . character ) . toEqual ( 22 ) ;
189
+ expect ( contents [ 1 ] . range . end . line ) . toEqual ( 3 ) ;
190
+ expect ( contents [ 1 ] . range . end . character ) . toEqual ( 38 ) ;
191
+ expect ( contents [ 1 ] . template ) . toEqual ( `query myQuery {}` ) ;
192
+ } ) ;
193
+
161
194
it ( 'ignores non gql tagged templates' , async ( ) => {
162
195
const text = `
163
196
// @flow
0 commit comments