UNPKG

help-fem

Version:

A Browserify/Node.js client module for the Help.com team's FEM.

132 lines (120 loc) 2.89 kB
'use strict'; var test = require('tap').test; var server = require('../fixtures/server'); var HelpFem = require('../../'); var uuid = require('uuid'); var seventNames = require('../fixtures/server-session-events'); var ceventNames = require('../fixtures/server-chat-events'); var ssevents = [ 'login', 'dumpState', 'chat status', 'customer sonar pong', 'user sonar pong', 'transfer request', 'transfer response', 'notification', 'mission control get version result', 'update organization settings result' ]; var scevents = [ 'join', 'leave', 'message' ]; var events = { open: 'open', close: 'close', 'server session event': { start: 'start', logout: 'logout', end: 'end', login: 'login' }, 'server chat event': { start: 'chatStart' } }; function getEvents(evs) { return evs.reduce(function(set, e) { set[e] = e.replace(/ /g, ''); return set; }, {}); } test('help-fem', function(t) { t.plan(7 + seventNames.length + ceventNames.length); var client; if (server.isListening) { createClient(); } else { server.once('listening', createClient); } function createClient() { var Client = HelpFem.Client.extend({ events: events, open: function() { t.ok('got open event', 'got open event'); testSession(function() { testChat(function() { client.socket.close(); }); }); }, close: function() { t.ok('got close event', 'got close event'); server.close(); }, start: function() { t.ok('got start event', 'got start event'); }, logout: function() { t.ok('got logout event', 'got logout event'); }, end: function() { t.ok('got end event', 'got end event'); }, login: function() { t.ok('got login event', 'got login event'); }, chatStart: function() { t.ok('got chat start event', 'got chat start event'); } }); client = new Client({ uri: 'http://127.0.0.1:8000', organizationId: 'start', context: {} }); } function testSession(cb) { ;(function run() { var name = seventNames.shift(); if (!name) { return cb(); } send('session', name, run); })(); } function testChat(cb) { ;(function run() { var name = ceventNames.shift(); if (!name) { return cb(); } send('chat', name, run); })(); } function send(type, name, cb) { if (name === 'dumpState' || name === 'chatAndAvailabilityDetails') { client[type][name](function(err, res) { t.ok(true, 'got ' + type + ':' + name + 'response'); cb(); }); } else { client[type][name]({}, function(err, res) { t.ok(true, 'got ' + type + ':' + name + 'response'); cb(); }); } } });