hemera-redis-store
Version:
211 lines (197 loc) • 4.69 kB
JavaScript
const tap = require("tap")
const Hemera = require('nats-hemera')
const Nats = require("hemera-testsuite/nats")
const nats = new Nats()
const hemera = new Hemera(nats)
hemera.register(require("./init"))
function init() {
const client = hemera.redis.client
client.del('test')
client.set('test', 'value')
}
hemera.ready(() => {
init()
tap.test('这是一个关于Redis zset类型的(exists)测试', (t) => {
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'exists',
key: 'test'
}).then(resp => {
t.equal(1, resp.data)
}, err => {
t.error(err)
})
})
tap.test('这是一个关于Redis zset类型的(expire)测试', (t) => {
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'expire',
key: 'test',
delaytime: 1
}).then(resp => {
setTimeout(()=>{
hemera.act({
topic: 'redis-store',
cmd: 'get',
key: 'test'
}).then(resp => {
t.equal(null, resp.data)
}, err => {
t.error(err)
})
}, 1500)
}, err => {
t.error(err)
})
})
tap.test('这是一个关于Redis zset类型的(pexpire)测试', (t) => {
init()
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'pexpire',
key: 'test',
delaytime: 1000
}).then(resp => {
setTimeout(()=>{
hemera.act({
topic: 'redis-store',
cmd: 'get',
key: 'test'
}).then(resp => {
t.equal(null, resp.data)
}, err => {
t.error(err)
})
}, 1500)
}, err => {
t.error(err)
})
})
tap.test('这是一个关于Redis zset类型的(expireat)测试', (t) => {
init()
const timestamp = (new Date()).valueOf()
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'expireat',
key: 'test',
delaytime: parseInt(timestamp / 1000) + 1
}).then(resp => {
setTimeout(()=>{
hemera.act({
topic: 'redis-store',
cmd: 'get',
key: 'test'
}).then(resp => {
t.equal(null, resp.data)
}, err => {
t.error(err)
})
}, 1500)
}, err => {
t.error(err)
})
})
tap.test('这是一个关于Redis zset类型的(pexpireat)测试', (t) => {
init()
const timestamp = (new Date()).valueOf()
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'pexpireat',
key: 'test',
delaytime: timestamp + 1000
}).then(resp => {
setTimeout(()=>{
hemera.act({
topic: 'redis-store',
cmd: 'get',
key: 'test'
}).then(resp => {
t.equal(null, resp.data)
}, err => {
t.error(err)
})
}, 1500)
}, err => {
t.error(err)
})
})
tap.test('这是一个关于Redis zset类型的(pexpireat)测试', (t) => {
init()
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'pexpire',
key: 'test',
delaytime: 1500
}).then(resp => {
hemera.act({
topic: 'redis-store',
cmd: 'persist',
key: 'test'
}).then(resp => {
setTimeout(()=>{
hemera.act({
topic: 'redis-store',
cmd: 'get',
key: 'test'
}).then(resp => {
t.equal('value', resp.data)
}, err => {
t.error(err)
})
}, 2000)
}, err => {
t.error(err)
})
}, err => {
t.error(err)
})
})
tap.test('这是一个关于Redis zset类型的(ttl)测试', (t) => {
init()
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'ttl',
key: 'test'
}).then(resp => {
t.equal(-1, resp.data)
}, err => {
t.error(err)
})
})
tap.test('这是一个关于Redis zset类型的(keys)测试', (t) => {
init()
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'keys',
pattern: 'test'
}).then(resp => {
t.equal(1, resp.data.length)
}, err => {
t.error(err)
})
})
tap.test('这是一个关于Redis zset类型的(lastsave)测试', (t) => {
init()
t.plan(1);
hemera.act({
topic: 'redis-store',
cmd: 'lastsave'
}).then(resp => {
t.ok(resp.data)
}, err => {
t.error(err)
})
})
})
tap.tearDown(() => {
console.log("tap.tearDown")
hemera.close()
})