@ -14,6 +14,7 @@ use OC\Snowflake\Decoder;
use OC\Snowflake\Generator;
use OC\Snowflake\ISequence;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use OCP\Snowflake\IGenerator;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\MockObject\MockObject;
@ -24,17 +25,25 @@ use Test\TestCase;
*/
class GeneratorTest extends TestCase {
private Decoder $decoder;
private IConfig& MockObject $config;
private ISequence& MockObject $sequence;
public function setUp():void {
$this->decoder = new Decoder();
$this->config = $this->createMock(IConfig::class);
$this->config->method('getSystemValueInt')
->with('serverid')
->willReturn(42);
$this->sequence = $this->createMock(ISequence::class);
$this->sequence->method('isAvailable')->willReturn(true);
$this->sequence->method('nextId')->willReturn(421);
}
public function testGenerator(): void {
$generator = new Generator(new TimeFactory(), $this->sequence);
$generator = new Generator(new TimeFactory(), $this->config, $this-> sequence);
$snowflakeId = $generator->nextId();
$data = $this->decoder->decode($generator->nextId());
@ -52,6 +61,9 @@ class GeneratorTest extends TestCase {
// Check CLI
$this->assertTrue($data['isCli']);
// Check serverId
$this->assertEquals(42, $data['serverId']);
}
#[DataProvider('provideSnowflakeData')]
@ -60,11 +72,12 @@ class GeneratorTest extends TestCase {
$timeFactory = $this->createMock(ITimeFactory::class);
$timeFactory->method('now')->willReturn($dt);
$generator = new Generator($timeFactory, $this->sequence);
$generator = new Generator($timeFactory, $this->config, $this-> sequence);
$data = $this->decoder->decode($generator->nextId());
$this->assertEquals($expectedSeconds, ($data['createdAt']->format('U') - IGenerator::TS_OFFSET));
$this->assertEquals($expectedMilliseconds, (int)$data['createdAt']->format('v'));
$this->assertEquals(42, $data['serverId']);
}
public static function provideSnowflakeData(): array {