Introduce an options manager for all writers (#423)
This will improve the management of options and simplify some methods' signatures. This commit will also help moving the code to a better state regarding Dependency Injection.
This commit is contained in:
1 parent
f9d8ad8be3
commit
a366d0d0af
22 files changed
+447
-113
No files matched your search
@@ -204,6 +204,7 @@ class WriterTest extends \PHPUnit_Framework_TestCase
|
||||
$this->createGeneratedFolderIfNeeded($fileName);
|
||||
$resourcePath = $this->getGeneratedResourcePath($fileName);
|
||||
|
||||
/** @var \Box\Spout\Writer\CSV\Writer $writer */
|
||||
$writer = WriterFactory::create(Type::CSV);
|
||||
$writer->setFieldDelimiter($fieldDelimiter);
|
||||
$writer->setFieldEnclosure($fieldEnclosure);
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace Box\Spout\Writer\Common\Manager;
|
||||
|
||||
/**
|
||||
* Class OptionsManagerTest
|
||||
*
|
||||
* @package Box\Spout\Writer\Common\Manager
|
||||
*/
|
||||
class OptionsManagerTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testOptionsManagerShouldReturnDefaultOptionsIfNothingSet()
|
||||
{
|
||||
$optionsManager = new FakeOptionsManager();
|
||||
$this->assertEquals('foo-val', $optionsManager->getOption('foo'));
|
||||
$this->assertEquals(false, $optionsManager->getOption('bar'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testOptionsManagerShouldReturnUpdatedOptionValue()
|
||||
{
|
||||
$optionsManager = new FakeOptionsManager();
|
||||
$optionsManager->setOption('foo', 'new-val');
|
||||
$this->assertEquals('new-val', $optionsManager->getOption('foo'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testOptionsManagerShouldReturnNullIfNoDefaultValueSet()
|
||||
{
|
||||
$optionsManager = new FakeOptionsManager();
|
||||
$this->assertNull($optionsManager->getOption('baz'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testOptionsManagerShouldReturnNullIfNoOptionNotSupported()
|
||||
{
|
||||
$optionsManager = new FakeOptionsManager();
|
||||
$optionsManager->setOption('not-supported', 'something');
|
||||
$this->assertNull($optionsManager->getOption('not-supported'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO: Convert this to anonymous class when PHP < 7 support is dropped
|
||||
class FakeOptionsManager extends OptionsManager
|
||||
{
|
||||
protected function getSupportedOptions()
|
||||
{
|
||||
return [
|
||||
'foo',
|
||||
'bar',
|
||||
'baz',
|
||||
];
|
||||
}
|
||||
|
||||
protected function setDefaultOptions()
|
||||
{
|
||||
$this->setOption('foo', 'foo-val');
|
||||
$this->setOption('bar', false);
|
||||
}
|
||||
}
|
||||
@@ -375,7 +375,7 @@ class WriterWithStyleTest extends \PHPUnit_Framework_TestCase
|
||||
$this->createGeneratedFolderIfNeeded($fileName);
|
||||
$resourcePath = $this->getGeneratedResourcePath($fileName);
|
||||
|
||||
/** @var \Box\Spout\Writer\XLSX\Writer $writer */
|
||||
/** @var \Box\Spout\Writer\ODS\Writer $writer */
|
||||
$writer = WriterFactory::create(Type::ODS);
|
||||
$writer->setDefaultRowStyle($defaultStyle);
|
||||
|
||||
@@ -467,7 +467,7 @@ class WriterWithStyleTest extends \PHPUnit_Framework_TestCase
|
||||
/**
|
||||
* @param string $fileName
|
||||
* @param string $section
|
||||
* @return \DomElement
|
||||
* @return \DomNode
|
||||
*/
|
||||
private function getXmlSectionFromStylesXmlFile($fileName, $section)
|
||||
{
|
||||
|
||||
@@ -11,6 +11,7 @@ use Box\Spout\Writer\Style\Color;
|
||||
use Box\Spout\Writer\Style\Style;
|
||||
use Box\Spout\Writer\Style\StyleBuilder;
|
||||
use Box\Spout\Writer\WriterFactory;
|
||||
use Box\Spout\Writer\XLSX\Manager\OptionsManager;
|
||||
|
||||
/**
|
||||
* Class WriterWithStyleTest
|
||||
@@ -129,9 +130,9 @@ class WriterWithStyleTest extends \PHPUnit_Framework_TestCase
|
||||
// First font should be the default one
|
||||
$defaultFontElement = $fontElements->item(0);
|
||||
$this->assertChildrenNumEquals(3, $defaultFontElement, 'The default font should only have 3 properties.');
|
||||
$this->assertFirstChildHasAttributeEquals((string) Writer::DEFAULT_FONT_SIZE, $defaultFontElement, 'sz', 'val');
|
||||
$this->assertFirstChildHasAttributeEquals((string) OptionsManager::DEFAULT_FONT_SIZE, $defaultFontElement, 'sz', 'val');
|
||||
$this->assertFirstChildHasAttributeEquals(Color::toARGB(Style::DEFAULT_FONT_COLOR), $defaultFontElement, 'color', 'rgb');
|
||||
$this->assertFirstChildHasAttributeEquals(Writer::DEFAULT_FONT_NAME, $defaultFontElement, 'name', 'val');
|
||||
$this->assertFirstChildHasAttributeEquals(OptionsManager::DEFAULT_FONT_NAME, $defaultFontElement, 'name', 'val');
|
||||
|
||||
// Second font should contain data from the first created style
|
||||
$secondFontElement = $fontElements->item(1);
|
||||
@@ -140,9 +141,9 @@ class WriterWithStyleTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertChildExists($secondFontElement, 'i');
|
||||
$this->assertChildExists($secondFontElement, 'u');
|
||||
$this->assertChildExists($secondFontElement, 'strike');
|
||||
$this->assertFirstChildHasAttributeEquals((string) Writer::DEFAULT_FONT_SIZE, $secondFontElement, 'sz', 'val');
|
||||
$this->assertFirstChildHasAttributeEquals((string) OptionsManager::DEFAULT_FONT_SIZE, $secondFontElement, 'sz', 'val');
|
||||
$this->assertFirstChildHasAttributeEquals(Color::toARGB(Style::DEFAULT_FONT_COLOR), $secondFontElement, 'color', 'rgb');
|
||||
$this->assertFirstChildHasAttributeEquals(Writer::DEFAULT_FONT_NAME, $secondFontElement, 'name', 'val');
|
||||
$this->assertFirstChildHasAttributeEquals(OptionsManager::DEFAULT_FONT_NAME, $secondFontElement, 'name', 'val');
|
||||
|
||||
// Third font should contain data from the second created style
|
||||
$thirdFontElement = $fontElements->item(2);
|
||||
|
||||
Reference in new issue
Block a user