diff --git a/database/factories/PostFactory.php b/database/factories/PostFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..10001e7324db227ee614a72432226ebcd3e0ae56 --- /dev/null +++ b/database/factories/PostFactory.php @@ -0,0 +1,12 @@ +<?php + +use Faker\Generator as Faker; + +$factory->define(App\Post::class, function (Faker $faker) { + return [ + 'title' => 'Post for Testing', + 'body' => 'Post Body', + 'user_id' => '0', + 'cover_image' => 'noimage.jpg' + ]; +}); diff --git a/tests/Feature/ArticleTest.php b/tests/Feature/ArticleTest.php new file mode 100644 index 0000000000000000000000000000000000000000..7c7f53c74344721de77cc30d3b7d124f4f3a629e --- /dev/null +++ b/tests/Feature/ArticleTest.php @@ -0,0 +1,203 @@ +<?php + +namespace Tests\Feature; + +use App\Post; +use App\Member; +use App\User; + +use Tests\TestCase; +use Illuminate\Foundation\Testing\WithFaker; +use Illuminate\Foundation\Testing\RefreshDatabase; + +class ArticleTest extends TestCase +{ + /** + * test create article + * + * @return void + */ + public function testCreateArticleSuccess() + { + $user = factory(User::class)->create(); + + $response = $this->actingAs($user) + ->visit('/posts/create') + ->type('Post for Testing', 'title') + ->type('Post Body', 'body') + ->attach('storage/app/public/logo_itb.png', 'cover_image') + ->press('Submit') + ->seePageIs('/posts') + ->see('Post Created'); + + $dummy = Post::where('title', 'Post for Testing')->first(); + $dummy->delete(); + + $user->delete(); + } + + /** + * test create article without title + * + * @return void + */ + public function testCreateArticleWithoutTitle() + { + $user = factory(User::class)->create(); + + $response = $this->actingAs($user) + ->visit('/posts/create') + ->type('', 'title') + ->type('Post Body', 'body') + ->attach('storage/app/public/logo_itb.png', 'cover_image') + ->press('Submit') + ->seePageIs('/posts/create') + ->see('The title field is required.'); + + $user->delete(); + } + + /** + * test create article without body + * + * @return void + */ + public function testCreateArticleWithoutBody() + { + $user = factory(User::class)->create(); + + $response = $this->actingAs($user) + ->visit('/posts/create') + ->type('Post for Testing', 'title') + ->type('', 'body') + ->attach('storage/app/public/logo_itb.png', 'cover_image') + ->press('Submit') + ->seePageIs('/posts/create') + ->see('The body field is required.'); + + $user->delete(); + } + + /** + * test create article without thumbnail + * + * @return void + */ + public function testCreateArticleWithoutThumbnail() + { + $user = factory(User::class)->create(); + + $response = $this->actingAs($user) + ->visit('/posts/create') + ->type('Post for Testing', 'title') + ->type('Post Body', 'body') + ->press('Submit') + ->seePageIs('/posts') + ->see('Post Created'); + + $dummy = Post::where('title', 'Post for Testing')->first(); + $dummy->delete(); + + $user->delete(); + } + + /** + * test edit article + * + * @return void + */ + public function testEditArticle() + { + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id + ]); + + $response = $this->actingAs($user) + ->visit('/posts/' . $post->id . '/edit') + ->type('Post for Testing', 'title') + ->type('Post Body', 'body') + ->attach('storage/app/public/logo_itb.png', 'cover_image') + ->press('Submit') + ->seePageIs('/posts') + ->see('Post Updated'); + + $post->delete(); + + $user->delete(); + } + + /** + * test edit article without title + * + * @return void + */ + public function testEditArticleWithoutTitle() + { + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id + ]); + + $response = $this->actingAs($user) + ->visit('/posts/' . $post->id . '/edit') + ->type('', 'title') + ->type('Post Body', 'body') + ->attach('storage/app/public/logo_itb.png', 'cover_image') + ->press('Submit') + ->seePageIs('/posts/' . $post->id . '/edit') + ->see('The title field is required.'); + + $post->delete(); + $user->delete(); + } + + /** + * test edit article + * + * @return void + */ + public function testEditArticleWithoutBody() + { + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id + ]); + + $response = $this->actingAs($user) + ->visit('/posts/' . $post->id . '/edit') + ->type('Post for Testing', 'title') + ->type('', 'body') + ->attach('storage/app/public/logo_itb.png', 'cover_image') + ->press('Submit') + ->seePageIs('/posts/' . $post->id . '/edit') + ->see('The body field is required.'); + + $post->delete(); + $user->delete(); + } + + /** + * test edit article + * + * @return void + */ + public function testEditArticleWithoutThumbnail() + { + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id + ]); + + $response = $this->actingAs($user) + ->visit('/posts/' . $post->id . '/edit') + ->type('Post for Testing', 'title') + ->type('Post Body', 'body') + ->press('Submit') + ->seePageIs('/posts') + ->see('Post Updated'); + + $post->delete(); + $user->delete(); + } +}