diff --git a/docs/changes/1.x/1.4.0.md b/docs/changes/1.x/1.4.0.md index 7213519719..6fdef4e74f 100644 --- a/docs/changes/1.x/1.4.0.md +++ b/docs/changes/1.x/1.4.0.md @@ -35,6 +35,7 @@ - Bump dompdf/dompdf from 2.0.4 to 3.0.0 by [@dependabot](https://github.com/dependabot) fixing [#2621](https://github.com/PHPOffice/PHPWord/issues/2621) in [#2666](https://github.com/PHPOffice/PHPWord/pull/2666) - Add test case to make sure vMerge defaults to 'continue' by [@SpraxDev](https://github.com/SpraxDev) in [#2677](https://github.com/PHPOffice/PHPWord/pull/2677) - Adding the possibility to use iterate search and replace with setValues by [@moghwan](https://github.com/moghwan) in [#2632](https://github.com/PHPOffice/PHPWord/pull/2640) +- Add test cases that test the ODTText and Word2007 reader using the corresponding writer, increasing test coverage by [@MichaelPFrey](https://github.com/MichaelPFrey) in [#2745](https://github.com/PHPOffice/PHPWord/pull/2745) ### Deprecations - Deprecate `PhpOffice\PhpWord\Style\Paragraph::getIndent()` : Use `PhpOffice\PhpWord\Style\Paragraph::getIndentLeft()` diff --git a/tests/PhpWordTests/WriteReadback/ODTextTest.php b/tests/PhpWordTests/WriteReadback/ODTextTest.php new file mode 100644 index 0000000000..cee0f38301 --- /dev/null +++ b/tests/PhpWordTests/WriteReadback/ODTextTest.php @@ -0,0 +1,59 @@ +addSection(); + $sectionWriter->addText($testText); + + $writer = new ODText($phpWordWriter); + $file = __DIR__ . '/../_files/temp.odt'; + $writer->save($file); + + self::assertFileExists($file); + + $phpWordReader = IOFactory::load($file, 'ODText'); + + self::assertCount(1, $phpWordReader->getSections()); + self::assertCount(1, $phpWordReader->getSections()[0]->getElements()); + self::assertInstanceOf(TextRun::class, $phpWordReader->getSections()[0]->getElements()[0]); + self::assertEquals($testText, $phpWordReader->getSections()[0]->getElements()[0]->getText()); + unlink($file); + } +} diff --git a/tests/PhpWordTests/WriteReadback/Word2007Test.php b/tests/PhpWordTests/WriteReadback/Word2007Test.php new file mode 100644 index 0000000000..572977ccf8 --- /dev/null +++ b/tests/PhpWordTests/WriteReadback/Word2007Test.php @@ -0,0 +1,170 @@ +setDefaultFontName($testDefaultFontName); + + $writer = new Word2007($phpWordWriter); + $file = __DIR__ . '/../_files/temp.docx'; + $writer->save($file); + + self::assertFileExists($file); + + $phpWordReader = IOFactory::load($file, 'Word2007'); + + self::assertEquals($testDefaultFontName, $phpWordReader->getDefaultFontName()); + + unlink($file); + } + + /** + * Test default Asian font name. + */ + public function testDefaultAsianFontName(): void + { + $phpWordWriter = new PhpWord(); + $testDefaultFontName = '標楷體'; + $phpWordWriter->setDefaultAsianFontName($testDefaultFontName); + + $writer = new Word2007($phpWordWriter); + $file = __DIR__ . '/../_files/temp.docx'; + $writer->save($file); + + self::assertFileExists($file); + + $phpWordReader = IOFactory::load($file, 'Word2007'); + + self::assertEquals($testDefaultFontName, $phpWordReader->getDefaultAsianFontName()); + + unlink($file); + } + + /** + * Test default font size. + */ + public function testDefaulFontSize(): void + { + $phpWordWriter = new PhpWord(); + $testDefaultFontSize = 144; + $phpWordWriter->setDefaultFontSize($testDefaultFontSize); + + $writer = new Word2007($phpWordWriter); + $file = __DIR__ . '/../_files/temp.docx'; + $writer->save($file); + + self::assertFileExists($file); + + $phpWordReader = IOFactory::load($file, 'Word2007'); + + self::assertEquals($testDefaultFontSize, $phpWordReader->getDefaultFontSize()); + + unlink($file); + } + + /** + * Test default font color. + */ + public function testDefaultFontColor(): void + { + $phpWordWriter = new PhpWord(); + $testDefaultFontColor = '00FF00'; + $phpWordWriter->setDefaultFontColor($testDefaultFontColor); + + $writer = new Word2007($phpWordWriter); + $file = __DIR__ . '/../_files/temp.docx'; + $writer->save($file); + + self::assertFileExists($file); + + $phpWordReader = IOFactory::load($file, 'Word2007'); + + self::assertEquals($testDefaultFontColor, $phpWordReader->getDefaultFontColor()); + + unlink($file); + } + + /** + * Test Zoom. + */ + public function testZoom(): void + { + $phpWordWriter = new PhpWord(); + $zoomLevel = 75; + $phpWordWriter->getSettings()->setZoom($zoomLevel); + + $writer = new Word2007($phpWordWriter); + $file = __DIR__ . '/../_files/temp.docx'; + $writer->save($file); + + self::assertFileExists($file); + + $phpWordReader = IOFactory::load($file, 'Word2007'); + + self::assertEquals($zoomLevel, $phpWordReader->getSettings()->getZoom()); + + unlink($file); + } + + /** + * Test a document with one section and text. + */ + public function testOneSectionWithText(): void + { + $phpWordWriter = new PhpWord(); + $testText = 'Hello World!'; + $sectionWriter = $phpWordWriter->addSection(); + $sectionWriter->addText($testText); + + $writer = new Word2007($phpWordWriter); + $file = __DIR__ . '/../_files/temp.docx'; + $writer->save($file); + + self::assertFileExists($file); + + $phpWordReader = IOFactory::load($file, 'Word2007'); + + self::assertCount(1, $phpWordReader->getSections()); + self::assertCount(1, $phpWordReader->getSections()[0]->getElements()); + self::assertInstanceOf(TextRun::class, $phpWordReader->getSections()[0]->getElements()[0]); + self::assertEquals($testText, $phpWordReader->getSections()[0]->getElements()[0]->getText()); + unlink($file); + } +}