From 4de409e0ad75cc7e0645aabb11d2d26aafafa4dc Mon Sep 17 00:00:00 2001 From: dovi Date: Wed, 3 May 2023 18:51:12 -0400 Subject: [PATCH] fix SUNIONSTORE --- .../client/lib/commands/SUNIONSTORE.spec.ts | 53 ++++++++++--------- packages/client/lib/commands/SUNIONSTORE.ts | 25 ++++----- packages/client/lib/commands/index.ts | 3 ++ 3 files changed, 44 insertions(+), 37 deletions(-) diff --git a/packages/client/lib/commands/SUNIONSTORE.spec.ts b/packages/client/lib/commands/SUNIONSTORE.spec.ts index 4cf50132aa..e9d288c029 100644 --- a/packages/client/lib/commands/SUNIONSTORE.spec.ts +++ b/packages/client/lib/commands/SUNIONSTORE.spec.ts @@ -1,28 +1,31 @@ -// import { strict as assert } from 'assert'; -// import testUtils, { GLOBAL } from '../test-utils'; -// import { transformArguments } from './SUNIONSTORE'; +import { strict as assert } from 'assert'; +import testUtils, { GLOBAL } from '../test-utils'; +import SUNIONSTORE from './SUNIONSTORE'; -// describe('SUNIONSTORE', () => { -// describe('transformArguments', () => { -// it('string', () => { -// assert.deepEqual( -// transformArguments('destination', 'key'), -// ['SUNIONSTORE', 'destination', 'key'] -// ); -// }); +describe('SUNIONSTORE', () => { + describe('transformArguments', () => { + it('string', () => { + assert.deepEqual( + SUNIONSTORE.transformArguments('destination', 'key'), + ['SUNIONSTORE', 'destination', 'key'] + ); + }); -// it('array', () => { -// assert.deepEqual( -// transformArguments('destination', ['1', '2']), -// ['SUNIONSTORE', 'destination', '1', '2'] -// ); -// }); -// }); + it('array', () => { + assert.deepEqual( + SUNIONSTORE.transformArguments('destination', ['1', '2']), + ['SUNIONSTORE', 'destination', '1', '2'] + ); + }); + }); -// testUtils.testWithClient('client.sUnionStore', async client => { -// assert.equal( -// await client.sUnionStore('destination', 'key'), -// 0 -// ); -// }, GLOBAL.SERVERS.OPEN); -// }); + testUtils.testAll('sUnionStore', async client => { + assert.equal( + await client.sUnionStore('{tag}destination', '{tag}key'), + 0 + ); + }, { + client: GLOBAL.SERVERS.OPEN, + cluster: GLOBAL.CLUSTERS.OPEN + }); +}); diff --git a/packages/client/lib/commands/SUNIONSTORE.ts b/packages/client/lib/commands/SUNIONSTORE.ts index 1d5ee097ca..9adaa9288f 100644 --- a/packages/client/lib/commands/SUNIONSTORE.ts +++ b/packages/client/lib/commands/SUNIONSTORE.ts @@ -1,13 +1,14 @@ -// import { RedisCommandArgument, RedisCommandArguments } from '.'; -// import { pushVariadicArguments } from './generic-transformers'; +import { RedisArgument, NumberReply, Command } from '../RESP/types'; +import { RedisVariadicArgument, pushVariadicArguments } from './generic-transformers'; -// export const FIRST_KEY_INDEX = 1; - -// export function transformArguments( -// destination: RedisCommandArgument, -// keys: RedisCommandArgument | Array -// ): RedisCommandArguments { -// return pushVariadicArguments(['SUNIONSTORE', destination], keys); -// } - -// export declare function transformReply(): number; +export default { + FIRST_KEY_INDEX: 1, + IS_READ_ONLY: false, + transformArguments( + destination: RedisArgument, + keys: RedisVariadicArgument + ) { + return pushVariadicArguments(['SUNIONSTORE', destination], keys); + }, + transformReply: undefined as unknown as () => NumberReply +} as const satisfies Command; diff --git a/packages/client/lib/commands/index.ts b/packages/client/lib/commands/index.ts index 3629b0357d..81dc8bd13d 100644 --- a/packages/client/lib/commands/index.ts +++ b/packages/client/lib/commands/index.ts @@ -152,6 +152,7 @@ import SREM from './SREM'; import SSCAN from './SSCAN'; import STRLEN from './STRLEN'; import SUNION from './SUNION'; +import SUNIONSTORE from './SUNIONSTORE'; import TOUCH from './TOUCH'; import TTL from './TTL'; import TYPE from './TYPE'; @@ -507,6 +508,8 @@ export default { strLen: STRLEN, SUNION, sUnion: SUNION, + SUNIONSTORE, + sUnionStore: SUNIONSTORE, TOUCH, touch: TOUCH, TTL,