anonaddy/tests/Unit/AliasTest.php
2022-11-29 12:27:39 +00:00

168 lines
4.6 KiB
PHP

<?php
namespace Tests\Unit;
use App\Models\Alias;
use App\Models\AliasRecipient;
use App\Models\Recipient;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class AliasTest extends TestCase
{
use RefreshDatabase;
protected $user;
protected function setUp(): void
{
parent::setUp();
$this->user = User::factory()->create();
$this->user->recipients()->save($this->user->defaultRecipient);
}
/** @test */
public function alias_can_get_verified_recipients()
{
$alias = Alias::factory()->create([
'user_id' => $this->user->id,
]);
$verifiedRecipient = Recipient::factory()->create([
'user_id' => $this->user->id,
]);
$unverifiedRecipient = Recipient::factory()->create([
'user_id' => $this->user->id,
'email_verified_at' => null,
]);
AliasRecipient::create([
'alias' => $alias,
'recipient' => $verifiedRecipient,
]);
AliasRecipient::create([
'alias' => $alias,
'recipient' => $unverifiedRecipient,
]);
$this->assertCount(2, $alias->recipients);
$this->assertCount(1, $alias->verifiedRecipients);
$this->assertEquals($verifiedRecipient->id, $alias->verifiedRecipients[0]->id);
}
/** @test */
public function alias_can_set_default_recipient_email()
{
Alias::factory()->create([
'user_id' => $this->user->id,
]);
$recipient = Recipient::factory()->create([
'user_id' => $this->user->id,
'email' => 'default@example.com',
]);
$this->user->defaultRecipient = $recipient;
$this->user->save();
$this->assertEquals($this->user->default_recipient_id, $recipient->id);
}
/** @test */
public function alias_can_get_default_recipient_email()
{
$alias = Alias::factory()->create([
'user_id' => $this->user->id,
]);
$recipient = Recipient::factory()->create([
'user_id' => $this->user->id,
'email' => 'default@example.com',
]);
$this->user->defaultRecipient = $recipient;
$this->user->save();
$this->assertEquals($this->user->email, $recipient->email);
$this->assertCount(1, $alias->verifiedRecipientsOrDefault()->get());
$alias->verifiedRecipientsOrDefault()->each(function ($recipient) {
$this->assertEquals($this->user->email, $recipient->email);
});
}
/** @test */
public function alias_can_get_verified_recipients_or_default()
{
$alias = Alias::factory()->create([
'user_id' => $this->user->id,
]);
$recipientOne = Recipient::factory()->create([
'user_id' => $this->user->id,
'email' => 'one@example.com',
'should_encrypt' => true,
'fingerprint' => 'ABCDE',
]);
$recipientTwo = Recipient::factory()->create([
'user_id' => $this->user->id,
'email' => 'two@example.com',
'should_encrypt' => true,
'fingerprint' => 'ABCDE',
]);
$recipientThree = Recipient::factory()->create([
'user_id' => $this->user->id,
'email' => 'three@example.com',
'should_encrypt' => false,
'fingerprint' => 'ABCDE',
]);
$recipientFour = Recipient::factory()->create([
'user_id' => $this->user->id,
'email' => 'four@example.com',
'should_encrypt' => true,
'fingerprint' => null,
]);
$recipientFive = Recipient::factory()->create([
'user_id' => $this->user->id,
'email' => 'five@example.com',
'should_encrypt' => false,
'fingerprint' => null,
'email_verified_at' => null,
]);
AliasRecipient::create([
'alias' => $alias,
'recipient' => $recipientOne,
]);
AliasRecipient::create([
'alias' => $alias,
'recipient' => $recipientTwo,
]);
AliasRecipient::create([
'alias' => $alias,
'recipient' => $recipientThree,
]);
AliasRecipient::create([
'alias' => $alias,
'recipient' => $recipientFour,
]);
AliasRecipient::create([
'alias' => $alias,
'recipient' => $recipientFive,
]);
$this->assertCount(4, $alias->verifiedRecipientsOrDefault());
$this->assertCount(5, $alias->recipients);
}
}