getCommand(); $command->setArguments($arguments); $this->assertSame($expected, $command->getArguments()); } /** * @group disconnected */ public function testParseResponse(): void { $this->assertSame(1, $this->getCommand()->parseResponse(1)); } /** * @dataProvider jsonProvider * @group connected * @group relay-resp3 * @param array $setArguments * @param array $mergeArguments * @param string $expectedResponse * @return void * @requiresRedisJsonVersion >= 2.6.0 */ public function testMergeCorrectlyMergeJsonValues( array $setArguments, array $mergeArguments, string $expectedResponse ): void { $redis = $this->getClient(); $this->assertEquals('OK', $redis->jsonset(...$setArguments)); $this->assertEquals('OK', $redis->jsonmerge(...$mergeArguments)); $this->assertEquals($expectedResponse, $redis->jsonget('key')); } public function jsonProvider(): array { return [ 'create non-existing value' => [ ['key', '$', '{"a":2}'], ['key', '$.b', '8'], '{"a":2,"b":8}', ], 'replace existing value' => [ ['key', '$', '{"a":2}'], ['key', '$.a', '3'], '{"a":3}', ], 'replace an array' => [ ['key', '$', '{"a":[2,4,6,8]}'], ['key', '$.a', '[10,12]'], '{"a":[10,12]}', ], 'merge in multiple-paths' => [ ['key', '$', '{"f1": {"a":1}, "f2":{"a":2}}'], ['key', '$', '{"f2":{"a":3, "b":4}, "f3":[2,4,6]}'], '{"f1":{"a":1},"f2":{"a":3,"b":4},"f3":[2,4,6]}', ], ]; } }