1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
describe "custom callbacks", ->
$inputor = null
$ = jQuery
beforeEach ->
loadFixtures("inputors.html")
afterEach ->
$inputor.atwho 'destroy'
describe "remoteFilter()", ->
it "only renders the view for data from the latest lookup", ->
callbackList = []
remoteFilter = jasmine.createSpy("remoteFilter").and.callFake (_, cb) ->
callbackList.push cb
$inputor = $("#inputor").atwho({
at: "@",
data: [],
callbacks: {
remoteFilter
}
})
$inputor.val('@foo')
app = getAppOf $inputor
controller = app.controller()
spyOn(controller, 'renderView')
simulateTypingIn $inputor
expect(remoteFilter).toHaveBeenCalled()
simulateTypingIn $inputor
expect(callbackList.length).toBeGreaterThan(1)
while callbackList.length > 1
callbackList.shift()(['no renders'])
expect(controller.renderView).not.toHaveBeenCalled()
callbackList.shift()(['render'])
expect(controller.renderView).toHaveBeenCalled()
it "does not attempt to render the view after query has been cleared", ->
remoteFilterCb = null
remoteFilter = jasmine.createSpy("remoteFilter").and.callFake (_, cb) ->
remoteFilterCb = cb
$inputor = $("#inputor").atwho({
at: "@",
data: [],
callbacks: {
remoteFilter
}
})
app = getAppOf $inputor
controller = app.controller()
spyOn controller, 'renderView'
simulateTypingIn $inputor
expect(remoteFilter).toHaveBeenCalled()
$inputor.val ''
simulateTypingIn $inputor
expect(remoteFilter.calls.count()).toEqual(1)
remoteFilterCb ['should not render']
expect(controller.renderView).not.toHaveBeenCalled()
it "does not attempt to render the view after focus has been lost", ->
remoteFilterCb = null
remoteFilter = jasmine.createSpy("remoteFilter").and.callFake (_, cb) ->
remoteFilterCb = cb
$inputor = $("#inputor").atwho({
at: "@",
data: [],
callbacks: {
remoteFilter
}
})
app = getAppOf $inputor
controller = app.controller()
spyOn controller, 'renderView'
simulateTypingIn $inputor
expect(remoteFilter).toHaveBeenCalled()
$inputor.blur();
remoteFilterCb ['should not render']
expect(controller.renderView).not.toHaveBeenCalled()
|