seed(RolesAndPermissionsSeeder::class); }); function makeValidationFeedbackCustomer(): User { $customer = User::factory()->create(['is_active' => true]); $customer->assignRole('customer'); $company = Company::factory()->presseecho()->create(); $customer->companies()->attach($company->id, ['role' => 'owner']); return $customer; } test('create page shows a persistent error summary with German field names when saving without a category', function () { /** @var TestCase $this */ $this->actingAs(makeValidationFeedbackCustomer()); Livewire::test('customer.press-releases.create') ->set('title', 'Ein gültiger Titel für die PM') ->set('text', str_repeat('Aussagekräftiger Fließtext. ', 5)) ->set('categoryId', null) ->call('save', 'draft') ->assertHasErrors(['categoryId']) ->assertSee('Speichern nicht möglich') ->assertSee('Kategorie muss ausgefüllt werden.') ->assertDontSee('category id'); }); test('create page error summary lists every failing field and disappears once resolved', function () { /** @var TestCase $this */ $this->actingAs(makeValidationFeedbackCustomer()); $category = Category::factory()->create(); $component = Livewire::test('customer.press-releases.create') ->call('save', 'draft') ->assertHasErrors(['categoryId', 'title', 'text']) ->assertSee('Speichern nicht möglich') ->assertSee('Kategorie muss ausgefüllt werden.') ->assertSee('Titel muss ausgefüllt werden.') ->assertSee('Text muss ausgefüllt werden.'); $component ->set('categoryId', $category->id) ->set('title', 'Ein gültiger Titel für die PM') ->set('text', str_repeat('Aussagekräftiger Fließtext. ', 5)) ->call('save', 'draft') ->assertHasNoErrors() ->assertRedirect(); }); test('create page marks the category panel as invalid and keeps the jump anchor', function () { /** @var TestCase $this */ $this->actingAs(makeValidationFeedbackCustomer()); Livewire::test('customer.press-releases.create') ->assertSeeHtml('data-error-anchor="categoryId"') ->assertDontSeeHtml('is-invalid') ->call('save', 'draft') ->assertSeeHtml('is-invalid'); }); test('edit page shows the error summary when saving without a category', function () { /** @var TestCase $this */ $customer = makeValidationFeedbackCustomer(); $company = $customer->companies()->first(); $category = Category::factory()->create(); $pr = PressRelease::factory()->create([ 'user_id' => $customer->id, 'company_id' => $company->id, 'category_id' => $category->id, 'portal' => $company->portal->value, 'status' => 'draft', ]); $this->actingAs($customer); Livewire::test('customer.press-releases.edit', ['id' => $pr->id]) ->set('categoryId', null) ->call('save') ->assertHasErrors(['categoryId']) ->assertSee('Speichern nicht möglich') ->assertSee('Kategorie muss ausgefüllt werden.'); });