Skip to content

Commit 1058a4c

Browse files
committed
Add code generator unit tests
1 parent ae93c55 commit 1058a4c

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
namespace Veeqtoh\DoorAccess\Tests\Unit\Classes;
4+
5+
use Veeqtoh\DoorAccess\Classes\CodeGenerator;
6+
use Veeqtoh\DoorAccess\Contracts\CodeValidator;
7+
use Veeqtoh\DoorAccess\Tests\Unit\TestCase;
8+
9+
class CodeGeneratorTest extends TestCase
10+
{
11+
public function testGenerateNumericCode(): void
12+
{
13+
// Set code format to alphanumeric.
14+
config(['door-access.code_format' => 'numeric']);
15+
16+
$generator = new CodeGenerator();
17+
$code = $generator->generate();
18+
19+
$this->assertIsString($code);
20+
$this->assertMatchesRegularExpression('/^\d+$/', $code);
21+
}
22+
23+
public function testGenerateAlphanumericCode(): void
24+
{
25+
// Set code format to alphanumeric.
26+
config(['door-access.code_format' => 'alphanumeric']);
27+
28+
$generator = new CodeGenerator();
29+
$code = $generator->generate();
30+
31+
$this->assertIsString($code);
32+
$this->assertMatchesRegularExpression('/^[a-zA-Z0-9]+$/', $code);
33+
}
34+
35+
public function testGenerateMixedCode(): void
36+
{
37+
// Set code format to mixed.
38+
config(['door-access.code_format' => 'mixed']);
39+
40+
$generator = new CodeGenerator();
41+
$code = $generator->generate();
42+
43+
$this->assertIsString($code);
44+
$this->assertMatchesRegularExpression('/^[a-zA-Z0-9!@#$%^&*()-_=+[\]{};:<>,.?\/]+$/', $code);
45+
}
46+
47+
public function testGenerateWithValidCode(): void
48+
{
49+
// Mock validators.
50+
$validator1 = $this->createMock(CodeValidator::class);
51+
$validator1->expects($this->once())
52+
->method('isValid')
53+
->willReturn(true);
54+
55+
$validator2 = $this->createMock(CodeValidator::class);
56+
$validator2->expects($this->once())
57+
->method('isValid')
58+
->willReturn(true);
59+
60+
$generator = new CodeGenerator([$validator1, $validator2]);
61+
$code = $generator->generate();
62+
63+
$this->assertIsString($code);
64+
}
65+
}

0 commit comments

Comments
 (0)