1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-06 02:15:48 +03:00

fix some Z (sorted list) commands, increase commands test coverage

This commit is contained in:
leibale
2021-11-11 18:50:32 -05:00
parent 41423fe8aa
commit ba66892b7c
10 changed files with 61 additions and 28 deletions

View File

@@ -30,7 +30,18 @@ describe('COMMAND INFO', () => {
); );
}); });
testUtils.testWithClient('client.commandInfo', async client => { describe('client.commandInfo', () => {
assertPingCommand((await client.commandInfo(['PING']))[0]); testUtils.testWithClient('PING', async client => {
}, GLOBAL.SERVERS.OPEN); assertPingCommand((await client.commandInfo(['PING']))[0]);
}, GLOBAL.SERVERS.OPEN);
testUtils.testWithClient('DOSE_NOT_EXISTS', async client => {
assert.deepEqual(
await client.commandInfo(['DOSE_NOT_EXISTS']),
[null]
);
}, GLOBAL.SERVERS.OPEN);
});
}); });

View File

@@ -23,7 +23,7 @@ export function transformArguments(...[ key, value, fieldValue ]: SingleFieldArg
pushMap(args, value); pushMap(args, value);
} else if (Array.isArray(value)) { } else if (Array.isArray(value)) {
pushTuples(args, value); pushTuples(args, value);
} else if (typeof value === 'object' && value !== null) { } else {
pushObject(args, value); pushObject(args, value);
} }

View File

@@ -1,15 +1,15 @@
import { transformArgumentNumberInfinity } from './generic-transformers'; import { transformArgumentStringNumberInfinity } from './generic-transformers';
export const FIRST_KEY_INDEX = 1; export const FIRST_KEY_INDEX = 1;
export const IS_READ_ONLY = true; export const IS_READ_ONLY = true;
export function transformArguments(key: string, min: number, max: number): Array<string> { export function transformArguments(key: string, min: string | number, max: string | number): Array<string> {
return [ return [
'ZCOUNT', 'ZCOUNT',
key, key,
transformArgumentNumberInfinity(min), transformArgumentStringNumberInfinity(min),
transformArgumentNumberInfinity(max) transformArgumentStringNumberInfinity(max)
]; ];
} }

View File

