<?php
|
|
|
|
namespace Tests\Feature\Auth\Register;
|
|
|
|
use App\User;
|
|
use Tests\TestCase;
|
|
use Livewire\Livewire;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use App\Providers\RouteServiceProvider;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Foundation\Testing\WithFaker;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class IndividualTest extends TestCase
|
|
{
|
|
use RefreshDatabase, WithFaker;
|
|
|
|
/** @test */
|
|
function registration_page_contains_livewire_component()
|
|
{
|
|
$this->get(route('register.individual'))
|
|
->assertSuccessful()
|
|
->assertSeeLivewire('auth.register.individual');
|
|
}
|
|
|
|
/** @test */
|
|
public function is_redirected_if_already_logged_in()
|
|
{
|
|
$user = factory(User::class)->create();
|
|
|
|
$this->be($user);
|
|
|
|
$this->get(route('register.individual'))
|
|
->assertRedirect(route('home'));
|
|
}
|
|
|
|
/** @test */
|
|
function a_user_can_register()
|
|
{
|
|
Livewire::test('auth.register.individual')
|
|
->set('name', 'Tall Stack')
|
|
->set('birthday', $this->faker->date('d/m/Y'))
|
|
->set('email', 'tallstack@example.com')
|
|
->call('register')
|
|
->assertRedirect(route('home'));
|
|
|
|
$this->assertTrue(User::whereEmail('tallstack@example.com')->exists());
|
|
$this->assertEquals('tallstack@example.com', Auth::user()->email);
|
|
}
|
|
|
|
/** @test */
|
|
function name_is_required()
|
|
{
|
|
Livewire::test('auth.register.individual')
|
|
->set('name', '')
|
|
->call('register')
|
|
->assertHasErrors(['email' => 'required']);
|
|
}
|
|
|
|
/** @test */
|
|
function birthday_is_required()
|
|
{
|
|
Livewire::test('auth.register.individual')
|
|
->set('birthday', '')
|
|
->call('register')
|
|
->assertHasErrors(['email' => 'required']);
|
|
}
|
|
|
|
/** @test */
|
|
function birthday_is_valid_birthday()
|
|
{
|
|
Livewire::test('auth.register.individual')
|
|
->set('birthday', '123123')
|
|
->call('register')
|
|
->assertHasErrors(['birthday' => 'date_format']);
|
|
}
|
|
|
|
/** @test */
|
|
function email_is_required()
|
|
{
|
|
Livewire::test('auth.register.individual')
|
|
->set('email', '')
|
|
->call('register')
|
|
->assertHasErrors(['email' => 'required']);
|
|
}
|
|
|
|
/** @test */
|
|
function email_is_valid_email()
|
|
{
|
|
Livewire::test('auth.register.individual')
|
|
->set('email', 'tallstack')
|
|
->call('register')
|
|
->assertHasErrors(['email' => 'email']);
|
|
}
|
|
|
|
/** @test */
|
|
function email_hasnt_been_taken_already()
|
|
{
|
|
factory(User::class)->create(['email' => 'tallstack@example.com']);
|
|
|
|
Livewire::test('auth.register.individual')
|
|
->set('email', 'tallstack@example.com')
|
|
->call('register')
|
|
->assertHasErrors(['email' => 'unique']);
|
|
}
|
|
|
|
/** @test */
|
|
function see_email_hasnt_already_been_taken_validation_message_as_user_types()
|
|
{
|
|
factory(User::class)->create(['email' => 'tallstack@example.com']);
|
|
|
|
Livewire::test('auth.register.individual')
|
|
->set('email', 'smallstack@gmail.com')
|
|
->assertHasNoErrors()
|
|
->set('email', 'tallstack@example.com')
|
|
->call('register')
|
|
->assertHasErrors(['email' => 'unique']);
|
|
}
|
|
}
|