Socket
Socket
Sign inDemoInstall

mock-echo

Package Overview
Dependencies
1
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mock-echo

Mocking framework for Laravel Echo


Version published
Weekly downloads
826
increased by16.17%
Maintainers
1
Install size
1.37 MB
Created
Weekly downloads
 

Readme

Source

mock-echo

Travis npm package

Mocking framework for Laravel Echo

Installation

npm i mock-echo

Usage

Import mock-echo import MockEcho from 'mock-echo'

Replace global object Echo with new MockEcho() before every unit test

let mockEcho

beforeEach(() => {
    mockEcho = new MockEcho()
    global.Echo = mockEcho
})

Remember to delete global object Echo after every unit test

afterEach(() => {
    delete global.Echo
})

Determine whether channel has been listened

You can use channelExist, privateChannelExist or presenceChannelExist to determine whether channel has been listened:

  • channelExist: channel
  • privateChannelExist: private channel
  • presenceChannelExist: presence channel

Example:

expect(mockEcho.channelExist('news')).toBe(true)
expect(mockEcho.privateChannelExist('meeting')).toBe(true)
expect(mockEcho.presenceChannelExist('chat')).toBe(true)

All examples are using expect as assertion library

Get mock channel object

You can use getChannel, getPrivateChannel, getPresenceChannel to get mock channel object

  • getChannel: channel
  • getPrivateChannel: private channel
  • getPresenceChannel: presence channel

Mock channel object has functions eventExist, broadcast, etc.

Example:

expect(mockEcho.getChannel('news').eventExist('NewsMessage')).toBe(true)

Determine whether event has been listened

You can use getChannel(channelName).eventExist, getPrivateChannel(channelName).eventExist or getPresenceChannel(channelName).eventExist to determine whether event has been listened:

  • getChannel(channelName).eventExist: channel
  • getPrivateChannel(channelName).eventExist: private channel
  • getPresenceChannel(channelName).eventExist: presence channel

Example:

expect(mockEcho.getChannel('news').eventExist('NewsMessage')).toBe(true)
expect(mockEcho.getPrivateChannel('meeting').eventExist('MeetingMessage')).toBe(true)
expect(mockEcho.getPresenceChannel('chat').eventExist('ChatMessage')).toBe(true)

Broadcast event

You can use broadcast to broadcast an event.

Note: If you are using vue-test-utils, call $nextTick before assertion.

Example:

mockEcho.getChannel('news').broadcast('NewsMessage', { message: 'Hello World' })
wrapper.vm.$nextTick(() => {
    expect(wrapper.find('.message').text()).toBe('It said Hello World')
    done()
})

Presence channel actions

You can use iJoin, userJoin, userLeave to trigger presence channel actions:

  • iJoin: trigger here listener
  • userJoin: trigger joining listner. It will return subId after calling userJoin. You can use this subId to get this user away from this channel.
  • userLeave: trigger leaving listner. Use subId which got from userJoin to get this user away from this channel.

Note: If you are using vue-test-utils, call $nextTick before assertion.

Example:

mockEcho.getPresenceChannel('chat').iJoin({id: 1, name: 'Alex'})
wrapper.vm.$nextTick(() => {
    expect(wrapper.find('.here-message').text()).toBe('There are 1 users')
    done()
})

// You will need paulSubId to get this user away from this channel
let paulSubId = mockEcho.getPresenceChannel('chat').userJoin({id: 2, name: 'Paul'})
wrapper.vm.$nextTick(() => {
    expect(wrapper.find('.join-message').text()).toBe('Paul joined')
    done()
})

mockEcho.getPresenceChannel('chat').userLeave(paulSubId)
wrapper.vm.$nextTick(() => {
    expect(wrapper.find('.leave-message').text()).toBe('Paul leaved')
    done()
})

Client events

You can use whisper to send user event. Only private channel object and presence channel object have whisper.

Note: If you are using vue-test-utils, call $nextTick before assertion.

Example:

// private channel
mockEcho.getPrivateChannel('meeting').whisper('meetingClicking', { username: username })
wrapper.vm.$nextTick(() => {
    expect(wrapper.find('.whisper-message').text()).toBe(`${username} is clicking the button`)
    done()
})

// presence channel
mockEcho.getPresenceChannel('chat').whisper('chatClicking', { username: username })
wrapper.vm.$nextTick(() => {
    expect(wrapper.find('.whisper-message').text()).toBe(`${username} is clicking the button`)
    done()
})

If you found any bugs

Please create the issue

可以用中文

Keywords

FAQs

Last updated on 22 Oct 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc