getCommand(); $command->setArguments($arguments); $this->assertSame($expected, $command->getArguments()); } /** * @group disconnected */ public function testParseResponse(): void { $this->assertSame(1, $this->getCommand()->parseResponse(1)); } /** * @group connected * @group relay-resp3 * @dataProvider jsonProvider * @param array $jsonArguments * @param string $key * @param string $path * @param int $expectedClearValues * @param string $expectedModifiedJson * @return void * @requiresRedisJsonVersion >= 2.0.0 */ public function testClearValuesOnArraysAndObjects( array $jsonArguments, string $key, string $path, int $expectedClearValues, string $expectedModifiedJson ): void { $redis = $this->getClient(); $redis->jsonset(...$jsonArguments); $actualResponse = $redis->jsonclear($key, $path); $this->assertSame($expectedClearValues, $actualResponse); $this->assertSame($expectedModifiedJson, $redis->jsonget($key)); } public function jsonProvider(): array { return [ 'with array values' => [ ['key', '$', '{"key1":"value1","key2":[1,2,3,4,5,6]}'], 'key', '$.key2', 1, '{"key1":"value1","key2":[]}', ], 'with json object' => [ ['key', '$', '{"key1":"value1","key2":{"key3":"value3"}}'], 'key', '$.key2', 1, '{"key1":"value1","key2":{}}', ], 'with numeric values' => [ ['key', '$', '{"key1":"value1","key2":1}'], 'key', '$.key2', 1, '{"key1":"value1","key2":0}', ], 'with all accepted values' => [ ['key', '$', '{"key1":1,"key2":{"key3":"value3"},"key3":[1,2,3]}'], 'key', '$.*', 3, '{"key1":0,"key2":{},"key3":[]}', ], 'with string and boolean value' => [ ['key', '$', '{"key1":"value1","key2":true}'], 'key', '$.*', 0, '{"key1":"value1","key2":true}', ], ]; } }