wechaty-redux
Version:
Wechaty Redux Plugin Powered By Ducks
52 lines • 2.84 kB
JavaScript
import { test, sinon, } from 'tstest';
import { PuppetMock } from 'wechaty-puppet-mock';
import * as duck from './duck/mod.js';
import { getPuppet, } from './registry/mod.js';
import { puppet$, } from './puppet$.js';
test('puppet$() & getPuppet()', async (t) => {
const spy = sinon.spy();
const puppet = new PuppetMock();
const store = {
dispatch: spy,
};
t.notOk(getPuppet(puppet.id), 'should not have puppet in registry');
const $ = puppet$(puppet, { store });
const sub = $.subscribe(store.dispatch);
t.ok(spy.calledOnce, 'should have one action after subscribe');
t.same(spy.args[0][0], duck.actions.REGISTER_PUPPET_COMMAND(puppet.id), 'should get puppet register action');
t.equal(getPuppet(puppet.id), puppet, 'should have puppet in registry');
spy.resetHistory();
sub.unsubscribe();
t.ok(spy.calledOnce, 'should have one action after unsubscribe');
t.same(spy.args[0][0], duck.actions.DEREGISTER_PUPPET_COMMAND(puppet.id), 'should get puppet deregister action');
t.notOk(getPuppet(puppet.id), 'should not have puppet in registry');
});
test('puppet$() start/stop actions', async (t) => {
const spy = sinon.spy();
const puppet = new PuppetMock();
const store = {
dispatch: spy,
};
const $ = puppet$(puppet, { store });
const sub = $.subscribe(store.dispatch);
t.ok(spy.calledOnce, 'should have one action after subscribe');
t.same(spy.args[0][0], duck.actions.REGISTER_PUPPET_COMMAND(puppet.id), 'should emit register puppet action');
spy.resetHistory();
await puppet.start();
t.ok(spy.calledThrice, 'should have three action after start');
t.same(spy.args[0][0], duck.actions.STATE_ACTIVATED_EVENT(puppet.id, 'pending'), 'should emit `pending` active state action');
t.same(spy.args[1][0], duck.actions.STATE_ACTIVATED_EVENT(puppet.id, true), 'should emit `true` active state action');
t.same(spy.args[2][0], duck.actions.STARTED_EVENT(puppet.id), 'should emit start event action');
spy.resetHistory();
await puppet.stop();
t.ok(spy.calledThrice, 'should have three action after stop');
t.same(spy.args[0][0], duck.actions.STATE_INACTIVATED_EVENT(puppet.id, 'pending'), 'should emit `pending` inactive state action');
t.same(spy.args[1][0], duck.actions.STATE_INACTIVATED_EVENT(puppet.id, true), 'should emit `true` inactive state action');
t.same(spy.args[2][0], duck.actions.STOPPED_EVENT(puppet.id), 'should emit stop event action');
spy.resetHistory();
sub.unsubscribe();
t.ok(spy.calledOnce, 'should have one action after unsubscribe');
t.same(spy.args[0][0], duck.actions.DEREGISTER_PUPPET_COMMAND(puppet.id), 'should get puppet deregister action');
});
//# sourceMappingURL=puppet$.spec.js.map