DataValidator2Test.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Cell;
  3. use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
  4. use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
  5. use PhpOffice\PhpSpreadsheet\Style\Conditional;
  6. use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
  7. class DataValidator2Test extends AbstractFunctional
  8. {
  9. public function testList(): void
  10. {
  11. $reader = new Xlsx();
  12. $spreadsheet = $reader->load('tests/data/Reader/XLSX/issue.1432b.xlsx');
  13. $sheet = $spreadsheet->getActiveSheet();
  14. self::assertSame('H1', $sheet->getTopLeftCell());
  15. self::assertSame('K3', $sheet->getSelectedCells());
  16. $testCell = $sheet->getCell('K3');
  17. $validation = $testCell->getDataValidation();
  18. self::assertSame(DataValidation::TYPE_LIST, $validation->getType());
  19. $testCell = $sheet->getCell('R2');
  20. $validation = $testCell->getDataValidation();
  21. self::assertSame(DataValidation::TYPE_LIST, $validation->getType());
  22. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
  23. $sheet = $reloadedSpreadsheet->getActiveSheet();
  24. $cell = 'K3';
  25. $testCell = $sheet->getCell($cell);
  26. $validation = $testCell->getDataValidation();
  27. self::assertSame(DataValidation::TYPE_LIST, $validation->getType());
  28. $testCell->setValue('Y');
  29. self::assertTrue($testCell->hasValidValue(), 'K3 other sheet has valid value');
  30. $testCell = $sheet->getCell($cell);
  31. $testCell->setValue('X');
  32. self::assertFalse($testCell->hasValidValue(), 'K3 other sheet has invalid value');
  33. $cell = 'J2';
  34. $testCell = $sheet->getCell($cell);
  35. $validation = $testCell->getDataValidation();
  36. self::assertSame(DataValidation::TYPE_LIST, $validation->getType());
  37. $testCell = $sheet->getCell($cell);
  38. $testCell->setValue('GBP');
  39. self::assertTrue($testCell->hasValidValue(), 'J2 other sheet has valid value');
  40. $testCell = $sheet->getCell($cell);
  41. $testCell->setValue('XYZ');
  42. self::assertFalse($testCell->hasValidValue(), 'J2 other sheet has invalid value');
  43. $cell = 'R2';
  44. $testCell = $sheet->getCell($cell);
  45. $validation = $testCell->getDataValidation();
  46. self::assertSame(DataValidation::TYPE_LIST, $validation->getType());
  47. $testCell->setValue('ListItem2');
  48. self::assertTrue($testCell->hasValidValue(), 'R2 same sheet has valid value');
  49. $testCell = $sheet->getCell($cell);
  50. $testCell->setValue('ListItem99');
  51. self::assertFalse($testCell->hasValidValue(), 'R2 same sheet has invalid value');
  52. $styles = $sheet->getConditionalStyles('I1:I1048576');
  53. self::assertCount(1, $styles);
  54. $style = $styles[0];
  55. self::assertSame(Conditional::CONDITION_CELLIS, $style->getConditionType());
  56. self::assertSame(Conditional::OPERATOR_BETWEEN, $style->getOperatorType());
  57. $conditions = $style->getConditions();
  58. self::assertSame('10', $conditions[0]);
  59. self::assertSame('20', $conditions[1]);
  60. self::assertSame('FF70AD47', $style->getStyle()->getFill()->getEndColor()->getARGB());
  61. $spreadsheet->disconnectWorksheets();
  62. $reloadedSpreadsheet->disconnectWorksheets();
  63. }
  64. }