node-red-contrib-wechat4u
Version:
[Node-RED](https://nodered.org/) plugin for wechat personal.
162 lines (131 loc) • 4.53 kB
JavaScript
/* eslint-env node, mocha */
import {expect} from 'chai'
import * as util from '../src/util'
import MessageFactory from '../src/interface/message'
import ContactFactory, * as contactMethod from '../src/interface/contact'
describe('Util', () => {
it('is not browser', () => {
expect(util.isStandardBrowserEnv).to.equal(false)
})
it('is function', () => {
expect(util.isFunction(() => {})).to.equal(true)
expect(util.isFunction(null)).to.equal(false)
})
it('convert emoji method', () => {
expect(util.convertEmoji('<span class="emoji emoji(0000)"></span>').charCodeAt()).to.equal(42)
expect(util.convertEmoji('')).to.equal('')
expect(util.convertEmoji(undefined)).to.equal('')
})
it('format num', () => {
expect(util.formatNum(0, 2)).to.equal('00')
expect(util.formatNum(2, 2)).to.equal('02')
expect(util.formatNum(20, 2)).to.equal('20')
})
})
describe('Message interface', () => {
describe('Message: ', () => {
let immutNewMessage1 = {
FromUserName: 'test',
Content: '<a><br/>bc'
}
let immutNewMessage2 = {
FromUserName: '123',
Content: '<a><br/>bc'
}
let Message
let newMessage1
let newMessage2
beforeEach(() => {
Message = MessageFactory({user: {UserName: 'test'}})
newMessage1 = Message.extend(immutNewMessage1)
newMessage2 = Message.extend(immutNewMessage2)
})
it('property stable', () => {
expect(newMessage1.FromUserName).to.equal('test')
})
it('content parse', () => {
expect(newMessage1.Content).to.equal('<a>\nbc')
})
it('isSendBySelf', () => {
expect(newMessage1.isSendBySelf).to.equal(true)
expect(newMessage2.isSendBySelf).to.equal(false)
})
it('isSendBy', () => {
expect(newMessage2.isSendBy({UserName: '123'})).to.equal(true)
expect(newMessage2.isSendBy({UserName: 'test'})).to.equal(false)
})
})
})
describe('Contact interface: ', () => {
describe('method: ', () => {
it('get user by UserName', () => {
let user = {UserName: 'test'}
let list = [user]
expect(contactMethod.getUserByUserName(list, 'test')).to.equal(user)
})
it('is room contact', () => {
expect(contactMethod.isRoomContact({UserName: '@@123'})).to.equal(true)
expect(contactMethod.isRoomContact({UserName: '123'})).to.equal(false)
})
})
describe('Contact: ', () => {
let immutUser1 = {
UserName: 'test',
NickName: 'test',
HeadImgUrl: '/test'
}
let immutUser2 = {
UserName: '@@test',
NickName: 'test',
HeadImgUrl: '/test'
}
let immutInstance = {
user: immutUser1,
baseUri: 'https://wx2.qq.com/',
contacts: {}
}
let Contact
let instance
beforeEach(() => {
instance = Object.assign({}, immutInstance)
Contact = ContactFactory(instance)
instance.contacts[immutUser1.UserName] = Contact.extend(immutUser1)
instance.contacts[immutUser2.UserName] = Contact.extend(immutUser2)
})
it('property stable', () => {
const user1 = instance.contacts[immutUser1.UserName]
expect(user1.NickName).to.equal('test')
})
it('getDisplayName', () => {
const user1 = instance.contacts[immutUser1.UserName]
expect(user1.getDisplayName()).to.equal('test')
})
it('can search', () => {
const user1 = instance.contacts[immutUser1.UserName]
const user2 = instance.contacts[immutUser2.UserName]
expect(user1.canSearch('te')).to.equal(true)
expect(user2.canSearch('123')).to.equal(false)
})
it('isSelf', () => {
const user1 = instance.contacts[immutUser1.UserName]
const user2 = instance.contacts[immutUser2.UserName]
expect(user1.isSelf).to.equal(true)
expect(user2.isSelf).to.equal(false)
})
it('get user by username', () => {
const user1 = instance.contacts[immutUser1.UserName]
expect(Contact.getUserByUserName('test')).to.equal(user1)
})
it('get search user', () => {
const user1 = instance.contacts[immutUser1.UserName]
expect(Contact.getSearchUser('te')[0]).to.equal(user1)
expect(Contact.getSearchUser('123').length).to.equal(0)
})
it('isRoomContact', () => {
const user1 = instance.contacts[immutUser1.UserName]
const user2 = instance.contacts[immutUser2.UserName]
expect(Contact.isRoomContact(user2)).to.equal(true)
expect(Contact.isRoomContact(user1)).to.equal(false)
})
})
})