Skip to content

Commit 420994f

Browse files
committed
Write code manager tests
1 parent a5a146f commit 420994f

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?php
2+
3+
namespace Veeqtoh\DoorAccess\Tests\Unit\Classes;
4+
5+
use Illuminate\Foundation\Testing\RefreshDatabase;
6+
use Illuminate\Support\Facades\Log;
7+
use Veeqtoh\DoorAccess\Classes\CodeManager;
8+
use Veeqtoh\DoorAccess\Exceptions\InvalidCodeException;
9+
use Veeqtoh\DoorAccess\Models\AccessCode;
10+
use Veeqtoh\DoorAccess\Tests\Unit\TestCase;
11+
12+
class CodeManagerTest extends TestCase
13+
{
14+
use RefreshDatabase;
15+
16+
#[Test]
17+
public function testSaveCode(): void
18+
{
19+
$codeManager = new CodeManager();
20+
$code = '123456';
21+
$accessCode = $codeManager->saveCode($code);
22+
23+
$this->assertInstanceOf(AccessCode::class, $accessCode);
24+
$this->assertEquals($code, $accessCode->code);
25+
}
26+
27+
#[Test]
28+
public function testAllocateCode(): void
29+
{
30+
AccessCode::factory()->create(['code' => '123456', 'owner_id' => null]);
31+
32+
$codeManager = new CodeManager();
33+
$ownerId = 'user_123';
34+
$accessCode = $codeManager->allocateCode('123456', $ownerId);
35+
36+
$this->assertInstanceOf(AccessCode::class, $accessCode);
37+
$this->assertEquals($ownerId, $accessCode->owner_id);
38+
}
39+
40+
public function testResetCode(): void
41+
{
42+
AccessCode::factory()->create(['code' => '123456']);
43+
44+
$codeManager = new CodeManager();
45+
$code = '123456';
46+
$result = $codeManager->resetCode($code);
47+
48+
$this->assertNull(AccessCode::where('code', $code)->first()->owner_id);
49+
}
50+
51+
public function testResetCodeWithNonExistingCode(): void
52+
{
53+
Log::shouldReceive('error')->once();
54+
$this->expectException(InvalidCodeException::class);
55+
$codeManager = new CodeManager();
56+
$code = 'non_existing_code';
57+
$codeManager->resetCode($code);
58+
}
59+
60+
public function testDestroyCode(): void
61+
{
62+
AccessCode::factory()->create(['code' => '123456']);
63+
64+
$codeManager = new CodeManager();
65+
$code = '123456';
66+
$result = $codeManager->destroyCode($code);
67+
68+
$this->assertTrue($result);
69+
$this->assertNull(AccessCode::where('code', $code)->first());
70+
}
71+
72+
public function testDestroyCodeNonExistingCode(): void
73+
{
74+
Log::shouldReceive('error')->once();
75+
$this->expectException(InvalidCodeException::class);
76+
$codeManager = new CodeManager();
77+
$code = 'non_existing_code';
78+
$codeManager->destroyCode($code);
79+
}
80+
}

0 commit comments

Comments
 (0)