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

chore: refactor codebase to promises

This commit is contained in:
Ruben Bridgewater
2017-05-19 06:14:29 +02:00
parent b2613b2270
commit 6be5575c5b
85 changed files with 2081 additions and 3690 deletions

View File

@@ -19,145 +19,65 @@ describe('The \'set\' method', () => {
describe('when not connected', () => {
let client
beforeEach((done) => {
beforeEach(() => {
client = redis.createClient.apply(null, args)
client.once('ready', () => {
client.quit()
})
client.on('end', done)
return client.quit()
})
it('reports an error', (done) => {
client.set(key, value, (err, res) => {
assert(err.message.match(/The connection is already closed/))
done()
})
it('reports an error', () => {
return client.set(key, value).then(assert, helper.isError(/The connection is already closed/))
})
})
describe('when connected', () => {
let client
beforeEach((done) => {
beforeEach(() => {
client = redis.createClient.apply(null, args)
client.once('ready', () => {
client.flushdb(done)
})
return client.flushdb()
})
afterEach(() => {
client.end(true)
})
describe('and a callback is specified', () => {
describe('with valid parameters', () => {
it('sets the value correctly', (done) => {
client.set(key, value, (err, res) => {
helper.isNotError()(err, res)
client.get(key, (err, res) => {
helper.isString(value)(err, res)
done()
})
})
})
describe('with valid parameters', () => {
it('sets the value correctly', () => {
client.set(key, value)
return client.get(key).then(helper.isString(value))
})
it('set expire date in seconds', (done) => {
client.set('foo', 'bar', 'ex', 10, helper.isString('OK'))
client.pttl('foo', (err, res) => {
assert(res >= 10000 - 50) // Max 50 ms should have passed
assert(res <= 10000) // Max possible should be 10.000
done(err)
})
})
it('set expire date in milliseconds', (done) => {
client.set('foo', 'bar', 'px', 100, helper.isString('OK'))
client.pttl('foo', (err, res) => {
assert(res >= 50) // Max 50 ms should have passed
assert(res <= 100) // Max possible should be 100
done(err)
})
})
it('only set the key if (not) already set', (done) => {
client.set('foo', 'bar', 'NX', helper.isString('OK'))
client.set('foo', 'bar', 'nx', helper.isNull())
client.set('foo', 'bar', 'EX', '10', 'XX', helper.isString('OK'))
client.ttl('foo', (err, res) => {
assert(res >= 9) // Min 9s should be left
assert(res <= 10) // Max 10s should be left
done(err)
})
it('set expire date in seconds', () => {
client.set('foo', 'bar', 'ex', 10).then(helper.isString('OK'))
return client.pttl('foo').then((res) => {
assert(res >= 10000 - 50) // Max 50 ms should have passed
assert(res <= 10000) // Max possible should be 10.000
})
})
describe('reports an error with invalid parameters', () => {
it('undefined \'key\' and missing \'value\' parameter', (done) => {
client.set(undefined, (err, res) => {
helper.isError()(err, null)
assert.strictEqual(err.command, 'SET')
done()
})
it('set expire date in milliseconds', () => {
client.set('foo', 'bar', 'px', 100).then(helper.isString('OK'))
return client.pttl('foo').then((res) => {
assert(res >= 50) // Max 50 ms should have passed
assert(res <= 100) // Max possible should be 100
})
})
it('empty array as second parameter', (done) => {
client.set('foo', [], (err, res) => {
assert.strictEqual(err.message, 'ERR wrong number of arguments for \'set\' command')
done()
})
it('only set the key if (not) already set', () => {
client.set('foo', 'bar', 'NX').then(helper.isString('OK'))
client.set('foo', 'bar', 'nx').then(helper.isNull())
client.set('foo', 'bar', 'EX', '10', 'XX').then(helper.isString('OK'))
return client.ttl('foo').then((res) => {
assert(res >= 9) // Min 9s should be left
assert(res <= 10) // Max 10s should be left
})
})
})
describe('and no callback is specified', () => {
describe('with valid parameters', () => {
it('sets the value correctly', (done) => {
client.set(key, value)
client.get(key, helper.isString(value, done))
})
it('sets the value correctly even if the callback is explicitly set to undefined', (done) => {
client.set(key, value, undefined)
client.get(key, helper.isString(value, done))
})
it('sets the value correctly with the array syntax', (done) => {
client.set([key, value])
client.get(key, helper.isString(value, done))
})
})
describe('with undefined \'key\' and missing \'value\' parameter', () => {
it('emits an error without callback', (done) => {
client.on('error', (err) => {
assert.strictEqual(err.message, 'ERR wrong number of arguments for \'set\' command')
assert.strictEqual(err.command, 'SET')
done()
})
client.set(undefined)
})
})
it('returns an error on \'null\'', (done) => {
client.set('foo', null, helper.isError(done))
})
it('emit an error with only the key set', (done) => {
client.on('error', (err) => {
assert.strictEqual(err.message, 'ERR wrong number of arguments for \'set\' command')
done()
})
client.set('foo')
})
it('emit an error without any parameters', (done) => {
client.once('error', (err) => {
assert.strictEqual(err.message, 'ERR wrong number of arguments for \'set\' command')
assert.strictEqual(err.command, 'SET')
done()
})
client.set()
describe('reports an error with invalid parameters', () => {
it('empty array as second parameter', () => {
return client.set('foo', [])
.then(assert, helper.isError(/ERR wrong number of arguments for 'set' command/))
})
})
})