feat(mailbox): Implement tier-based dynamic expiration with real-time Alpine.js countdown
This commit is contained in:
@@ -86,4 +86,39 @@ class UserTierTest extends TestCase
|
||||
$this->assertTrue($accessibleDomains->contains($publicDomain));
|
||||
$this->assertFalse($accessibleDomains->contains($premiumDomain));
|
||||
}
|
||||
|
||||
public function test_mailbox_expiration_is_based_on_user_tier()
|
||||
{
|
||||
$domain = Domain::factory()->create(['allowed_types' => ['public'], 'name' => 'public.com']);
|
||||
|
||||
// Test Guest (1 day)
|
||||
\Livewire\Livewire::test(\App\Livewire\Mailbox::class)
|
||||
->call('autoCreateRandomMailbox');
|
||||
$guestMailbox = \App\Models\Mailbox::latest()->first();
|
||||
$this->assertEquals(1, round(now()->diffInDays($guestMailbox->expires_at)));
|
||||
|
||||
// Test Free (3 days)
|
||||
$freeUser = User::factory()->free()->create();
|
||||
$this->actingAs($freeUser);
|
||||
\Livewire\Livewire::test(\App\Livewire\Mailbox::class)
|
||||
->call('autoCreateRandomMailbox');
|
||||
$freeMailbox = \App\Models\Mailbox::where('user_id', $freeUser->id)->first();
|
||||
$this->assertEquals(3, round(now()->diffInDays($freeMailbox->expires_at)));
|
||||
|
||||
// Test Pro (7 days)
|
||||
$proUser = User::factory()->pro()->create();
|
||||
$this->actingAs($proUser);
|
||||
\Livewire\Livewire::test(\App\Livewire\Mailbox::class)
|
||||
->call('autoCreateRandomMailbox');
|
||||
$proMailbox = \App\Models\Mailbox::where('user_id', $proUser->id)->first();
|
||||
$this->assertEquals(7, round(now()->diffInDays($proMailbox->expires_at)));
|
||||
|
||||
// Test Enterprise (14 days)
|
||||
$entUser = User::factory()->enterprise()->create();
|
||||
$this->actingAs($entUser);
|
||||
\Livewire\Livewire::test(\App\Livewire\Mailbox::class)
|
||||
->call('autoCreateRandomMailbox');
|
||||
$entMailbox = \App\Models\Mailbox::where('user_id', $entUser->id)->first();
|
||||
$this->assertEquals(14, round(now()->diffInDays($entMailbox->expires_at)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user