62 lines
1.8 KiB
PHP
62 lines
1.8 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
use App\Enums\ProxyTypes;
|
||
|
|
use App\Models\Server;
|
||
|
|
use Illuminate\Database\Eloquent\Builder;
|
||
|
|
|
||
|
|
it('filters servers by proxy type using whereProxyType scope', function () {
|
||
|
|
// Mock the Builder
|
||
|
|
$mockBuilder = Mockery::mock(Builder::class);
|
||
|
|
|
||
|
|
// Expect the where method to be called with the correct parameters
|
||
|
|
$mockBuilder->shouldReceive('where')
|
||
|
|
->once()
|
||
|
|
->with('proxy->type', ProxyTypes::TRAEFIK->value)
|
||
|
|
->andReturnSelf();
|
||
|
|
|
||
|
|
// Create a server instance and call the scope
|
||
|
|
$server = new Server;
|
||
|
|
$result = $server->scopeWhereProxyType($mockBuilder, ProxyTypes::TRAEFIK->value);
|
||
|
|
|
||
|
|
// Assert the builder is returned
|
||
|
|
expect($result)->toBe($mockBuilder);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('can chain whereProxyType scope with other query methods', function () {
|
||
|
|
// Mock the Builder
|
||
|
|
$mockBuilder = Mockery::mock(Builder::class);
|
||
|
|
|
||
|
|
// Expect multiple chained calls
|
||
|
|
$mockBuilder->shouldReceive('where')
|
||
|
|
->once()
|
||
|
|
->with('proxy->type', ProxyTypes::CADDY->value)
|
||
|
|
->andReturnSelf();
|
||
|
|
|
||
|
|
// Create a server instance and call the scope
|
||
|
|
$server = new Server;
|
||
|
|
$result = $server->scopeWhereProxyType($mockBuilder, ProxyTypes::CADDY->value);
|
||
|
|
|
||
|
|
// Assert the builder is returned for chaining
|
||
|
|
expect($result)->toBe($mockBuilder);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('accepts any proxy type string value', function () {
|
||
|
|
// Mock the Builder
|
||
|
|
$mockBuilder = Mockery::mock(Builder::class);
|
||
|
|
|
||
|
|
// Test with a custom proxy type
|
||
|
|
$customProxyType = 'custom-proxy';
|
||
|
|
|
||
|
|
$mockBuilder->shouldReceive('where')
|
||
|
|
->once()
|
||
|
|
->with('proxy->type', $customProxyType)
|
||
|
|
->andReturnSelf();
|
||
|
|
|
||
|
|
// Create a server instance and call the scope
|
||
|
|
$server = new Server;
|
||
|
|
$result = $server->scopeWhereProxyType($mockBuilder, $customProxyType);
|
||
|
|
|
||
|
|
// Assert the builder is returned
|
||
|
|
expect($result)->toBe($mockBuilder);
|
||
|
|
});
|