Improve ZIP interface for better mime detection
The ZipHelper interface is now more generic and allow single files to be added. It supports adding uncompressed files (for PHP7+), which is required to have the mime detection magic work with ODS files. Also fixed a few issues with the created ODS file (thanks to https://odf-validator.rhcloud.com/)
This commit is contained in:
1 parent
44d72d8245
commit
ed0e8f79cc
4 files changed
+194
-68
No files matched your search
@@ -5,6 +5,7 @@ namespace Box\Spout\Writer\ODS;
|
||||
use Box\Spout\Common\Type;
|
||||
use Box\Spout\Reader\Wrapper\XMLReader;
|
||||
use Box\Spout\TestUsingResource;
|
||||
use Box\Spout\Writer\Common\Helper\ZipHelper;
|
||||
use Box\Spout\Writer\WriterFactory;
|
||||
|
||||
/**
|
||||
@@ -368,6 +369,30 @@ class WriterTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertValueWasWrittenToSheet($fileName, 1, 'a dream');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testGeneratedFileShouldHaveTheCorrectMimeType()
|
||||
{
|
||||
// Only PHP7+ gives the correct mime type since it requires adding
|
||||
// uncompressed files to the final archive (which support was added in PHP7)
|
||||
if (!ZipHelper::canChooseCompressionMethod()) {
|
||||
$this->markTestSkipped(
|
||||
'The PHP version used does not support setting the compression method of archived files,
|
||||
resulting in the mime type to be detected incorrectly.'
|
||||
);
|
||||
}
|
||||
|
||||
$fileName = 'test_mime_type.ods';
|
||||
$resourcePath = $this->getGeneratedResourcePath($fileName);
|
||||
$dataRow = ['foo'];
|
||||
|
||||
$this->writeToODSFile([$dataRow], $fileName);
|
||||
|
||||
$finfo = new \finfo(FILEINFO_MIME_TYPE);
|
||||
$this->assertEquals('application/vnd.oasis.opendocument.spreadsheet', $finfo->file($resourcePath));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $allRows
|
||||
* @param string $fileName
|
||||
|
||||
Reference in new issue
Block a user