test: add test to verify that a sorted set is automatically deleted if its last element is removed (#10261)

* test: add test to verify that a sorted set is automatically deleted if its last element is removed

* fix: remote empty zsets when all elements have been removed #yolo

* Revert "fix: remote empty zsets when all elements have been removed #yolo"

This reverts commit 0ac73244bb.

* fix: altered behaviour in module.exists instead of zrem
This commit is contained in:
Julian Lam
2022-02-07 17:16:50 -05:00
committed by GitHub
parent fb3f4f9a13
commit 606808760e
2 changed files with 12 additions and 0 deletions

View File

@@ -17,6 +17,13 @@ module.exports = function (module) {
return;
}
// Redis/Mongo consider empty zsets as non-existent, match that behaviour
const type = await module.type(key);
if (type === 'zset') {
const members = await module.getSortedSetRange(key, 0, 0);
return members.length > 0;
}
if (Array.isArray(key)) {
const res = await module.pool.query({
name: 'existsArray',

View File

@@ -1085,6 +1085,11 @@ describe('Sorted Set methods', () => {
});
});
it('should not think the sorted set exists if the last element is removed', async () => {
await db.sortedSetRemove('sorted3', 'value1');
assert.strictEqual(await db.exists('sorted3'), false);
});
it('should remove multiple values from multiple keys', (done) => {
db.sortedSetAdd('multiTest1', [1, 2, 3, 4], ['one', 'two', 'three', 'four'], (err) => {
assert.ifError(err);