OdsPropertiesTest.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Ods;
  3. use PhpOffice\PhpSpreadsheet\Document\Properties;
  4. use PhpOffice\PhpSpreadsheet\Reader\Ods;
  5. use PhpOffice\PhpSpreadsheet\Shared\Date;
  6. use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
  7. class OdsPropertiesTest extends AbstractFunctional
  8. {
  9. /**
  10. * @var string
  11. */
  12. private $timeZone;
  13. protected function setUp(): void
  14. {
  15. $this->timeZone = date_default_timezone_get();
  16. date_default_timezone_set('UTC');
  17. }
  18. protected function tearDown(): void
  19. {
  20. date_default_timezone_set($this->timeZone);
  21. }
  22. public function testLoadOdsWorkbookProperties(): void
  23. {
  24. $customPropertySet = [
  25. 'Owner' => ['type' => Properties::PROPERTY_TYPE_STRING, 'value' => 'PHPOffice'],
  26. 'Tested' => ['type' => Properties::PROPERTY_TYPE_BOOLEAN, 'value' => true],
  27. 'Counter' => ['type' => Properties::PROPERTY_TYPE_FLOAT, 'value' => 10.0],
  28. 'TestDate' => ['type' => Properties::PROPERTY_TYPE_DATE, 'value' => '2019-06-30'],
  29. 'HereAndNow' => ['type' => Properties::PROPERTY_TYPE_DATE, 'value' => '2019-06-30'],
  30. ];
  31. $filename = 'tests/data/Reader/Ods/propertyTest.ods';
  32. $reader = new Ods();
  33. $spreadsheet = $reader->load($filename);
  34. $properties = $spreadsheet->getProperties();
  35. // Core Properties
  36. // self::assertSame('Mark Baker', $properties->getCreator());
  37. self::assertSame('Property Test File', $properties->getTitle());
  38. self::assertSame('Testing for Properties', $properties->getSubject());
  39. self::assertSame('TEST ODS PHPSpreadsheet', $properties->getKeywords());
  40. // Extended Properties
  41. // self::assertSame('PHPOffice', $properties->getCompany());
  42. // self::assertSame('The Big Boss', $properties->getManager());
  43. // Custom Properties
  44. $customProperties = $properties->getCustomProperties();
  45. self::assertIsArray($customProperties);
  46. $customProperties = array_flip($customProperties);
  47. self::assertArrayHasKey('TestDate', $customProperties);
  48. foreach ($customPropertySet as $propertyName => $testData) {
  49. self::assertTrue($properties->isCustomPropertySet($propertyName));
  50. self::assertSame($testData['type'], $properties->getCustomPropertyType($propertyName));
  51. $result = $properties->getCustomPropertyValue($propertyName);
  52. if ($properties->getCustomPropertyType($propertyName) == Properties::PROPERTY_TYPE_DATE) {
  53. $result = Date::formattedDateTimeFromTimestamp("$result", 'Y-m-d');
  54. }
  55. self::assertSame($testData['value'], $result);
  56. }
  57. }
  58. public function testReloadOdsWorkbookProperties(): void
  59. {
  60. $customPropertySet = [
  61. 'Owner' => ['type' => Properties::PROPERTY_TYPE_STRING, 'value' => 'PHPOffice'],
  62. 'Tested' => ['type' => Properties::PROPERTY_TYPE_BOOLEAN, 'value' => true],
  63. 'Counter' => ['type' => Properties::PROPERTY_TYPE_FLOAT, 'value' => 10.0],
  64. 'TestDate' => ['type' => Properties::PROPERTY_TYPE_DATE, 'value' => '2019-06-30'],
  65. 'HereAndNow' => ['type' => Properties::PROPERTY_TYPE_DATE, 'value' => '2019-06-30'],
  66. ];
  67. $filename = 'tests/data/Reader/Ods/propertyTest.ods';
  68. $reader = new Ods();
  69. $spreadsheetOld = $reader->load($filename);
  70. $spreadsheet = $this->writeAndReload($spreadsheetOld, 'Ods');
  71. $properties = $spreadsheet->getProperties();
  72. // Core Properties
  73. // self::assertSame('Mark Baker', $properties->getCreator());
  74. self::assertSame('Property Test File', $properties->getTitle());
  75. self::assertSame('Testing for Properties', $properties->getSubject());
  76. self::assertSame('TEST ODS PHPSpreadsheet', $properties->getKeywords());
  77. // Extended Properties
  78. // self::assertSame('PHPOffice', $properties->getCompany());
  79. // self::assertSame('The Big Boss', $properties->getManager());
  80. // Custom Properties
  81. $customProperties = $properties->getCustomProperties();
  82. self::assertIsArray($customProperties);
  83. $customProperties = array_flip($customProperties);
  84. self::assertArrayHasKey('TestDate', $customProperties);
  85. foreach ($customPropertySet as $propertyName => $testData) {
  86. self::assertTrue($properties->isCustomPropertySet($propertyName));
  87. self::assertSame($testData['type'], $properties->getCustomPropertyType($propertyName));
  88. $result = $properties->getCustomPropertyValue($propertyName);
  89. if ($properties->getCustomPropertyType($propertyName) == Properties::PROPERTY_TYPE_DATE) {
  90. $result = Date::formattedDateTimeFromTimestamp("$result", 'Y-m-d');
  91. }
  92. self::assertSame($testData['value'], $result);
  93. }
  94. }
  95. }