@@ -11,13 +11,6 @@ describe('ZRANGE', () => {
); );
}); });
it('using strings', () => {
assert.deepEqual(
transformArguments('src', '0', '1'),
['ZRANGE', 'src', '0', '1']
);
});
it('with BYSCORE', () => { it('with BYSCORE', () => {
assert.deepEqual( assert.deepEqual(
transformArguments('src', 0, 1, { transformArguments('src', 0, 1, {

View File

@@ -1,4 +1,4 @@
import { transformArgumentNumberInfinity } from './generic-transformers'; import { transformArgumentStringNumberInfinity } from './generic-transformers';
export const FIRST_KEY_INDEX = 1; export const FIRST_KEY_INDEX = 1;
@@ -17,8 +17,8 @@ export function transformArguments(key: string, min: string | number, max: strin
const args = [ const args = [
'ZRANGE', 'ZRANGE',
key, key,
typeof min === 'string' ? min : transformArgumentNumberInfinity(min), transformArgumentStringNumberInfinity(min),
typeof max === 'string' ? max : transformArgumentNumberInfinity(max) transformArgumentStringNumberInfinity(max)
]; ];
switch (options?.BY) { switch (options?.BY) {

View File

@@ -1,5 +1,5 @@
import { RedisCommandArguments } from '.'; import { RedisCommandArguments } from '.';
import { transformArgumentNumberInfinity } from './generic-transformers'; import { transformArgumentStringNumberInfinity } from './generic-transformers';
export const FIRST_KEY_INDEX = 1; export const FIRST_KEY_INDEX = 1;
@@ -21,8 +21,8 @@ export function transformArguments(
const args = [ const args = [
'ZRANGEBYLEX', 'ZRANGEBYLEX',
key, key,
typeof min === 'string' ? min : transformArgumentNumberInfinity(min), transformArgumentStringNumberInfinity(min),
typeof max === 'string' ? max : transformArgumentNumberInfinity(max) transformArgumentStringNumberInfinity(max)
]; ];
if (options?.LIMIT) { if (options?.LIMIT) {

View File

@@ -1,5 +1,5 @@
import { RedisCommandArguments } from '.'; import { RedisCommandArguments } from '.';
import { transformArgumentNumberInfinity } from './generic-transformers'; import { transformArgumentStringNumberInfinity } from './generic-transformers';
export const FIRST_KEY_INDEX = 1; export const FIRST_KEY_INDEX = 1;
@@ -21,8 +21,8 @@ export function transformArguments(
const args = [ const args = [
'ZRANGEBYSCORE', 'ZRANGEBYSCORE',
key, key,
typeof min === 'string' ? min : transformArgumentNumberInfinity(min), transformArgumentStringNumberInfinity(min),
typeof max === 'string' ? max : transformArgumentNumberInfinity(max) transformArgumentStringNumberInfinity(max)
]; ];
if (options?.LIMIT) { if (options?.LIMIT) {

View File

@@ -1,4 +1,4 @@
import { transformArgumentNumberInfinity } from './generic-transformers'; import { transformArgumentStringNumberInfinity } from './generic-transformers';
export const FIRST_KEY_INDEX = 1; export const FIRST_KEY_INDEX = 1;
@@ -12,13 +12,19 @@ interface ZRangeStoreOptions {
WITHSCORES?: true; WITHSCORES?: true;
} }
export function transformArguments(dst: string, src: string, min: number, max: number, options?: ZRangeStoreOptions): Array<string> { export function transformArguments(
dst: string,
src: string,
min: string | number,
max: string | number,
options?: ZRangeStoreOptions
): Array<string> {
const args = [ const args = [
'ZRANGESTORE', 'ZRANGESTORE',
dst, dst,
src, src,
transformArgumentNumberInfinity(min), transformArgumentStringNumberInfinity(min),
transformArgumentNumberInfinity(max) transformArgumentStringNumberInfinity(max)
]; ];
switch (options?.BY) { switch (options?.BY) {

View File

@@ -7,6 +7,7 @@ import {
transformReplyNumberInfinityArray, transformReplyNumberInfinityArray,
transformReplyNumberInfinityNull, transformReplyNumberInfinityNull,
transformArgumentNumberInfinity, transformArgumentNumberInfinity,
transformArgumentStringNumberInfinity,
transformReplyTuples, transformReplyTuples,
transformReplyStreamMessages, transformReplyStreamMessages,
transformReplyStreamsMessages, transformReplyStreamsMessages,
@@ -175,6 +176,22 @@ describe('Generic Transformers', () => {
}); });
}); });
describe('transformArgumentStringNumberInfinity', () => {
it("'0.5'", () => {
assert.equal(
transformArgumentStringNumberInfinity('0.5'),
'0.5'
);
});
it('0.5', () => {
assert.equal(
transformArgumentStringNumberInfinity(0.5),
'0.5'
);
});
});
it('transformReplyTuples', () => { it('transformReplyTuples', () => {
assert.deepEqual( assert.deepEqual(
transformReplyTuples(['key1', 'value1', 'key2', 'value2']), transformReplyTuples(['key1', 'value1', 'key2', 'value2']),

View File

@@ -69,6 +69,12 @@ export function transformArgumentNumberInfinity(num: number): string {
} }
} }
export function transformArgumentStringNumberInfinity(num: string | number): string {
if (typeof num === 'string') return num;
return transformArgumentNumberInfinity(num);
}
export interface TuplesObject { export interface TuplesObject {
[field: string]: string; [field: string]: string;
} }