burger
Version:
A lightweight turbolinks friendly JavaScript library
66 lines (48 loc) • 1.28 kB
text/coffeescript
jest
.dontMock('../mixins/delegate')
.dontMock('../mixins/events')
.dontMock('../util/mixin')
Events = require('../mixins/events')
$ = require('jquery')
describe 'Events', ->
class Stub extends Events
constructor: (el) ->
@element = $(el)
childEl = $('<div></div>')
wrapperEl = $('<div></div>')
wrapperEl.append(childEl)
child = new Stub(childEl)
wrapper = new Stub(wrapperEl)
it 'listens to events on itself and its children', ->
count = 0
inc = -> count++
wrapper.on('inc', inc)
wrapper.emit('inc')
child.emit('inc')
child.emit('inc')
expect(count).toEqual(3)
wrapper.off('inc', inc)
it 'also listens to events from its parent', ->
count = 0
inc = -> count++
child.on('inc', inc)
wrapper.emit('inc')
expect(count).toEqual(1)
wrapper.off('inc', inc)
it 'can listen to single events', ->
count = 0
inc = -> count++
wrapper.once('inc', inc)
child.emit('inc')
child.emit('inc')
expect(count).toEqual(1)
wrapper.off('inc', inc)
it 'can turn off elements', ->
count = 0
inc = -> count++
wrapper.on('inc', inc)
child.emit('inc')
wrapper.off('inc', inc)
child.emit('inc')
child.emit('inc')
expect(count).toEqual(1)