95 lines
2.8 KiB
JavaScript
95 lines
2.8 KiB
JavaScript
'use strict'
|
|
/* global
|
|
* describe, it, beforeEach, afterEach, expect, spyOn, runs,
|
|
* loadFixtures, Waypoint
|
|
*/
|
|
|
|
window.jQuery.each(Waypoint.adapters, function(i, adapter) {
|
|
describe(adapter.name + ' adapter:', function() {
|
|
describe('Waypoint.Context', function() {
|
|
var $ = window.jQuery
|
|
var currentDirection, $scroller, waypoint, $target, context, skipDestroy
|
|
|
|
function setDirection(direction) {
|
|
currentDirection = direction
|
|
}
|
|
|
|
beforeEach(function() {
|
|
Waypoint.Adapter = adapter.Adapter
|
|
loadFixtures('standard.html')
|
|
$scroller = $(window)
|
|
currentDirection = null
|
|
skipDestroy = false
|
|
$target = $('#same1')
|
|
waypoint = new Waypoint({
|
|
element: $target[0],
|
|
handler: setDirection
|
|
})
|
|
context = waypoint.context
|
|
})
|
|
|
|
afterEach(function() {
|
|
if (!skipDestroy) {
|
|
waypoint.destroy()
|
|
}
|
|
$scroller.scrollTop(0).scrollLeft(0)
|
|
})
|
|
|
|
describe('#refresh', function() {
|
|
it('updates trigger point of waypoints', function() {
|
|
var top = $target.offset().top
|
|
$target.css({
|
|
top: top + 1
|
|
})
|
|
context.refresh()
|
|
expect(waypoint.triggerPoint).toEqual(top + 1)
|
|
})
|
|
|
|
it('triggers down direction if waypoint crosses upwards', function() {
|
|
$target.css('top', '-1px')
|
|
context.refresh()
|
|
expect(currentDirection).toEqual('down')
|
|
})
|
|
|
|
it('triggers up direction if waypoint crosses downwards', function() {
|
|
$target.css('top', '-1px')
|
|
context.refresh()
|
|
$target.css('top', '0px')
|
|
context.refresh()
|
|
expect(currentDirection).toEqual('up')
|
|
})
|
|
|
|
it('returns the same context instance for chaining', function() {
|
|
expect(context.refresh()).toEqual(context)
|
|
})
|
|
})
|
|
|
|
describe('#destroy', function() {
|
|
it('prevents further waypoint triggers', function() {
|
|
skipDestroy = true
|
|
context.destroy()
|
|
$scroller.scrollTop($target.offset().top)
|
|
expect(currentDirection).toBeNull()
|
|
})
|
|
})
|
|
|
|
describe('Waypoint.Context.refreshAll()', function() {
|
|
it('calls refresh on all contexts', function() {
|
|
var secondWaypoint = new Waypoint({
|
|
element: $('#inner3')[0],
|
|
context: $('#bottom')[0],
|
|
handler: function() {}
|
|
})
|
|
var secondContext = secondWaypoint.context
|
|
spyOn(context, 'refresh')
|
|
spyOn(secondContext, 'refresh')
|
|
Waypoint.Context.refreshAll()
|
|
expect(context.refresh).toHaveBeenCalled()
|
|
expect(secondContext.refresh).toHaveBeenCalled()
|
|
secondWaypoint.destroy()
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|