Initial commit

This commit is contained in:
2026-02-06 23:26:56 +07:00
commit d6022b9bca
92 changed files with 41386 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*/
public function test_that_true_is_true(): void
{
$this->assertTrue(true);
}
}

View File

@@ -0,0 +1,138 @@
<?php
declare(strict_types=1);
namespace Tests\Unit;
use App\Http\Requests\LoginRequest;
use Illuminate\Support\Facades\Validator;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;
class LoginRequestTest extends TestCase
{
private LoginRequest $request;
protected function setUp(): void
{
parent::setUp();
$this->request = new LoginRequest();
}
#[Test]
public function it_validates_correctly(): void
{
$data = [
'email' => 'test@example.com',
'password' => 'password123',
];
$validator = Validator::make($data, $this->request->rules());
$this->assertTrue($validator->passes());
}
#[Test]
#[DataProvider('invalidEmailProvider')]
public function it_rejects_invalid_emails(string $invalidEmail): void
{
$data = [
'email' => $invalidEmail,
'password' => 'password123',
];
$validator = Validator::make($data, $this->request->rules());
$this->assertFalse($validator->passes());
$this->assertTrue($validator->errors()->has('email'));
}
public static function invalidEmailProvider(): array
{
return [
['invalid-email'],
['invalid@'],
['@example.com'],
['invalid@.com'],
[''],
];
}
#[Test]
#[DataProvider('validEmailProvider')]
public function it_accepts_valid_emails(string $validEmail): void
{
$data = [
'email' => $validEmail,
'password' => 'password123',
];
$validator = Validator::make($data, $this->request->rules());
$this->assertTrue(
$validator->passes(),
"Email '$validEmail' should be valid"
);
}
public static function validEmailProvider(): array
{
return [
['user@example.com'],
['user.name@example.com'],
['user+tag@example.com'],
['user@sub.example.com'],
['user@example.co.uk'],
['user123@example.io'],
];
}
#[Test]
public function it_requires_email_and_password(): void
{
$validator = Validator::make([], $this->request->rules(), $this->request->messages());
$this->assertFalse($validator->passes());
$this->assertTrue($validator->errors()->has('email'));
$this->assertTrue($validator->errors()->has('password'));
$this->assertEquals('Email is required', $validator->errors()->first('email'));
$this->assertEquals('Password is required', $validator->errors()->first('password'));
}
#[Test]
public function it_enforces_email_max_length(): void
{
$longEmail = str_repeat('a', 256).'@example.com';
$data = [
'email' => $longEmail,
'password' => 'password123',
];
$validator = Validator::make($data, $this->request->rules());
$this->assertFalse($validator->passes());
$this->assertTrue($validator->errors()->has('email'));
}
#[Test]
public function it_allows_email_at_max_length(): void
{
$maxEmail = str_repeat('a', 240).'@example.com';
$data = [
'email' => $maxEmail,
'password' => 'password123',
];
$validator = Validator::make($data, $this->request->rules());
$this->assertTrue(
$validator->passes(),
'Email at max length should be valid'
);
}
}