JsonManipulatorTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /*
  3. * This file is part of Composer.
  4. *
  5. * (c) Nils Adermann <naderman@naderman.de>
  6. * Jordi Boggiano <j.boggiano@seld.be>
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11. namespace Composer\Test\Json;
  12. use Composer\Json\JsonManipulator;
  13. class JsonManipulatorTest extends \PHPUnit_Framework_TestCase
  14. {
  15. /**
  16. * @dataProvider linkProvider
  17. */
  18. public function testAddLink($json, $type, $package, $constraint, $expected)
  19. {
  20. $manipulator = new JsonManipulator($json);
  21. $this->assertTrue($manipulator->addLink($type, $package, $constraint));
  22. $this->assertEquals($expected, $manipulator->getContents());
  23. }
  24. public function linkProvider()
  25. {
  26. return array(
  27. array(
  28. '{
  29. }',
  30. 'require',
  31. 'vendor/baz',
  32. 'qux',
  33. '{
  34. "require": {
  35. "vendor/baz": "qux"
  36. }
  37. }
  38. '
  39. ),
  40. array(
  41. '{
  42. "foo": "bar"
  43. }',
  44. 'require',
  45. 'vendor/baz',
  46. 'qux',
  47. '{
  48. "foo": "bar",
  49. "require": {
  50. "vendor/baz": "qux"
  51. }
  52. }
  53. '
  54. ),
  55. array(
  56. '{
  57. "require": {
  58. }
  59. }',
  60. 'require',
  61. 'vendor/baz',
  62. 'qux',
  63. '{
  64. "require": {
  65. "vendor/baz": "qux"
  66. }
  67. }
  68. '
  69. ),
  70. array(
  71. '{
  72. "require": {
  73. "foo": "bar"
  74. }
  75. }',
  76. 'require',
  77. 'vendor/baz',
  78. 'qux',
  79. '{
  80. "require": {
  81. "foo": "bar",
  82. "vendor/baz": "qux"
  83. }
  84. }
  85. '
  86. ),
  87. array(
  88. '{
  89. "require":
  90. {
  91. "foo": "bar",
  92. "vendor/baz": "baz"
  93. }
  94. }',
  95. 'require',
  96. 'vendor/baz',
  97. 'qux',
  98. '{
  99. "require":
  100. {
  101. "foo": "bar",
  102. "vendor/baz": "qux"
  103. }
  104. }
  105. '
  106. ),
  107. array(
  108. '{
  109. "require":
  110. {
  111. "foo": "bar",
  112. "vendor\/baz": "baz"
  113. }
  114. }',
  115. 'require',
  116. 'vendor/baz',
  117. 'qux',
  118. '{
  119. "require":
  120. {
  121. "foo": "bar",
  122. "vendor/baz": "qux"
  123. }
  124. }
  125. '
  126. ),
  127. );
  128. }
  129. }