auditionadmin/tests/Feature/PagesResponseTest.php

79 lines
2.0 KiB
PHP

<?php
use App\Models\School;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use function Pest\Laravel\get;
uses(RefreshDatabase::class);
it('shows appropriate screens when not logged in', function () {
// Act & Assert
get(route('landing'))
->assertStatus(200)
->assertSeeText([
'Login',
'Create Account',
]);
});
it('shows a registration page only if not logged in', function () {
// Act & Assert
get('/register')
->assertStatus(200)
->assertSeeText([
'Registration Code',
'Email address',
]);
$user = User::factory()->create();
$this->actingAs($user);
get('/register')
->assertStatus(302)
->assertRedirect(route('dashboard'));
});
it('shows a login page only if not logged in', function () {
get('/login')
->assertStatus(200)
->assertSeeText([
'Log In',
'Click here to register',
]);
$user = User::factory()->create();
$this->actingAs($user);
get('/register')
->assertStatus(302)
->assertRedirect(route('dashboard'));
});
it('shows dashboard only if logged in', function () {
get(route('dashboard'))
->assertStatus(302)
->assertRedirect(route('home'));
$user = User::factory()->create();
$this->actingAs($user);
get(route('dashboard'))
->assertStatus(200)
->assertSeeText('My School')
->assertSeeText('Dashboard');
});
it('shows students index only for a user with a school', function () {
// Act & Assert
get(route('students.index'))
->assertStatus(302)
->assertRedirect(route('home'));
$user = User::factory()->create();
$this->actingAs($user);
get(route('students.index'))
->assertRedirect(route('dashboard'));
$school = School::factory()->create();
$user->school_id = $school->id;
get(route('students.index'))
->assertStatus(200)
->assertSeeText('Student Listing');
});