@@ -385,4 +385,59 @@ public function testDrawingPassThroughGetterSetter(): void
385385 $ reader ->setEnableDrawingPassThrough (false );
386386 self ::assertFalse ($ reader ->getEnableDrawingPassThrough ());
387387 }
388+
389+ /**
390+ * Test that the drawingPassThroughEnabled flag is correctly set in unparsedLoadedData.
391+ * This verifies the Reader sets the flag and the Writer's getPassThroughDrawingXml checks it.
392+ */
393+ public function testDrawingPassThroughEnabledFlagIsSetCorrectly (): void
394+ {
395+ // Test 1: Load WITHOUT pass-through (default)
396+ $ reader = new XlsxReader ();
397+ self ::assertFalse ($ reader ->getEnableDrawingPassThrough (), 'Pass-through should be disabled by default ' );
398+ $ spreadsheet = $ reader ->load (self ::TEMPLATE );
399+
400+ $ sheet = $ spreadsheet ->getActiveSheet ();
401+ $ unparsedData = $ spreadsheet ->getUnparsedLoadedData ();
402+ $ codeName = $ sheet ->getCodeName ();
403+
404+ // Verify that drawingPassThroughEnabled flag is NOT set when pass-through is disabled
405+ self ::assertArrayHasKey ('sheets ' , $ unparsedData );
406+ self ::assertIsArray ($ unparsedData ['sheets ' ]);
407+
408+ // The sheet may exist in unparsedData (legacy empty drawings), but the flag should be absent or false
409+ if (isset ($ unparsedData ['sheets ' ][$ codeName ])) {
410+ $ sheetData = $ unparsedData ['sheets ' ][$ codeName ];
411+ self ::assertIsArray ($ sheetData );
412+ $ flag = $ sheetData ['drawingPassThroughEnabled ' ] ?? false ;
413+ self ::assertFalse ($ flag , 'drawingPassThroughEnabled should be false/absent when pass-through is disabled ' );
414+ }
415+
416+ $ spreadsheet ->disconnectWorksheets ();
417+
418+ // Test 2: Load WITH pass-through enabled
419+ $ reader2 = new XlsxReader ();
420+ $ reader2 ->setEnableDrawingPassThrough (true );
421+ self ::assertTrue ($ reader2 ->getEnableDrawingPassThrough (), 'Pass-through should be enabled ' );
422+ $ spreadsheet2 = $ reader2 ->load (self ::TEMPLATE );
423+
424+ $ sheet2 = $ spreadsheet2 ->getActiveSheet ();
425+ $ unparsedData2 = $ spreadsheet2 ->getUnparsedLoadedData ();
426+ $ codeName2 = $ sheet2 ->getCodeName ();
427+
428+ // Verify that drawingPassThroughEnabled flag IS set when pass-through is enabled
429+ self ::assertArrayHasKey ('sheets ' , $ unparsedData2 );
430+ self ::assertIsArray ($ unparsedData2 ['sheets ' ]);
431+ self ::assertArrayHasKey ($ codeName2 , $ unparsedData2 ['sheets ' ]);
432+ self ::assertIsArray ($ unparsedData2 ['sheets ' ][$ codeName2 ]);
433+ self ::assertArrayHasKey ('drawingPassThroughEnabled ' , $ unparsedData2 ['sheets ' ][$ codeName2 ], 'drawingPassThroughEnabled flag should exist ' );
434+ self ::assertTrue ($ unparsedData2 ['sheets ' ][$ codeName2 ]['drawingPassThroughEnabled ' ], 'drawingPassThroughEnabled should be true when pass-through is enabled ' );
435+
436+ // Verify that the drawing XML is also stored
437+ self ::assertArrayHasKey ('Drawings ' , $ unparsedData2 ['sheets ' ][$ codeName2 ]);
438+ self ::assertIsArray ($ unparsedData2 ['sheets ' ][$ codeName2 ]['Drawings ' ]);
439+ self ::assertNotEmpty ($ unparsedData2 ['sheets ' ][$ codeName2 ]['Drawings ' ], 'Drawing XML should be stored when pass-through is enabled ' );
440+
441+ $ spreadsheet2 ->disconnectWorksheets ();
442+ }
388443}
0 commit comments