WritingUtilsTest.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace Knuckles\Scribe\Tests\Unit;
  3. use Knuckles\Scribe\Tests\BaseLaravelTest;
  4. use Knuckles\Scribe\Tools\WritingUtils;
  5. class WritingUtilsTest extends BaseLaravelTest
  6. {
  7. /** @test */
  8. public function print_query_params_as_key_value_js()
  9. {
  10. $queryParams = WritingUtils::printQueryParamsAsKeyValue($this->queryParams());
  11. $this->assertStringsEqualNormalizingNewlines(<<<EOL
  12. {
  13. "name query": "name value",
  14. "list query[0]": "list element 1",
  15. "list query[1]": "list element 2",
  16. "nested query[nested query level 1 array][nested query level 2 list][0]": "nested level 2 list element 1",
  17. "nested query[nested query level 1 array][nested query level 2 list][1]": "nested level 2 list element 2",
  18. "nested query[nested query level 1 array][nested query level 2 query]": "name nested 2",
  19. "nested query[nested query level 1 query]": "name nested 1",
  20. }
  21. EOL, $queryParams);
  22. }
  23. /** @test */
  24. public function print_query_params_as_key_value_php()
  25. {
  26. $queryParams = WritingUtils::printQueryParamsAsKeyValue($this->queryParams(), "'", " =>", 4, "[]");
  27. $this->assertStringsEqualNormalizingNewlines(<<<EOL
  28. [
  29. 'name query' => 'name value',
  30. 'list query[0]' => 'list element 1',
  31. 'list query[1]' => 'list element 2',
  32. 'nested query[nested query level 1 array][nested query level 2 list][0]' => 'nested level 2 list element 1',
  33. 'nested query[nested query level 1 array][nested query level 2 list][1]' => 'nested level 2 list element 2',
  34. 'nested query[nested query level 1 array][nested query level 2 query]' => 'name nested 2',
  35. 'nested query[nested query level 1 query]' => 'name nested 1',
  36. ]
  37. EOL, $queryParams);
  38. }
  39. /** @test */
  40. public function print_query_params_as_key_value_python()
  41. {
  42. $queryParams = WritingUtils::printQueryParamsAsKeyValue($this->queryParams(), "'", ":", 2, "{}");
  43. $this->assertStringsEqualNormalizingNewlines(<<<EOL
  44. {
  45. 'name query': 'name value',
  46. 'list query[0]': 'list element 1',
  47. 'list query[1]': 'list element 2',
  48. 'nested query[nested query level 1 array][nested query level 2 list][0]': 'nested level 2 list element 1',
  49. 'nested query[nested query level 1 array][nested query level 2 list][1]': 'nested level 2 list element 2',
  50. 'nested query[nested query level 1 array][nested query level 2 query]': 'name nested 2',
  51. 'nested query[nested query level 1 query]': 'name nested 1',
  52. }
  53. EOL, $queryParams);
  54. }
  55. /** @test */
  56. public function print_query_params_as_string_bash()
  57. {
  58. $queryParams = WritingUtils::printQueryParamsAsString($this->queryParams());
  59. $this->assertEquals(
  60. 'name+query=name+value&list+query[]=list+element+1&list+query[]=list+element+2&nested+query[nested+query+level+1+array][nested+query+level+2+list][]=nested+level+2+list+element+1&nested+query[nested+query+level+1+array][nested+query+level+2+list][]=nested+level+2+list+element+2&nested+query[nested+query+level+1+array][nested+query+level+2+query]=name+nested+2&nested+query[nested+query+level+1+query]=name+nested+1',
  61. $queryParams
  62. );
  63. }
  64. private function queryParams(): array
  65. {
  66. return [
  67. 'name query' => 'name value',
  68. 'list query' => [
  69. 'list element 1',
  70. 'list element 2',
  71. ],
  72. 'nested query' => [
  73. 'nested query level 1 array' => [
  74. 'nested query level 2 list' => [
  75. 'nested level 2 list element 1',
  76. 'nested level 2 list element 2',
  77. ],
  78. 'nested query level 2 query' => 'name nested 2',
  79. ],
  80. 'nested query level 1 query' => 'name nested 1'
  81. ],
  82. ];
  83. }
  84. protected function assertStringsEqualNormalizingNewlines(string $expected, string $actual)
  85. {
  86. $this->assertEquals(str_replace("\r", "", $expected), str_replace("\r", "", $actual));
  87. }
  88. }