site_marriage/node_modules/waypoints/test/infinite-spec.js

75 lines
2.1 KiB
JavaScript

'use strict'
/* global
* describe, it, beforeEach, afterEach, expect, spyOn, runs,
* waitsFor, loadFixtures, Waypoint, jasmine
*/
describe('Waypoint Sticky Shortcut', function() {
var $ = window.jQuery
var $scroller = $(window)
var $container, $items, $more, waypoint, beforeSpy, afterSpy
beforeEach(function() {
loadFixtures('infinite.html')
$items = $('.infinite-item')
$container = $('.infinite-container')
$more = $('.infinite-more-link')
beforeSpy = jasmine.createSpy('on before callback')
afterSpy = jasmine.createSpy('on after callback')
})
afterEach(function() {
waypoint.destroy()
$scroller.scrollTop(0)
})
it('returns an instance of the Waypoint.Infinite class', function() {
waypoint = new Waypoint.Infinite({
element: $container[0]
})
expect(waypoint instanceof Waypoint.Infinite).toBeTruthy()
})
describe('loading new pages', function() {
beforeEach(function() {
runs(function() {
waypoint = new Waypoint.Infinite({
element: $container[0],
onBeforePageLoad: beforeSpy,
onAfterPageLoad: afterSpy
})
$scroller.scrollTop(Waypoint.viewportHeight() - $container.height())
})
waitsFor(function() {
return $('.infinite-container > .infinite-item').length > $items.length
}, 'new items to load')
})
it('replaces the more link with the new more link', function() {
expect($more[0]).not.toEqual($('.infinite-more-link')[0])
})
it('fires the before callback', function() {
expect(beforeSpy.callCount).toBeTruthy()
})
it('fires the after callback', function() {
expect(afterSpy.callCount).toBeTruthy()
expect(afterSpy).toHaveBeenCalledWith(jasmine.any(Object))
})
})
describe('when there is no more link on initialization', function() {
beforeEach(function() {
$more.remove()
waypoint = new Waypoint.Infinite({
element: $container[0]
})
})
it('does not create the waypoint', function() {
expect(waypoint.waypoint).toBeFalsy()
})
})
})