GeneratorsTest.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace yiiunit\gii;
  3. use yii\gii\CodeFile;
  4. use yii\gii\generators\controller\Generator as ControllerGenerator;
  5. use yii\gii\generators\crud\Generator as CRUDGenerator;
  6. use yii\gii\generators\extension\Generator as ExtensionGenerator;
  7. use yii\gii\generators\form\Generator as FormGenerator;
  8. use yii\gii\generators\model\Generator as ModelGenerator;
  9. use yii\gii\generators\module\Generator as ModuleGenerator;
  10. /**
  11. * GeneratorsTest checks that Gii generators aren't throwing any errors during generation
  12. * @group gii
  13. */
  14. class GeneratorsTest extends GiiTestCase
  15. {
  16. public function testControllerGenerator()
  17. {
  18. $generator = new ControllerGenerator();
  19. $generator->template = 'default';
  20. $generator->controllerClass = 'app\runtime\TestController';
  21. $valid = $generator->validate();
  22. $this->assertTrue($valid, 'Validation failed: ' . print_r($generator->getErrors(), true));
  23. $this->assertNotEmpty($generator->generate());
  24. }
  25. public function testExtensionGenerator()
  26. {
  27. $generator = new ExtensionGenerator();
  28. $generator->template = 'default';
  29. $generator->vendorName = 'samdark';
  30. $generator->namespace = 'samdark\\';
  31. $generator->license = 'BSD';
  32. $generator->title = 'Sample extension';
  33. $generator->description = 'This is sample description.';
  34. $generator->authorName = 'Alexander Makarov';
  35. $generator->authorEmail = 'sam@rmcreative.ru';
  36. $valid = $generator->validate();
  37. $this->assertTrue($valid, 'Validation failed: ' . print_r($generator->getErrors(), true));
  38. $this->assertNotEmpty($generator->generate());
  39. }
  40. public function testModelGenerator()
  41. {
  42. $generator = new ModelGenerator();
  43. $generator->template = 'default';
  44. $generator->tableName = 'profile';
  45. $generator->modelClass = 'Profile';
  46. $valid = $generator->validate();
  47. $this->assertTrue($valid, 'Validation failed: ' . print_r($generator->getErrors(), true));
  48. $files = $generator->generate();
  49. $modelCode = $files[0]->content;
  50. $this->assertTrue(strpos($modelCode, "'id' => 'ID'") !== false, "ID label should be there:\n" . $modelCode);
  51. $this->assertTrue(strpos($modelCode, "'description' => 'Description',") !== false, "Description label should be there:\n" . $modelCode);
  52. }
  53. public function testModuleGenerator()
  54. {
  55. $generator = new ModuleGenerator();
  56. $generator->template = 'default';
  57. $generator->moduleID = 'test';
  58. $generator->moduleClass = 'app\modules\test\Module';
  59. $valid = $generator->validate();
  60. $this->assertTrue($valid, 'Validation failed: ' . print_r($generator->getErrors(), true));
  61. $this->assertNotEmpty($generator->generate());
  62. }
  63. public function testFormGenerator()
  64. {
  65. $generator = new FormGenerator();
  66. $generator->template = 'default';
  67. $generator->modelClass = 'yiiunit\gii\Profile';
  68. $generator->viewName = 'profile';
  69. $generator->viewPath = '@app/runtime';
  70. $valid = $generator->validate();
  71. $this->assertTrue($valid, 'Validation failed: ' . print_r($generator->getErrors(), true));
  72. $this->assertNotEmpty($generator->generate());
  73. }
  74. public function testCRUDGenerator()
  75. {
  76. $generator = new CRUDGenerator();
  77. $generator->template = 'default';
  78. $generator->modelClass = 'yiiunit\gii\Profile';
  79. $generator->controllerClass = 'app\TestController';
  80. $valid = $generator->validate();
  81. $this->assertTrue($valid, 'Validation failed: ' . print_r($generator->getErrors(), true));
  82. $this->assertNotEmpty($generator->generate());
  83. }
  84. public function testTemplateValidation()
  85. {
  86. $generator = new ModelGenerator();
  87. // Validate default template
  88. $generator->template = 'default';
  89. $this->assertTrue($generator->validate(['template']));
  90. // Validate custom template
  91. \Yii::setAlias('@customTemplate', __DIR__ . '/data/templates');
  92. $generator->templates = [
  93. 'custom' => '@customTemplate/custom'
  94. ];
  95. $generator->template = 'custom';
  96. $this->assertTrue($generator->validate(['template']));
  97. }
  98. }