ArrayDumperTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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\Package\Dumper;
  12. use Composer\Package\Dumper\ArrayDumper;
  13. use Composer\Package\MemoryPackage;
  14. use Composer\Package\Link;
  15. use Composer\Package\LinkConstraint\VersionConstraint;
  16. class ArrayDumperTest extends \PHPUnit_Framework_TestCase
  17. {
  18. public function setUp()
  19. {
  20. $this->dumper = new ArrayDumper();
  21. }
  22. public function testRequiredInformations()
  23. {
  24. $package = new MemoryPackage('foo', '1.0.0.0', '1.0');
  25. $config = $this->dumper->dump($package);
  26. $this->assertEquals(array('name', 'version', 'version_normalized', 'type'), array_keys($config));
  27. }
  28. /**
  29. * @dataProvider getKeys
  30. */
  31. public function testKeys($key, $value, $method = null, $expectedValue = null)
  32. {
  33. $package = new MemoryPackage('foo', '1.0.0.0', '1.0');
  34. $setter = 'set'.ucfirst($method ?: $key);
  35. $package->$setter($value);
  36. $config = $this->dumper->dump($package);
  37. $this->assertArrayHasKey($key, $config);
  38. $expectedValue = $expectedValue ?: $value;
  39. $this->assertSame($expectedValue, $config[$key]);
  40. }
  41. public function getKeys()
  42. {
  43. return array(
  44. array(
  45. 'time',
  46. new \DateTime('2012-02-01'),
  47. 'ReleaseDate',
  48. '2012-02-01 00:00:00',
  49. ),
  50. array(
  51. 'authors',
  52. array('Nils Adermann <naderman@naderman.de>', 'Jordi Boggiano <j.boggiano@seld.be>')
  53. ),
  54. array(
  55. 'homepage',
  56. 'http://getcomposer.org'
  57. ),
  58. array(
  59. 'description',
  60. 'Package Manager'
  61. ),
  62. array(
  63. 'keywords',
  64. array('package', 'dependency', 'autoload')
  65. ),
  66. array(
  67. 'bin',
  68. array('bin/composer'),
  69. 'binaries'
  70. ),
  71. array(
  72. 'license',
  73. array('MIT')
  74. ),
  75. array(
  76. 'autoload',
  77. array('psr-0' => array('Composer' => 'src/'))
  78. ),
  79. array(
  80. 'repositories',
  81. array('packagist' => false)
  82. ),
  83. array(
  84. 'scripts',
  85. array('post-update-cmd' => 'MyVendor\\MyClass::postUpdate')
  86. ),
  87. array(
  88. 'extra',
  89. array('class' => 'MyVendor\\Installer')
  90. ),
  91. array(
  92. 'require',
  93. array(new Link('foo', 'foo/bar', new VersionConstraint('=', '1.0.0.0'), 'requires', '1.0.0')),
  94. 'requires',
  95. array('foo/bar' => '1.0.0'),
  96. ),
  97. array(
  98. 'require-dev',
  99. array(new Link('foo', 'foo/bar', new VersionConstraint('=', '1.0.0.0'), 'requires (for development)', '1.0.0')),
  100. 'devRequires',
  101. array('foo/bar' => '1.0.0'),
  102. ),
  103. array(
  104. 'suggest',
  105. array('foo/bar' => 'very useful package'),
  106. 'suggests'
  107. ),
  108. );
  109. }
  110. }