From 55ef4dcc0edef10f1e7e466c4713ac064a9308db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=BB=BA=E5=8D=8E?= Date: Tue, 3 Sep 2019 14:44:22 +0800 Subject: [PATCH] tests --- database/factories/EntityFactory.php | 10 ++++ tests/Feature/Admin/EntityControllerTest.php | 24 +++++++-- .../Admin/EntityFieldControllerTest.php | 50 +++++++++++++++++++ 3 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 database/factories/EntityFactory.php create mode 100644 tests/Feature/Admin/EntityFieldControllerTest.php diff --git a/database/factories/EntityFactory.php b/database/factories/EntityFactory.php new file mode 100644 index 0000000..8cc4ee0 --- /dev/null +++ b/database/factories/EntityFactory.php @@ -0,0 +1,10 @@ +define(App\Model\Admin\Entity::class, function (Faker $faker) { + return [ + 'name' => $faker->word, + 'table_name' => $faker->domainWord, + ]; +}); diff --git a/tests/Feature/Admin/EntityControllerTest.php b/tests/Feature/Admin/EntityControllerTest.php index 8c5fcc0..7a8625f 100644 --- a/tests/Feature/Admin/EntityControllerTest.php +++ b/tests/Feature/Admin/EntityControllerTest.php @@ -3,6 +3,7 @@ namespace Tests\Feature\Admin; use App\Model\Admin\AdminUser; +use App\Model\Admin\Entity; use Illuminate\Database\Schema\Blueprint; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Schema; @@ -12,28 +13,41 @@ class EntityControllerTest extends TestCase { use RefreshDatabase; + protected $user; + public function setUp() { parent::setUp(); $this->withoutExceptionHandling(); + + $this->user = factory(AdminUser::class)->create(); + } + + public function testEntityCanBeListed() + { + factory(Entity::class, 1)->create(); + $response = $this->actingAs($this->user, 'admin')->get('/admin/entities/list'); + $response->assertStatus(200); + $content = $response->original; + + $this->assertEquals(1, $content['count']); } public function testEntityCanBeCreated() { - $user = factory(AdminUser::class)->create(); + $data = ['name' => '测试', 'table_name' => 'tests']; - $response = $this->actingAs($user, 'admin') + $response = $this->actingAs($this->user, 'admin') ->post('/admin/entities', $data); $response->assertJson(['code' => 0]); - $response = $this->actingAs($user, 'admin') + $response = $this->actingAs($this->user, 'admin') ->post('/admin/entities', $data); $response->assertJson(['code' => 1]); } public function testEntityBeCreatedWhenTableHasExists() { - $user = factory(AdminUser::class)->create(); $data = ['name' => '测试', 'table_name' => 'tests']; Schema::create($data['table_name'], function (Blueprint $table) { $table->increments('id'); @@ -41,7 +55,7 @@ class EntityControllerTest extends TestCase $table->engine = 'InnoDB'; }); - $response = $this->actingAs($user, 'admin') + $response = $this->actingAs($this->user, 'admin') ->post('/admin/entities', $data); $response->assertJson(['code' => 2]); } diff --git a/tests/Feature/Admin/EntityFieldControllerTest.php b/tests/Feature/Admin/EntityFieldControllerTest.php new file mode 100644 index 0000000..9a38cfc --- /dev/null +++ b/tests/Feature/Admin/EntityFieldControllerTest.php @@ -0,0 +1,50 @@ +withoutExceptionHandling(); + + $data = ['name' => '测试', 'table_name' => 'tests']; + $this->entity = EntityRepository::add($data); + $this->user = factory(AdminUser::class)->create(); + } + + public function testEntityFieldCanBeCreated() + { + $data = [ + 'entity_id' => $this->entity->id, + 'name' => 'title', + 'type' => 'string', + 'form_name' => '标题', + 'form_type' => 'input', + 'order' => 77, + 'field_length' => '', + 'field_total' => '', + 'field_scale' => '', + 'comment' => '', + 'default_value' => '' + ]; + $response = $this->actingAs($this->user, 'admin') + ->post('/admin/entityFields', $data); + $response->assertJson(['code' => 0]); + $this->assertDatabaseHas('entity_fields', ['entity_id' => $this->entity->id, 'name' => 'title']); + $this->assertTrue(Schema::hasColumn($this->entity->table_name, $data['name'])); + } +} -- GitLab