actingAs(User::factory()->create()) ->post(route('models.store'), [ 'name' => 'Test Model', 'category_id' => Category::factory()->create()->id ]) ->assertForbidden(); } public function testUserCanCreateAssetModels() { $this->assertFalse(AssetModel::where('name', 'Test Model')->exists()); $this->actingAs(User::factory()->superuser()->create()) ->post(route('models.store'), [ 'name' => 'Test Model', 'category_id' => Category::factory()->create()->id ]) ->assertRedirect(route('models.index')); $this->assertTrue(AssetModel::where('name', 'Test Model')->exists()); } public function testUserCannotUseAccessoryCategoryTypeAsAssetModelCategoryType() { $response = $this->actingAs(User::factory()->superuser()->create()) ->from(route('models.create')) ->post(route('models.store'), [ 'name' => 'Test Invalid Model Category', 'category_id' => Category::factory()->forAccessories()->create()->id ]); $response->assertStatus(302); $response->assertRedirect(route('models.create')); $response->assertInvalid(['category_type']); $response->assertSessionHasErrors(['category_type']); $this->followRedirects($response)->assertSee(trans('general.error')); $this->assertFalse(AssetModel::where('name', 'Test Invalid Model Category')->exists()); } public function testUniquenessAcrossModelNameAndModelNumber() { AssetModel::factory()->create(['name' => 'Test Model', 'model_number'=>'1234']); $response = $this->actingAs(User::factory()->superuser()->create()) ->from(route('models.create')) ->post(route('models.store'), [ 'name' => 'Test Model', 'model_number' => '1234', 'category_id' => Category::factory()->create()->id ]) ->assertStatus(302) ->assertSessionHasErrors(['name','model_number']) ->assertStatus(302) ->assertRedirect(route('models.create')) ->assertInvalid(['name','model_number']); $this->followRedirects($response)->assertSee(trans('general.error')); } }