You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-10 11:43:01 +03:00
implement some GEO commands, improve scan generic transformer, expose RPUSHX
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
import { strict as assert } from 'assert';
|
||||
import { isKeyObject } from 'util/types';
|
||||
import {
|
||||
transformReplyBoolean,
|
||||
transformReplyBooleanArray,
|
||||
transformScanArguments,
|
||||
pushScanArguments,
|
||||
transformReplyNumberInfinity,
|
||||
transformReplyNumberInfinityArray,
|
||||
transformReplyNumberInfinityNull,
|
||||
@@ -12,7 +13,11 @@ import {
|
||||
transformReplyStreamMessages,
|
||||
transformReplyStreamsMessages,
|
||||
transformReplyStreamsMessagesNull,
|
||||
transformReplySortedSetWithScores
|
||||
transformReplySortedSetWithScores,
|
||||
pushGeoCountArgument,
|
||||
pushGeoSearchArguments,
|
||||
transformGeoMembersWithReply,
|
||||
GeoReplyWith
|
||||
} from './generic-transformers';
|
||||
|
||||
describe('Generic Transformers', () => {
|
||||
@@ -48,17 +53,17 @@ describe('Generic Transformers', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('transformScanArguments', () => {
|
||||
describe('pushScanArguments', () => {
|
||||
it('cusror only', () => {
|
||||
assert.deepEqual(
|
||||
transformScanArguments(0),
|
||||
pushScanArguments([], 0),
|
||||
['0']
|
||||
);
|
||||
});
|
||||
|
||||
it('with MATCH', () => {
|
||||
assert.deepEqual(
|
||||
transformScanArguments(0, {
|
||||
pushScanArguments([], 0, {
|
||||
MATCH: 'pattern'
|
||||
}),
|
||||
['0', 'MATCH', 'pattern']
|
||||
@@ -67,7 +72,7 @@ describe('Generic Transformers', () => {
|
||||
|
||||
it('with COUNT', () => {
|
||||
assert.deepEqual(
|
||||
transformScanArguments(0, {
|
||||
pushScanArguments([], 0, {
|
||||
COUNT: 1
|
||||
}),
|
||||
['0', 'COUNT', '1']
|
||||
@@ -76,7 +81,7 @@ describe('Generic Transformers', () => {
|
||||
|
||||
it('with MATCH & COUNT', () => {
|
||||
assert.deepEqual(
|
||||
transformScanArguments(0, {
|
||||
pushScanArguments([], 0, {
|
||||
MATCH: 'pattern',
|
||||
COUNT: 1
|
||||
}),
|
||||
@@ -99,7 +104,7 @@ describe('Generic Transformers', () => {
|
||||
Infinity
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
it('-inf', () => {
|
||||
assert.equal(
|
||||
transformReplyNumberInfinity('-inf'),
|
||||
@@ -271,4 +276,190 @@ describe('Generic Transformers', () => {
|
||||
}]
|
||||
);
|
||||
});
|
||||
|
||||
describe('pushGeoCountArgument', () => {
|
||||
it('undefined', () => {
|
||||
assert.deepEqual(
|
||||
pushGeoCountArgument([], undefined),
|
||||
[]
|
||||
);
|
||||
});
|
||||
|
||||
it('number', () => {
|
||||
assert.deepEqual(
|
||||
pushGeoCountArgument([], 1),
|
||||
['COUNT', '1']
|
||||
);
|
||||
});
|
||||
|
||||
it('with ANY', () => {
|
||||
assert.deepEqual(
|
||||
pushGeoCountArgument([], {
|
||||
value: 1,
|
||||
ANY: true
|
||||
}),
|
||||
['COUNT', '1', 'ANY']
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('pushGeoSearchArguments', () => {
|
||||
it('FROMMEMBER, BYRADIUS', () => {
|
||||
assert.deepEqual(
|
||||
pushGeoSearchArguments([], 'key', 'member', {
|
||||
radius: 1,
|
||||
unit: 'm'
|
||||
}),
|
||||
['key', 'FROMMEMBER', 'member', 'BYRADIUS', '1', 'm']
|
||||
);
|
||||
});
|
||||
|
||||
it('FROMLONLAT, BYBOX', () => {
|
||||
assert.deepEqual(
|
||||
pushGeoSearchArguments([], 'key', {
|
||||
longitude: 1,
|
||||
latitude: 2
|
||||
}, {
|
||||
width: 1,
|
||||
height: 2,
|
||||
unit: 'm'
|
||||
}),
|
||||
['key', 'FROMLONLAT', '1', '2', 'BYBOX', '1', '2', 'm']
|
||||
);
|
||||
});
|
||||
|
||||
it('with SORT', () => {
|
||||
assert.deepEqual(
|
||||
pushGeoSearchArguments([], 'key', 'member', {
|
||||
radius: 1,
|
||||
unit: 'm'
|
||||
}, {
|
||||
SORT: 'ASC'
|
||||
}),
|
||||
['key', 'FROMMEMBER', 'member', 'BYRADIUS', '1', 'm', 'ASC']
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('transformGeoMembersWithReply', () => {
|
||||
it('DISTANCE', () => {
|
||||
assert.deepEqual(
|
||||
transformGeoMembersWithReply([
|
||||
[
|
||||
'1',
|
||||
'2'
|
||||
],
|
||||
[
|
||||
'3',
|
||||
'4'
|
||||
]
|
||||
], [GeoReplyWith.DISTANCE]),
|
||||
[{
|
||||
member: '1',
|
||||
distance: '2'
|
||||
}, {
|
||||
member: '3',
|
||||
distance: '4'
|
||||
}]
|
||||
);
|
||||
});
|
||||
|
||||
it('HASH', () => {
|
||||
assert.deepEqual(
|
||||
transformGeoMembersWithReply([
|
||||
[
|
||||
'1',
|
||||
2
|
||||
],
|
||||
[
|
||||
'3',
|
||||
4
|
||||
]
|
||||
], [GeoReplyWith.HASH]),
|
||||
[{
|
||||
member: '1',
|
||||
hash: 2
|
||||
}, {
|
||||
member: '3',
|
||||
hash: 4
|
||||
}]
|
||||
);
|
||||
});
|
||||
|
||||
it('COORDINATES', () => {
|
||||
assert.deepEqual(
|
||||
transformGeoMembersWithReply([
|
||||
[
|
||||
'1',
|
||||
[
|
||||
'2',
|
||||
'3'
|
||||
]
|
||||
],
|
||||
[
|
||||
'4',
|
||||
[
|
||||
'5',
|
||||
'6'
|
||||
]
|
||||
]
|
||||
], [GeoReplyWith.COORDINATES]),
|
||||
[{
|
||||
member: '1',
|
||||
coordinates: {
|
||||
longitude: '2',
|
||||
latitude: '3'
|
||||
}
|
||||
}, {
|
||||
member: '4',
|
||||
coordinates: {
|
||||
longitude: '5',
|
||||
latitude: '6'
|
||||
}
|
||||
}]
|
||||
);
|
||||
});
|
||||
|
||||
it('DISTANCE, HASH, COORDINATES', () => {
|
||||
assert.deepEqual(
|
||||
transformGeoMembersWithReply([
|
||||
[
|
||||
'1',
|
||||
'2',
|
||||
3,
|
||||
[
|
||||
'4',
|
||||
'5'
|
||||
]
|
||||
],
|
||||
[
|
||||
'6',
|
||||
'7',
|
||||
8,
|
||||
[
|
||||
'9',
|
||||
'10'
|
||||
]
|
||||
]
|
||||
], [GeoReplyWith.DISTANCE, GeoReplyWith.HASH, GeoReplyWith.COORDINATES]),
|
||||
[{
|
||||
member: '1',
|
||||
distance: '2',
|
||||
hash: 3,
|
||||
coordinates: {
|
||||
longitude: '4',
|
||||
latitude: '5'
|
||||
}
|
||||
}, {
|
||||
member: '6',
|
||||
distance: '7',
|
||||
hash: 8,
|
||||
coordinates: {
|
||||
longitude: '9',
|
||||
latitude: '10'
|
||||
}
|
||||
}]
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user