<?php

use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;

uses(RefreshDatabase::class);

it('redirects verified step user to setup password from profile', function () {
    $user = User::factory()->create([
        'onboarding_step' => 'verified',
    ]);

    $this->actingAs($user)
        ->get('/profile')
        ->assertRedirect('/setup/password');
});

it('redirects password step user to setup username from upload', function () {
    $user = User::factory()->create([
        'onboarding_step' => 'password',
    ]);

    $this->actingAs($user)
        ->get('/upload')
        ->assertRedirect('/setup/username');
});

it('redirects email step user to login from forum and gallery', function () {
    $user = User::factory()->create([
        'onboarding_step' => 'email',
    ]);

    $this->actingAs($user)
        ->get('/forum')
        ->assertRedirect('/login');

    $this->actingAs($user)
        ->get('/gallery/1/test')
        ->assertRedirect('/login');
});

it('allows complete onboarding user to access profile and upload', function () {
    $user = User::factory()->create([
        'onboarding_step' => 'complete',
    ]);

    $this->actingAs($user)
        ->get('/profile')
        ->assertRedirect('/dashboard/profile')
        ->assertStatus(301);

    $this->actingAs($user)
        ->get('/upload')
        ->assertOk();
});
