ConfigDifferTest.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace Knuckles\Scribe\Tests\Unit;
  3. use Knuckles\Scribe\Tests\BaseUnitTest;
  4. use Knuckles\Scribe\Tools\ConfigDiffer;
  5. class ConfigDifferTest extends BaseUnitTest
  6. {
  7. /** @test */
  8. public function returns_empty_when_there_are_no_changes()
  9. {
  10. $default = [
  11. 'title' => null,
  12. 'theme' => 'default',
  13. 'extra' => 'ignored',
  14. ];
  15. $user = [
  16. 'theme' => 'default',
  17. 'title' => null,
  18. ];
  19. $differ = new ConfigDiffer($default, $user);
  20. $diff = $differ->getDiff();
  21. $this->assertEquals([], $diff);
  22. }
  23. /** @test */
  24. public function works()
  25. {
  26. $default = [
  27. 'title' => null,
  28. 'theme' => 'default',
  29. ];
  30. $user = [
  31. 'theme' => 'elements',
  32. 'title' => null,
  33. ];
  34. $differ = new ConfigDiffer($default, $user);
  35. $diff = $differ->getDiff();
  36. $this->assertEquals([
  37. "theme" => '"elements"',
  38. ], $diff);
  39. }
  40. /** @test */
  41. public function ignores_specified_paths()
  42. {
  43. $default = [
  44. 'theme' => 'default',
  45. 'description' => '',
  46. 'test' => [
  47. 'array' => [ 'old-item' ],
  48. 'string' => null,
  49. ],
  50. ];
  51. $user = [
  52. 'theme' => 'elements',
  53. 'description' => 'Details',
  54. 'test' => [
  55. 'string' => 'value',
  56. 'array' => [ 'new-item' ]
  57. ],
  58. ];
  59. $differ = new ConfigDiffer($default, $user, ignorePaths: ['description', 'test.array']);
  60. $diff = $differ->getDiff();
  61. $this->assertEquals([
  62. "theme" => '"elements"',
  63. 'test.string' => '"value"',
  64. ], $diff);
  65. }
  66. }