2
0
mirror of https://github.com/tenrok/vue-native-websocket.git synced 2026-06-05 23:52:25 +03:00
Files
vue-native-websocket/test/unit/specs/Observer.spec.js
T
Nathan 46e251dcbc Api updates (#7)
* move all instantiation options into the opts hash

* 2.0.0
2017-07-07 09:47:01 -07:00

80 lines
2.1 KiB
JavaScript

import Vue from 'vue'
import Emitter from '@/Emitter'
import Observer from '@/Observer'
import { Server, WebSocket } from 'mock-socket'
describe ("Observer.js", () => {
let observer, mockServer
let wsUrl = 'ws://localhost:8080'
it ('fires onopen event', (done) => {
mockServer = new Server(wsUrl)
mockServer.on('connection', ws => {
ws.send('hi')
})
Vue.use(VueNativeSock, wsUrl)
let vm = new Vue()
observer = new Observer(wsUrl)
Emitter.addListener('onopen', (data) => {
expect(data.type).to.equal('open')
mockServer.stop(done)
}, vm)
})
// TODO: DRY
it ('passes a json event to the provided vuex store', (done) => {
let expectedMsg = { mutation: 'setName', value: 'steve' }
let mockStore = sinon.mock({ commit: () => {} })
mockStore.expects('commit').withArgs('SOCKET_ONOPEN')
mockStore.expects('commit').withArgs(expectedMsg.mutation)
mockServer = new Server(wsUrl)
mockServer.on('connection', ws => {
ws.send(JSON.stringify(expectedMsg))
})
Vue.use(VueNativeSock, wsUrl)
let vm = new Vue()
observer = new Observer(wsUrl, {
store: mockStore.object,
format: 'json',
websocket: new WebSocket(wsUrl)
})
setTimeout(() => {
mockStore.verify()
mockServer.stop(done)
}, 100)
})
// TODO: DRY
it ('passes a namespaced json event to the provided vuex store', (done) => {
let expectedMsg = { namespace: 'users', mutation: 'setName', value: 'steve' }
let mockStore = sinon.mock({ commit: () => {} })
mockStore.expects('commit').withArgs('SOCKET_ONOPEN')
mockStore.expects('commit').withArgs(expectedMsg.namespace + '/' + expectedMsg.mutation)
mockServer = new Server(wsUrl)
mockServer.on('connection', ws => {
ws.send(JSON.stringify(expectedMsg))
})
Vue.use(VueNativeSock, wsUrl)
let vm = new Vue()
observer = new Observer(wsUrl, {
store: mockStore.object,
format: 'json',
websocket: new WebSocket(wsUrl)
})
setTimeout(() => {
mockStore.verify()
mockServer.stop(done)
}, 100)
})
})