DataValidationTest.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xls;
  3. use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
  4. use PhpOffice\PhpSpreadsheet\Reader\Xls;
  5. use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
  6. use PHPUnit\Framework\TestCase;
  7. class DataValidationTest extends TestCase
  8. {
  9. /**
  10. * @var Worksheet
  11. */
  12. protected $sheet;
  13. protected function setUp(): void
  14. {
  15. $filename = 'tests/data/Reader/XLS/DataValidation.xls';
  16. $reader = new Xls();
  17. $spreadsheet = $reader->load($filename);
  18. $this->sheet = $spreadsheet->getActiveSheet();
  19. }
  20. /**
  21. * @dataProvider dataValidationProvider
  22. */
  23. public function testDataValidation(string $expectedRange, array $expectedRule): void
  24. {
  25. $hasDataValidation = $this->sheet->dataValidationExists($expectedRange);
  26. self::assertTrue($hasDataValidation);
  27. $dataValidation = $this->sheet->getDataValidation($expectedRange);
  28. self::assertSame($expectedRule['type'], $dataValidation->getType());
  29. self::assertSame($expectedRule['operator'], $dataValidation->getOperator());
  30. self::assertSame($expectedRule['formula'], $dataValidation->getFormula1());
  31. }
  32. public function dataValidationProvider(): array
  33. {
  34. return [
  35. [
  36. 'B2',
  37. [
  38. 'type' => DataValidation::TYPE_WHOLE,
  39. 'operator' => DataValidation::OPERATOR_GREATERTHANOREQUAL,
  40. 'formula' => '18',
  41. ],
  42. ],
  43. [
  44. 'B3',
  45. [
  46. 'type' => DataValidation::TYPE_LIST,
  47. 'operator' => DataValidation::OPERATOR_BETWEEN,
  48. 'formula' => '"Blocked,Pending,Approved"',
  49. ],
  50. ],
  51. ];
  52. }
  53. }