@@ -195,6 +195,147 @@ const MOCK_XML = `
195
195
</w:document>
196
196
` ;
197
197
198
+ // cspell:disable
199
+ const MOCK_XML_2 = `
200
+ <w:body>
201
+ <w:tbl>
202
+ <w:tblPr>
203
+ <w:tblStyle w:val="TableGrid" />
204
+ <w:tblW w:w="9350" w:type="dxa" />
205
+ <w:jc w:val="left" />
206
+ <w:tblInd w:w="0" w:type="dxa" />
207
+ <w:tblLayout w:type="fixed" />
208
+ <w:tblCellMar>
209
+ <w:top w:w="0" w:type="dxa" />
210
+ <w:left w:w="108" w:type="dxa" />
211
+ <w:bottom w:w="0" w:type="dxa" />
212
+ <w:right w:w="108" w:type="dxa" />
213
+ </w:tblCellMar>
214
+ <w:tblLook w:firstRow="1" w:noVBand="1" w:lastRow="0" w:firstColumn="1"
215
+ w:lastColumn="0" w:noHBand="0" w:val="04a0" />
216
+ </w:tblPr>
217
+ <w:tblGrid>
218
+ <w:gridCol w:w="3119" />
219
+ <w:gridCol w:w="3141" />
220
+ <w:gridCol w:w="3090" />
221
+ </w:tblGrid>
222
+ <w:tr>
223
+ <w:trPr></w:trPr>
224
+ <w:tc>
225
+ <w:tcPr>
226
+ <w:tcW w:w="3119" w:type="dxa" />
227
+ <w:tcBorders>
228
+ <w:right w:val="nil" />
229
+ </w:tcBorders>
230
+ <w:shd w:color="auto" w:fill="D9D9D9" w:themeFill="background1"
231
+ w:themeFillShade="d9" w:val="clear" />
232
+ </w:tcPr>
233
+ <w:p>
234
+ <w:pPr>
235
+ <w:pStyle w:val="NormalSpaceAboveandBelow" />
236
+ <w:widowControl />
237
+ <w:spacing w:before="120" w:after="120" />
238
+ <w:jc w:val="left" />
239
+ <w:rPr>
240
+ <w:rFonts w:eastAsia="Times New Roman" />
241
+ <w:kern w:val="0" />
242
+ <w:sz w:val="20" />
243
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
244
+ </w:rPr>
245
+ </w:pPr>
246
+ <w:r>
247
+ <w:rPr>
248
+ <w:rFonts w:eastAsia="Times New Roman" />
249
+ <w:kern w:val="0" />
250
+ <w:sz w:val="20" />
251
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
252
+ </w:rPr>
253
+ <w:t>{{</w:t>
254
+ </w:r>
255
+ <w:r>
256
+ <w:rPr>
257
+ <w:rFonts w:eastAsia="Times New Roman" />
258
+ <w:kern w:val="0" />
259
+ <w:sz w:val="20" />
260
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
261
+ </w:rPr>
262
+ <w:t>s</w:t>
263
+ </w:r>
264
+ <w:r>
265
+ <w:rPr>
266
+ <w:rFonts w:eastAsia="Times New Roman" />
267
+ <w:kern w:val="0" />
268
+ <w:sz w:val="20" />
269
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
270
+ </w:rPr>
271
+ <w:t>chool_</w:t>
272
+ </w:r>
273
+ <w:r>
274
+ <w:rPr>
275
+ <w:rFonts w:eastAsia="Times New Roman" />
276
+ <w:kern w:val="0" />
277
+ <w:sz w:val="20" />
278
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
279
+ </w:rPr>
280
+ <w:t>n</w:t>
281
+ </w:r>
282
+ <w:r>
283
+ <w:rPr>
284
+ <w:rFonts w:eastAsia="Times New Roman" />
285
+ <w:kern w:val="0" />
286
+ <w:sz w:val="20" />
287
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
288
+ </w:rPr>
289
+ <w:t>ame}}</w:t>
290
+ <w:br />
291
+ <w:t>{{</w:t>
292
+ </w:r>
293
+ <w:r>
294
+ <w:rPr>
295
+ <w:rFonts w:eastAsia="Times New Roman" />
296
+ <w:kern w:val="0" />
297
+ <w:sz w:val="20" />
298
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
299
+ </w:rPr>
300
+ <w:t>a</w:t>
301
+ </w:r>
302
+ <w:r>
303
+ <w:rPr>
304
+ <w:rFonts w:eastAsia="Times New Roman" />
305
+ <w:kern w:val="0" />
306
+ <w:sz w:val="20" />
307
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
308
+ </w:rPr>
309
+ <w:t>ddr</w:t>
310
+ </w:r>
311
+ <w:r>
312
+ <w:rPr>
313
+ <w:rFonts w:eastAsia="Times New Roman" />
314
+ <w:kern w:val="0" />
315
+ <w:sz w:val="20" />
316
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
317
+ </w:rPr>
318
+ <w:t>ess</w:t>
319
+ </w:r>
320
+ <w:r>
321
+ <w:rPr>
322
+ <w:rFonts w:eastAsia="Times New Roman" />
323
+ <w:kern w:val="0" />
324
+ <w:sz w:val="20" />
325
+ <w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA" />
326
+ </w:rPr>
327
+ <w:t>}}</w:t>
328
+ <w:br />
329
+ <w:t>{{</w:t>
330
+ </w:r>
331
+ </w:p>
332
+ </w:tc>
333
+ </w:tr>
334
+ </w:tbl>
335
+ </w:body>
336
+ ` ;
337
+ // cspell:enable
338
+
198
339
describe ( "patch-detector" , ( ) => {
199
340
describe ( "patchDetector" , ( ) => {
200
341
describe ( "document.xml and [Content_Types].xml" , ( ) => {
@@ -222,4 +363,31 @@ describe("patch-detector", () => {
222
363
} ) ;
223
364
} ) ;
224
365
} ) ;
366
+
367
+ describe ( "patchDetector" , ( ) => {
368
+ describe ( "document.xml and [Content_Types].xml" , ( ) => {
369
+ beforeEach ( ( ) => {
370
+ vi . spyOn ( JSZip , "loadAsync" ) . mockReturnValue (
371
+ new Promise < JSZip > ( ( resolve ) => {
372
+ const zip = new JSZip ( ) ;
373
+
374
+ zip . file ( "word/document.xml" , MOCK_XML_2 ) ;
375
+ zip . file ( "[Content_Types].xml" , `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>` ) ;
376
+ resolve ( zip ) ;
377
+ } ) ,
378
+ ) ;
379
+ } ) ;
380
+
381
+ afterEach ( ( ) => {
382
+ vi . restoreAllMocks ( ) ;
383
+ } ) ;
384
+
385
+ it ( "should patch the document" , async ( ) => {
386
+ const output = await patchDetector ( {
387
+ data : Buffer . from ( "" ) ,
388
+ } ) ;
389
+ expect ( output ) . toMatchObject ( [ "school_name" , "address" ] ) ;
390
+ } ) ;
391
+ } ) ;
392
+ } ) ;
225
393
} ) ;
0 commit comments