提交 583e3257 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

fix unit tests

上级 3700ff25
......@@ -28,34 +28,37 @@ test('smoke testing', async t => {
t.skip('tbw')
})
test('bridge cache should be release and can be re-init again.', async t => {
const bridge = new PadchatManagerTest({
test('PadchatManager() cache should be release and can be re-init again.', async t => {
const manager = new PadchatManagerTest({
memory : new MemoryCard(),
token : 'mock token',
endpoint : WECHATY_PUPPET_PADCHAT_ENDPOINT,
})
try {
await bridge.initCache('fake-token', 'fake-self-id')
await bridge.releaseCache()
await bridge.initCache('fake-token', 'fake-self-id')
t.pass('bridge cache init/release/init successed.')
await manager.initCache('fake-token', 'fake-self-id')
await manager.releaseCache()
await manager.initCache('fake-token', 'fake-self-id')
await manager.releaseCache()
t.pass('PadchatManager() cache init/release/init successed.')
} catch (e) {
t.fail(e)
}
})
test('bridge should can be restart() after a start()', async t => {
const bridge = new PadchatManager({
test.only('PadchatManager() should can be restart() after a start()', async t => {
const manager = new PadchatManager({
memory : new MemoryCard(),
token : 'mock token',
endpoint : WECHATY_PUPPET_PADCHAT_ENDPOINT,
})
try {
await bridge.start()
await bridge.stop()
await bridge.start()
t.pass('bridge start/restart successed.')
await manager.start()
await manager.stop()
await manager.start()
await manager.stop()
t.pass('PadchatManager() start/restart successed.')
} catch (e) {
console.error(e)
t.fail(e)
}
})
......@@ -222,7 +222,7 @@ export class PadchatManager extends PadchatRpc {
if (this.delayQueueExecutorSubscription) {
this.delayQueueExecutorSubscription.unsubscribe()
this.delayQueueExecutor.unsubscribe()
this.delayQueueExecutorSubscription = undefined
} else {
log.warn('PuppetPadchatManager', 'stop() subscript not exist')
}
......
......@@ -18,30 +18,27 @@ test('isRoomId()', async t => {
const ROOM_ID = 'xxx@chatroom'
const NOT_ROOM_ID = 'xxxxxxx'
t.ok(isRoomId(ROOM_ID), 'should return true for ROOM_ID')
t.notOk(isRoomId(NOT_ROOM_ID), 'should return false for ROOM_ID')
t.throws(() => isRoomId(undefined), 'should throw exception for undifined')
t.doesNotThrow(() => isRoomId('test'), 'should not throw for string')
t.equal(isRoomId(ROOM_ID) , true, 'should return true for ROOM_ID')
t.equal(isRoomId(NOT_ROOM_ID) , false, 'should return false for ROOM_ID')
t.equal(isRoomId(undefined) , false, 'should return false for undifined')
})
test('isContactId()', async t => {
const CONTACT_ID = 'sxxfdsa'
const NOT_CONTACT_ID = 'fdsafasd@chatroom'
t.ok(isContactId(CONTACT_ID), 'should return true for CONTACT_ID')
t.notOk(isContactId(NOT_CONTACT_ID), 'should return false for CONTACT_ID')
t.throws(() => isContactId(undefined), 'should throw exception for undifined')
t.doesNotThrow(() => isContactId('test'), 'should not throw for string')
t.equal(isContactId(CONTACT_ID) , true, 'should return true for CONTACT_ID')
t.equal(isContactId(NOT_CONTACT_ID) , false, 'should return false for CONTACT_ID')
t.equal(isContactId(undefined) , false , 'should return false for undifined')
})
test('isContactOfficialId()', async t => {
const OFFICIAL_CONTACT_ID = 'gh_sxxfdsa'
const NOT_OFFICIAL_CONTACT_ID = 'fdsafasd@chatroom'
t.ok(isContactOfficialId(OFFICIAL_CONTACT_ID), 'should return true for OFFICIAL_CONTACT_ID')
t.notOk(isContactOfficialId(NOT_OFFICIAL_CONTACT_ID), 'should return false for NOT_OFFICIAL_CONTACT_ID')
t.throws(() => isContactOfficialId(undefined), 'should throw exception for undifined')
t.doesNotThrow(() => isContactOfficialId('test'), 'should not throw for string')
t.equal(isContactOfficialId(OFFICIAL_CONTACT_ID) , true, 'should return true for OFFICIAL_CONTACT_ID')
t.equal(isContactOfficialId(NOT_OFFICIAL_CONTACT_ID), false, 'should return false for NOT_OFFICIAL_CONTACT_ID')
t.equal(isContactOfficialId(undefined) , false, 'should return false for undifined')
})
test('isStrangerV1()', async t => {
......
......@@ -48,6 +48,10 @@ class WechatyTest extends Wechaty {
}
}
class PuppetPuppeteerTest extends PuppetPuppeteer {
public id?: string = undefined
}
// tslint:disable:max-line-length
const ROOM_RAW_PAYLOAD: WebRoomRawPayload = JSON.parse(`{"RemarkPYQuanPin":"","RemarkPYInitial":"","PYInitial":"TZZGQNTSHGFJ","PYQuanPin":"tongzhizhongguoqingniantianshihuiguanfangjia","Uin":0,"UserName":"@@e2355db381dc46a77c0b95516d05e7486135cb6370d8a6af66925d89d50ec278","NickName":"(通知)中国青年天使会官方家","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgetheadimg?seq=670397504&username=@@e2355db381dc46a77c0b95516d05e7486135cb6370d8a6af66925d89d50ec278&skey=","ContactFlag":2,"MemberCount":146,"MemberList":[{"Uin":0,"UserName":"@ecff4a7a86f23455dc42317269aa36ab","NickName":"童玮亮","AttrStatus":103423,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"","KeyWord":"dap","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@ecff4a7a86f23455dc42317269aa36ab&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":0,"UserName":"@eac4377ecfd59e4321262f892177169f","NickName":"麦刚","AttrStatus":33674247,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"","KeyWord":"mai","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@eac4377ecfd59e4321262f892177169f&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":0,"UserName":"@ad85207730aa94e006ddce28f74e6878","NickName":"田美坤Maggie","AttrStatus":112679,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"田美坤","KeyWord":"tia","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@ad85207730aa94e006ddce28f74e6878&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":2351423900,"UserName":"@33cc239d22b20d56395bbbd0967b28b9","NickName":"周宏光","AttrStatus":327869,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"周宏光","KeyWord":"acc","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@33cc239d22b20d56395bbbd0967b28b9&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":0,"UserName":"@5e77381e1e3b5641ddcee44670b6e83a","NickName":"牛文文","AttrStatus":100349,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"","KeyWord":"niu","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@5e77381e1e3b5641ddcee44670b6e83a&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":0,"UserName":"@56941ef97f3e9c70af88667fdd613b44","NickName":"羊东 东方红酒窖","AttrStatus":33675367,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"","KeyWord":"Yan","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@56941ef97f3e9c70af88667fdd613b44&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":0,"UserName":"@72c4767ce32db488871fdd1c27173b81","NickName":"李竹~英诺天使(此号已满)","AttrStatus":235261,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"","KeyWord":"liz","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@72c4767ce32db488871fdd1c27173b81&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":0,"UserName":"@0b0e2eb9501ab2d84f9f800f6a0b4216","NickName":"周静彤 杨宁助理","AttrStatus":230885,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"","KeyWord":"zlo","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@0b0e2eb9501ab2d84f9f800f6a0b4216&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":0,"UserName":"@4bfa767be0cd3fb78409b9735d1dcc57","NickName":"周哲 Jeremy","AttrStatus":33791995,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"","KeyWord":"zho","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@4bfa767be0cd3fb78409b9735d1dcc57&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"},{"Uin":0,"UserName":"@ad954bf2159a572b7743a5bc134739f4","NickName":"vicky张","AttrStatus":100477,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"","KeyWord":"hua","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@ad954bf2159a572b7743a5bc134739f4&skey=@crypt_f9cec94b_f23a307a23231cfb5098faf91ff759ca&chatroomid=@4b8baa99bdfc354443711412126d2aaf"}],"RemarkName":"","HideInputBarFlag":0,"Sex":0,"Signature":"","VerifyFlag":0,"OwnerUin":2351423900,"StarFriend":0,"AppAccountFlag":0,"Statues":0,"AttrStatus":0,"Province":"","City":"","Alias":"","SnsFlag":0,"UniFriend":0,"DisplayName":"","ChatRoomId":0,"KeyWord":"","EncryChatRoomId":"@4b8baa99bdfc354443711412126d2aaf","MMFromBatchGet":true,"MMOrderSymbol":"TONGZHIZHONGGUOQINGNIANTIANSHIHUIGUANFANGJIA","MMFromBatchget":true,"MMInChatroom":true}`)
const CONTACT_RAW_PAYLOAD_DICT = JSON.parse(`{"@ad85207730aa94e006ddce28f74e6878":{ "UserName": "@ad85207730aa94e006ddce28f74e6878","NickName": "田美坤Maggie","RemarkName": "" },"@72c4767ce32db488871fdd1c27173b81":{ "UserName": "@72c4767ce32db488871fdd1c27173b81","NickName": "李竹~英诺天使(此号已满)","RemarkName": "" },"@ecff4a7a86f23455dc42317269aa36ab":{ "UserName": "@ecff4a7a86f23455dc42317269aa36ab","NickName": "童玮亮","RemarkName": "童玮亮备注" }}`)
......@@ -84,21 +88,18 @@ test('Room smok testing', async t => {
const sandbox = sinon.createSandbox()
const puppet = new PuppetPuppeteer({
const puppet = new PuppetPuppeteerTest({
memory: new MemoryCard(),
})
class WechatyTest extends Wechaty {
public initPuppetAccessory(puppet: PuppetPuppeteer) {
super.initPuppetAccessory(puppet)
}
}
const wechaty = new WechatyTest({ puppet })
wechaty.initPuppetAccessory(puppet)
sandbox.stub(puppet, 'contactRawPayload').callsFake(mockContactRoomRawPayload)
sandbox.stub(puppet, 'roomRawPayload').callsFake(mockContactRoomRawPayload)
sandbox.stub(puppet, 'id').value('pretend-to-be-logined')
const room = wechaty.Room.load(ROOM_EXPECTED.id)
await room.ready()
......
......@@ -667,7 +667,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
log.verbose('Puppet', 'roomMemberSearch(%s, %s)', roomId, JSON.stringify(query))
if (!this.id) {
throw new Error('no puppet.id')
throw new Error('no puppet.id. need puppet to be login-ed for a search')
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册