AnnotationTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. use \Codeception\Util\Annotation;
  3. /**
  4. * Class AnnotationTest
  5. *
  6. * @author davert
  7. * @tag codeception
  8. * @tag tdd
  9. */
  10. class AnnotationTest extends \PHPUnit\Framework\TestCase
  11. {
  12. public function testClassAnnotation()
  13. {
  14. $this->assertEquals('davert', Annotation::forClass(__CLASS__)->fetch('author'));
  15. $this->assertEquals('codeception', Annotation::forClass(__CLASS__)->fetch('tag'));
  16. }
  17. /**
  18. * @param $var1
  19. * @param $var2
  20. * @return null
  21. */
  22. public function testMethodAnnotation()
  23. {
  24. $this->assertEquals('null', Annotation::forClass(__CLASS__)
  25. ->method('testMethodAnnotation')
  26. ->fetch('return'));
  27. }
  28. public function testMultipleClassAnnotations()
  29. {
  30. $this->assertEquals(array('codeception', 'tdd'), Annotation::forClass(__CLASS__)->fetchAll('tag'));
  31. }
  32. public function testMultipleMethodAnnotations()
  33. {
  34. $this->assertEquals(
  35. array('$var1', '$var2'),
  36. Annotation::forClass(__CLASS__)->method('testMethodAnnotation')->fetchAll('param')
  37. );
  38. }
  39. public function testGetAnnotationsFromDocBlock()
  40. {
  41. $docblock = <<<EOF
  42. @user davert
  43. @param key1
  44. @param key2
  45. EOF;
  46. $this->assertEquals(['davert'], Annotation::fetchAnnotationsFromDocblock('user', $docblock));
  47. $this->assertEquals(['key1', 'key2'], Annotation::fetchAnnotationsFromDocblock('param', $docblock));
  48. }
  49. public function testGetAllAnnotationsFromDocBlock()
  50. {
  51. $docblock = <<<EOF
  52. @user davert
  53. @param key1
  54. @param key2
  55. EOF;
  56. $all = Annotation::fetchAllAnnotationsFromDocblock($docblock);
  57. codecept_debug($all);
  58. $this->assertEquals([
  59. 'user' => ['davert'],
  60. 'param' => ['key1', 'key2']
  61. ], Annotation::fetchAllAnnotationsFromDocblock($docblock));
  62. }
  63. public function testValueToSupportJson()
  64. {
  65. $values = Annotation::arrayValue('{ "code": "200", "user": "davert", "email": "davert@gmail.com" }');
  66. $this->assertEquals(['code' => '200', 'user' => 'davert', 'email' => 'davert@gmail.com'], $values);
  67. }
  68. public function testValueToSupportAnnotationStyle()
  69. {
  70. $values = Annotation::arrayValue('( code="200", user="davert", email = "davert@gmail.com")');
  71. $this->assertEquals(['code' => '200', 'user' => 'davert', 'email' => 'davert@gmail.com'], $values);
  72. }
  73. }