75 lines
1.9 KiB
PHP
75 lines
1.9 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('home'))
|
|
->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
|
|
$user = User::factory()->create();
|
|
$this->actingAs($user);
|
|
get(route('students.index'))
|
|
->assertStatus(403);
|
|
|
|
$school = School::factory()->create();
|
|
$user->school_id = $school->id;
|
|
get(route('students.index'))
|
|
->assertStatus(200)
|
|
->assertSeeText('Student Listing');
|
|
});
|