51 lines
1.8 KiB
PHP
51 lines
1.8 KiB
PHP
<?php
|
|
|
|
use App\Models\User;
|
|
|
|
it('redirects guests to the login page', function () {
|
|
$this->get('/dashboard')->assertRedirect('/login');
|
|
});
|
|
|
|
it('shows the dashboard to authenticated users', function () {
|
|
$user = User::factory()->create();
|
|
|
|
$this->actingAs($user)->get('/dashboard')
|
|
->assertOk()
|
|
->assertSee('CluPilot')
|
|
->assertSee(__('dashboard.title'));
|
|
});
|
|
|
|
it('shows no next invoice once the customer has given notice', function () {
|
|
// Cancelling leaves the subscription active until the term runs out, so
|
|
// `current_period_end` becomes the day service ENDS rather than the day the
|
|
// next charge falls. Billing a renewal that will never happen, on the sheet
|
|
// a customer checks their invoices against, is the worst line this page
|
|
// could carry.
|
|
$user = App\Models\User::factory()->create();
|
|
$customer = App\Models\Customer::factory()->create(['user_id' => $user->id]);
|
|
|
|
$instance = App\Models\Instance::factory()->create([
|
|
'customer_id' => $customer->id,
|
|
'status' => 'cancellation_scheduled',
|
|
'cancel_requested_at' => now(),
|
|
'service_ends_at' => now()->addMonth(),
|
|
]);
|
|
|
|
App\Models\Subscription::factory()->create([
|
|
'customer_id' => $customer->id,
|
|
'instance_id' => $instance->id,
|
|
'status' => 'active',
|
|
'price_cents' => 17900,
|
|
'currency' => 'EUR',
|
|
'term' => 'monthly',
|
|
'current_period_end' => now()->addMonth(),
|
|
]);
|
|
|
|
Livewire::actingAs($user)
|
|
->test(App\Livewire\Dashboard::class)
|
|
->assertViewHas('nextInvoice', null)
|
|
// The price is still on the master record — they pay it until the end.
|
|
->assertViewHas('planPrice', fn (?array $p) => $p !== null && $p['cents'] === 17900)
|
|
->assertDontSee(__('dashboard.invoice.label'));
|
|
});
|