Skip to content

Commit c6d82b2

Browse files
committed
allow inheriting from TimeSeries class
1 parent 3b53ffa commit c6d82b2

File tree

2 files changed

+64
-2
lines changed

2 files changed

+64
-2
lines changed

src/TimeSeries.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ final class TimeSeries
1818
public const DUPLICATE_POLICY_MAX = 'MAX';
1919
public const DUPLICATE_POLICY_SUM = 'SUM';
2020

21-
private const DUPLICATE_POLICIES = [
21+
protected const DUPLICATE_POLICIES = [
2222
self::DUPLICATE_POLICY_BLOCK,
2323
self::DUPLICATE_POLICY_FIRST,
2424
self::DUPLICATE_POLICY_LAST,
@@ -29,7 +29,7 @@ final class TimeSeries
2929

3030

3131
/** @var RedisClientInterface */
32-
private $redis;
32+
protected $redis;
3333

3434
/**
3535
* @param RedisClientInterface $redis

tests/Integration/ExtendTest.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
/* @noinspection PhpUnhandledExceptionInspection */
3+
4+
declare(strict_types=1);
5+
6+
namespace Palicao\PhpRedisTimeSeries\Tests\Integration;
7+
8+
use DateInterval;
9+
use DateTime;
10+
use DateTimeImmutable;
11+
use Palicao\PhpRedisTimeSeries\AggregationRule;
12+
use Palicao\PhpRedisTimeSeries\Client\RedisClient;
13+
use Palicao\PhpRedisTimeSeries\Client\RedisConnectionParams;
14+
use Palicao\PhpRedisTimeSeries\DateTimeUtils;
15+
use Palicao\PhpRedisTimeSeries\Filter;
16+
use Palicao\PhpRedisTimeSeries\Label;
17+
use Palicao\PhpRedisTimeSeries\Sample;
18+
use Palicao\PhpRedisTimeSeries\SampleWithLabels;
19+
use Palicao\PhpRedisTimeSeries\TimeSeries;
20+
use PHPUnit\Framework\TestCase;
21+
use Redis;
22+
23+
class MyTimeSeries extends TimeSeries
24+
{
25+
public function getRedis()
26+
{
27+
return $this->redis;
28+
}
29+
30+
public function modifyDuplicatePolicies()
31+
{
32+
self::DUPLICATE_POLICIES[] = "FOOBAR";
33+
}
34+
}
35+
36+
class ExtendTest extends TestCase
37+
{
38+
private $redisClient;
39+
private $sut;
40+
41+
public function setUp(): void
42+
{
43+
$host = getenv('REDIS_HOST') ?: 'php-rts-redis';
44+
$port = getenv('REDIS_PORT') ? (int) getenv('REDIS_PORT') : 6379;
45+
$connectionParams = new RedisConnectionParams($host, $port);
46+
$this->redisClient = new RedisClient(new Redis(), $connectionParams);
47+
$this->sut = new MyTimeSeries($this->redisClient);
48+
}
49+
50+
public function testRedisPropertyScope(): void
51+
{
52+
self::assrtSame($this->redisClient, $this->sut->getRedis());
53+
}
54+
55+
public function testDuplicatePolicyModification(): void
56+
{
57+
$this->sut->modifyDuplicatePolicies();
58+
59+
$result = $this->sut::DUPLICATE_POLICIES[sizeof($this->sut::DUPLICATE_POLICIES) - 1];
60+
self::assrtEqual($result, "FOOBAR");
61+
}
62+
}

0 commit comments

Comments
 (0)