<?php namespace Tests\Feature; use Illuminate\Support\Str; use Laravel\Sanctum\Sanctum; use Tests\TestCase; use App\Models\User; use App\Models\Retailer; use Hash; class RetailerCreateTest extends TestCase { public function test_success_create_category_by_admin() { $user = User::factory()->create([ 'role' => 'admin', 'password' => Hash::make('123123123'), ]); Sanctum::actingAs( $user, ['*'] ); $response = $this->post('/nova-api/retailers?editing=true&editMode=create', [ 'name' => 'test_name', ]); $user->delete(); Retailer::where('name', 'test_name')->delete(); $response->assertStatus(201); } public function test_create_category_by_admin_without_name_of_category() { $user = User::factory()->create([ 'role' => 'admin', 'password' => Hash::make('123123123'), ]); Sanctum::actingAs( $user, ['*'] ); $response = $this->post('/nova-api/retailers?editing=true&editMode=create', [ ]); $user->delete(); Retailer::where('name', 'test_name')->delete(); $response->assertStatus(302)->assertSessionHasErrors(['name' => 'The Name field is required.']); } public function test_create_category_by_admin_with_already_exist_name() { $user = User::factory()->create([ 'role' => 'admin', 'password' => Hash::make('123123123'), ]); Sanctum::actingAs( $user, ['*'] ); $category = Retailer::factory()->create(); $response = $this->post('/nova-api/retailers?editing=true&editMode=create', [ 'name' => $category->name ]); $category->delete(); $user->delete(); Retailer::where('name', 'test_name')->delete(); $response->assertStatus(302)->assertSessionHasErrors([ 'name' => 'The Name has already been taken.' ]); } public function test_success_create_category_by_analyst() { $user = User::factory()->create([ 'role' => 'analyst', 'password' => Hash::make('123123123'), ]); Sanctum::actingAs( $user, ['*'] ); $response = $this->post('/nova-api/retailers?editing=true&editMode=create', [ 'name' => 'test_name', ]); $user->delete(); Retailer::where('name', 'test_name')->delete(); $response->assertStatus(201); } public function test_create_category_by_analyst_without_name_of_category() { $user = User::factory()->create([ 'role' => 'analyst', 'password' => Hash::make('123123123'), ]); Sanctum::actingAs( $user, ['*'] ); $response = $this->post('/nova-api/retailers?editing=true&editMode=create', [ ]); $user->delete(); Retailer::where('name', 'test_name')->delete(); $response->assertStatus(302)->assertSessionHasErrors(['name' => 'The Name field is required.']); } public function test_create_category_by_analyst_with_already_exist_name() { $user = User::factory()->create([ 'role' => 'analyst', 'password' => Hash::make('123123123'), ]); Sanctum::actingAs( $user, ['*'] ); $category = Retailer::factory()->create(); $response = $this->post('/nova-api/retailers?editing=true&editMode=create', [ 'name' => $category->name ]); $category->delete(); $user->delete(); Retailer::where('name', 'test_name')->delete(); $response->assertStatus(302)->assertSessionHasErrors([ 'name' => 'The Name has already been taken.' ]); } public function test_create_category_by_common() { $user = User::factory()->create([ 'role' => 'common', 'password' => Hash::make('123123123'), ]); Sanctum::actingAs( $user, ['*'] ); $response = $this->post('/nova-api/retailers?editing=true&editMode=create', [ 'name' => 'test_name', ]); $user->delete(); Retailer::where('name', 'test_name')->delete(); $response->assertStatus(403); } }