get(route('login')) ->assertSuccessful() ->assertSeeLivewire('associates.auth.login'); } /** @test */ public function is_redirected_if_already_logged_in() { $associate = factory(Associate::class)->create(); $this->be($associate); $this->get(route('login')) ->assertRedirect(route('home')); } /** @test */ public function an_associate_can_login() { $associate = $this->factoryWithoutObservers(Associate::class)->create(['password' => Hash::make('password')]); Livewire::test('associates.auth.login') ->set('email', $associate->email) ->set('password', 'password') ->call('authenticate'); $this->assertAuthenticatedAs($associate); } /** @test */ public function is_redirected_to_the_home_page_after_login() { $associate = $this->factoryWithoutObservers(Associate::class)->create(['password' => Hash::make('password')]); Livewire::test('associates.auth.login') ->set('email', $associate->email) ->set('password', 'password') ->call('authenticate') ->assertRedirect(route('home')); } /** @test */ public function email_is_required() { $associate = factory(Associate::class)->create(['password' => Hash::make('password')]); Livewire::test('associates.auth.login') ->set('password', 'password') ->call('authenticate') ->assertHasErrors(['email' => 'required']); } /** @test */ public function email_must_be_valid_email() { $associate = factory(Associate::class)->create(['password' => Hash::make('password')]); Livewire::test('associates.auth.login') ->set('email', 'invalid-email') ->set('password', 'password') ->call('authenticate') ->assertHasErrors(['email' => 'email']); } /** @test */ public function password_is_required() { $associate = factory(Associate::class)->create(['password' => Hash::make('password')]); Livewire::test('associates.auth.login') ->set('email', $associate->email) ->call('authenticate') ->assertHasErrors(['password' => 'required']); } /** @test */ public function bad_login_attempt_shows_message() { $associate = factory(Associate::class)->create(); Livewire::test('associates.auth.login') ->set('email', $associate->email) ->set('password', 'bad-password') ->call('authenticate') ->assertHasErrors('email'); $this->assertFalse(Auth::check()); } }