|
25 | 25 | use PHPUnit\Framework\Attributes\DataProvider; |
26 | 26 | use PHPUnit\Framework\Attributes\Group; |
27 | 27 | use stdClass; |
| 28 | +use Tests\Support\Enum\RoleEnum; |
| 29 | +use Tests\Support\Enum\StatusEnum; |
28 | 30 |
|
29 | 31 | /** |
30 | 32 | * @internal |
@@ -400,6 +402,28 @@ public function testOrWhereSameColumn(): void |
400 | 402 | $this->assertSame($expectedBinds, $builder->getBinds()); |
401 | 403 | } |
402 | 404 |
|
| 405 | + public function testWhereWithBackedEnum(): void |
| 406 | + { |
| 407 | + $builder = $this->db->table('jobs'); |
| 408 | + |
| 409 | + $builder->where('status', StatusEnum::ACTIVE); |
| 410 | + |
| 411 | + $expectedSQL = 'SELECT * FROM "jobs" WHERE "status" = \'active\''; |
| 412 | + |
| 413 | + $this->assertSame($expectedSQL, str_replace("\n", ' ', $builder->getCompiledSelect())); |
| 414 | + } |
| 415 | + |
| 416 | + public function testWhereBetweenWithBackedEnums(): void |
| 417 | + { |
| 418 | + $builder = $this->db->table('jobs'); |
| 419 | + |
| 420 | + $builder->whereBetween('role', [RoleEnum::GUEST, RoleEnum::ADMIN]); |
| 421 | + |
| 422 | + $expectedSQL = 'SELECT * FROM "jobs" WHERE "role" BETWEEN 0 AND 2'; |
| 423 | + |
| 424 | + $this->assertSame($expectedSQL, str_replace("\n", ' ', $builder->getCompiledSelect())); |
| 425 | + } |
| 426 | + |
403 | 427 | #[DataProvider('provideWhereColumnWithOperators')] |
404 | 428 | public function testWhereColumnWithOperators(string $first, string $operator): void |
405 | 429 | { |
@@ -840,6 +864,17 @@ public function testWhereIn(): void |
840 | 864 | $this->assertSame($expectedBinds, $builder->getBinds()); |
841 | 865 | } |
842 | 866 |
|
| 867 | + public function testWhereInWithBackedEnums(): void |
| 868 | + { |
| 869 | + $builder = $this->db->table('jobs'); |
| 870 | + |
| 871 | + $builder->whereIn('status', [StatusEnum::ACTIVE, StatusEnum::INACTIVE]); |
| 872 | + |
| 873 | + $expectedSQL = 'SELECT * FROM "jobs" WHERE "status" IN (\'active\',\'inactive\')'; |
| 874 | + |
| 875 | + $this->assertSame($expectedSQL, str_replace("\n", ' ', $builder->getCompiledSelect())); |
| 876 | + } |
| 877 | + |
843 | 878 | public function testWhereInSubQuery(): void |
844 | 879 | { |
845 | 880 | $expectedSQL = 'SELECT * FROM "jobs" WHERE "id" IN (SELECT "job_id" FROM "users_jobs" WHERE "user_id" = 3)'; |
|
0 commit comments