Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
.Veneno.
wechaty
提交
12a81eb8
W
wechaty
项目概览
.Veneno.
/
wechaty
与 Fork 源项目一致
Fork自
wechaty / wechaty
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
wechaty
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
12a81eb8
编写于
10月 06, 2016
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Class Room bug fix & unit test
上级
7c2e8e60
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
110 addition
and
43 deletion
+110
-43
src/room.js
src/room.js
+29
-7
test/room.spec.js
test/room.spec.js
+81
-36
未找到文件。
src/room.js
浏览文件 @
12a81eb8
...
...
@@ -68,8 +68,25 @@ class Room extends EventEmitter{
})
}
owner
()
{
return
this
.
obj
.
memberList
&&
this
.
obj
.
memberList
[
0
]
}
topic
()
{
return
UtilLib
.
plainText
(
this
.
obj
.
topic
)
}
owner
()
{
const
ownerUin
=
this
.
obj
.
ownerUin
let
memberList
=
this
.
obj
.
memberList
||
[]
let
user
=
Config
.
puppetInstance
()
.
user
if
(
user
&&
user
.
get
(
'
uin
'
)
===
ownerUin
)
{
return
user
}
memberList
=
memberList
.
filter
(
m
=>
m
.
Uin
===
ownerUin
)
if
(
memberList
.
length
>
0
)
{
return
memberList
[
0
]
}
return
null
}
get
(
prop
)
{
return
this
.
obj
[
prop
]
||
this
.
dirtyObj
[
prop
]
}
parse
(
rawObj
)
{
...
...
@@ -80,6 +97,8 @@ class Room extends EventEmitter{
id
:
rawObj
.
UserName
,
encryId
:
rawObj
.
EncryChatRoomId
// ???
,
topic
:
rawObj
.
NickName
,
ownerUin
:
rawObj
.
OwnerUin
,
memberList
:
this
.
parseMemberList
(
rawObj
.
MemberList
)
,
nickMap
:
this
.
parseNickMap
(
rawObj
.
MemberList
)
}
...
...
@@ -95,7 +114,9 @@ class Room extends EventEmitter{
parseNickMap
(
memberList
)
{
const
nickMap
=
{}
if
(
memberList
&&
memberList
.
map
)
{
memberList
.
forEach
(
m
=>
nickMap
[
m
.
UserName
]
=
m
.
DisplayName
)
memberList
.
forEach
(
m
=>
{
nickMap
[
m
.
UserName
]
=
m
.
DisplayName
||
m
.
NickName
})
}
return
nickMap
}
...
...
@@ -172,7 +193,8 @@ class Room extends EventEmitter{
Config
.
puppetInstance
().
roomTopic
(
this
,
newTopic
)
return
newTopic
}
return
this
.
get
(
'
topic
'
)
// return this.get('topic')
return
UtilLib
.
plainText
(
this
.
obj
.
topic
)
}
nick
(
contact
)
{
...
...
test/room.spec.js
浏览文件 @
12a81eb8
...
...
@@ -13,61 +13,106 @@ import {
Config
.
puppetInstance
(
new
PuppetWeb
())
// Room.attach(new PuppetWeb())
test
(
'
Room smoke testing
'
,
async
t
=>
{
// test('Room smoke testing', async t => {
// const UserName = '@0bb3e4dd746fdbd4a80546aef66f4085'
// const NickName = 'Nick Name Test'
// const EncryChatRoomId = '123456abcdef'
// // Mock
// const mockContactGetter = function (id) {
// return new Promise((resolve,reject) => {
// if (id!=UserName) return resolve({});
// setTimeout(() => {
// return resolve({
// UserName: UserName
// , NickName: NickName
// , EncryChatRoomId: EncryChatRoomId
// })
// }, 200)
// })
// }
// const r = new Room(UserName)
// t.is(r.id, UserName, 'id/UserName right')
// await r.ready(mockContactGetter)
// // .then(r => {
// t.is(r.get('id') , UserName, 'UserName set')
// t.is(r.get('topic') , NickName, 'NickName set')
// t.is(r.get('encryId') , EncryChatRoomId, 'EncryChatRoomId set')
// const s = r.toString()
// t.is(typeof s, 'string', 'toString()')
// // })
// // .catch(e => t.fail('ready() rejected: ' + e))
// // .then(_ => t.end()) // test end
// })
test
(
'
Room smoking test
'
,
async
t
=>
{
const
RAW_OBJ
=
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
UserName
=
'
@0bb3e4dd746fdbd4a80546aef66f4085
'
const
NickName
=
'
Nick Name Test
'
const
EncryChatRoomId
=
'
123456abcdef
'
const
EXPECTED
=
{
id
:
'
@@e2355db381dc46a77c0b95516d05e7486135cb6370d8a6af66925d89d50ec278
'
,
topic
:
'
(通知)中国青年天使会官方家
'
,
encryId
:
'
@4b8baa99bdfc354443711412126d2aaf
'
,
memberId1
:
'
@ad85207730aa94e006ddce28f74e6878
'
,
memberNick1
:
'
田美坤
'
,
memberId2
:
'
@72c4767ce32db488871fdd1c27173b81
'
,
memberNick2
:
'
李竹~英诺天使(此号已满)
'
,
ownerId
:
'
@33cc239d22b20d56395bbbd0967b28b9
'
}
// Mock
const
mockContactGetter
=
function
(
id
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
if
(
id
!=
UserName
)
return
resolve
({});
if
(
id
!=
EXPECTED
.
id
)
return
resolve
({});
setTimeout
(()
=>
{
return
resolve
({
UserName
:
UserName
,
NickName
:
NickName
,
EncryChatRoomId
:
EncryChatRoomId
})
},
200
)
return
resolve
(
RAW_OBJ
)
},
10
)
})
}
const
r
=
new
Room
(
UserName
)
const
r
=
new
Room
(
EXPECTED
.
id
)
t
.
is
(
r
.
id
,
UserName
,
'
id/UserName right
'
)
t
.
is
(
r
.
id
,
EXPECTED
.
id
,
'
should set
id/UserName right
'
)
await
r
.
ready
(
mockContactGetter
)
// .then(r => {
t
.
is
(
r
.
get
(
'
id
'
)
,
UserName
,
'
UserName set
'
)
t
.
is
(
r
.
get
(
'
topic
'
)
,
NickName
,
'
NickName set
'
)
t
.
is
(
r
.
get
(
'
encryId
'
)
,
EncryChatRoomId
,
'
EncryChatRoomId set
'
)
t
.
is
(
r
.
get
(
'
id
'
)
,
EXPECTED
.
id
,
'
should set id/UserName
'
)
t
.
is
(
r
.
get
(
'
encryId
'
)
,
EXPECTED
.
encryId
,
'
should set EncryChatRoomId
'
)
const
s
=
r
.
toString
()
t
.
is
(
typeof
s
,
'
string
'
,
'
toString()
'
)
// })
// .catch(e => t.fail('ready() rejected: ' + e))
// .then(_ => t.end()) // test end
})
/*
const rawData = JSON.parse('{"MsgId":"1120003476579027592","FromUserName":"@@4aa0ae1e1ebc568b613fa43ce93b478df0339f73340d87083822c2016d2e53d9","ToUserName":"@94e4b0db79ccc844d7bb4a2b1efac3ff","MsgType":1,"Content":"@9ad4ba13fac52c55d323521b67f7cc39:<br/>[Strong]","Status":3,"ImgStatus":1,"CreateTime":1462889712,"VoiceLength":0,"PlayLength":0,"FileName":"","FileSize":"","MediaId":"","Url":"","AppMsgType":0,"StatusNotifyCode":0,"StatusNotifyUserName":"","RecommendInfo":{"UserName":"","NickName":"","QQNum":0,"Province":"","City":"","Content":"","Signature":"","Alias":"","Scene":0,"VerifyFlag":0,"AttrStatus":0,"Sex":0,"Ticket":"","OpCode":0},"ForwardFlag":0,"AppInfo":{"AppID":"","Type":0},"HasProductId":0,"Ticket":"","ImgHeight":0,"ImgWidth":0,"SubMsgType":0,"NewMsgId":1120003476579027600,"MMPeerUserName":"@@4aa0ae1e1ebc568b613fa43ce93b478df0339f73340d87083822c2016d2e53d9","MMDigest":"感恩的心 ","MMIsSend":false,"MMIsChatRoom":true,"MMUnread":false,"LocalID":"1120003476579027592","ClientMsgId":"1120003476579027592","MMActualContent":"HTML-CODE","MMActualSender":"@9ad4ba13fac52c55d323521b67f7cc39","MMDigestTime":"22:15","MMDisplayTime":1462889712,"MMTime":"22:15","_h":126,"_index":0,"_offsetTop":0,"$$hashKey":"0QK", "MemberList": [{"Uin":0,"UserName":"@94e4b0db79ccc844d7bb4a2b1efac3ff","NickName":"李卓桓","AttrStatus":37996631,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"北京阿布","KeyWord":"liz"},{"Uin":0,"UserName":"@34887973779b7dd827366a31772cd83df223e6f71d9a79e44fe619aafe2901a4","NickName":"Tiger","AttrStatus":4292711,"PYInitial":"","PYQuanPin":"","RemarkPYInitial":"","RemarkPYQuanPin":"","MemberStatus":0,"DisplayName":"DisplayNameTiger","KeyWord":"","HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=0&username=@34887973779b7dd827366a31772cd83df223e6f71d9a79e44fe619aafe2901a4&skey=@crypt_f9cec94b_8517b7f9fec85f5a78a804c4f45f5536&chatroomid=@7b3dcd218431d79045cda3493c3179ae"}]}')
t
.
is
(
r
.
topic
()
,
EXPECTED
.
topic
,
'
should set topic/NickName
'
)
const EXPECTED = {
id: '1120003476579027592'
, from: '@0bb3e4dd746fdbd4a80546aef66f4085'
}
const g = new Room(rawData)
const
contact1
=
new
Contact
(
EXPECTED
.
memberId1
)
const
nick1
=
r
.
nick
(
contact1
)
t
.
is
(
nick1
,
EXPECTED
.
memberNick1
,
'
should get nick1 from DisplayName
'
)
t.is(g.id , EXPECTED.id , 'id right')
t.is(g.from.id , EXPECTED.from , 'from right')
const
contact2
=
new
Contact
(
EXPECTED
.
memberId2
)
const
nick2
=
r
.
nick
(
contact2
)
t
.
is
(
nick2
,
EXPECTED
.
memberNick2
,
'
should get nick2 from NickName because there is no DisplayName,
'
)
const s = g.toString()
t.is(typeof s, 'string', 'toString()')
t
.
truthy
(
r
.
has
(
contact1
),
'
should has contact1
'
)
t
.
falsy
(
r
.
has
(
new
Contact
(
'
not exist id
'
),
'
should has no this member
'
))
const
owner
=
r
.
owner
()
t
.
true
(
owner
===
null
||
owner
instanceof
Contact
,
'
should get Contact instance for owner, or null
'
)
// wxApp hide uin for all contacts.
// t.is(r.owner().id, EXPECTED.ownerId, 'should get owner right by OwnerUin & Uin')
t.end()
const
contactA
=
r
.
member
(
EXPECTED
.
memberNick1
)
const
contactB
=
r
.
member
(
EXPECTED
.
memberNick2
)
t
.
is
(
contactA
.
id
,
EXPECTED
.
memberId1
,
'
should get the right id from nick 1
'
)
t
.
is
(
contactB
.
id
,
EXPECTED
.
memberId2
,
'
should get the right id from nick 2
'
)
const
s
=
r
.
toString
()
t
.
is
(
typeof
s
,
'
string
'
,
'
toString()
'
)
})
*/
test
(
'
Room static method
'
,
async
t
=>
{
const
room
=
await
Room
.
find
({
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录