get('/')->assertRedirect('/login'); }); it('displays component', function () { test()->get('/login')->assertSeeLivewire(LoginForm::class)->assertDontSee('Dashboard'); }); it('displays form', function () { Livewire::test(LoginForm::class) ->assertSee('Login') ->assertSee('Passwort vergessen'); }); it('loggs in', function () { User::factory()->loginData('admin@example.com', 'secret')->create(); Livewire::test(LoginForm::class) ->set('email', 'admin@example.com') ->set('password', 'secret') ->call('submit') ->assertRedirect('/'); $this->assertEquals('admin@example.com', auth()->user()->email); }); it('displays failed login response', function () { Livewire::test(LoginForm::class) ->set('email', 'admin@example.com') ->set('password', 'secret') ->call('submit') ->assertHasErrors(['email' => 'Login fehlgeschlagen.']); }); it('increments login attempts', function () { Event::fake([Lockout::class]); Livewire::test(LoginForm::class) ->set('email', 'admin@example.com') ->set('password', 'secret') ->call('submit') ->call('submit') ->call('submit') ->call('submit') ->call('submit') ->call('submit'); Event::assertDispatchedTimes(Lockout::class); }); it('requires email and password', function () { User::factory()->loginData('admin@example.com', 'secret')->create(); Livewire::test(LoginForm::class) ->set('email', '') ->set('password', '') ->call('submit') ->assertHasErrors(['email', 'password']); });