1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
<?php
namespace Illuminate\Tests\Redis\Connections;
use Illuminate\Redis\Connections\PhpRedisClusterConnection;
use Mockery as m;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
use PHPUnit\Framework\TestCase;
#[RequiresPhpExtension('redis')]
class PhpRedisClusterConnectionTest extends TestCase
{
protected function tearDown(): void
{
m::close();
}
public function testItScansUsingDefaultNode()
{
$client = m::mock(\RedisCluster::class);
$client->shouldReceive('_masters')->once()->andReturn([['127.0.0.1', '6379']]);
$client->shouldReceive('scan')
->once()
->with(0, ['127.0.0.1', '6379'], '*', 10)
->andReturn(['key']);
$connection = new PhpRedisClusterConnection($client);
$this->assertEquals([0, ['key']], $connection->scan(0));
}
public function testItOnlyFetchesDefaultNodeOnce()
{
$client = m::mock(\RedisCluster::class);
$client->shouldReceive('_masters')->once()->andReturn([['127.0.0.1', '6379']]);
$client->shouldReceive('scan')->twice();
$connection = new PhpRedisClusterConnection($client);
$connection->scan(0);
$connection->scan(0);
}
public function testItScansUsingOptionNode()
{
$client = m::mock(\RedisCluster::class);
$client->shouldReceive('scan')
->once()
->with(0, 'option-node', '*', 10)
->andReturn(['key']);
$connection = new PhpRedisClusterConnection($client);
$this->assertEquals([0, ['key']], $connection->scan(0, ['node' => 'option-node']));
}
public function testItThrowsExceptionWithoutNodes()
{
$client = m::mock(\RedisCluster::class);
$client->shouldReceive('_masters')->once()->andReturn([]);
$client->shouldReceive('scan');
$this->expectExceptionMessage('Unable to determine default node. No master nodes found in the cluster.');
$connection = new PhpRedisClusterConnection($client);
$connection->scan(0);
}
}
|