Files
cartodb/lib/assets/test/spec/builder/components/custom-carousel/custom-carousel-view.spec.js
2020-06-15 10:58:47 +08:00

77 lines
2.2 KiB
JavaScript

var CustomCarouselView = require('builder/components/custom-carousel/custom-carousel-view');
describe('components/custom-carousel/custom-carousel-view', function () {
beforeEach(function () {
this.view = new CustomCarouselView({
options: [
{ val: 'hello', selected: true },
{ val: 'howdy' },
{ val: 'hi' }
]
});
spyOn(this.view, '_bindScroll');
spyOn(this.view, '_checkShadows');
spyOn(this.view, '_checkScroll');
jasmine.clock().install();
this.view.render();
this.view.initScroll();
jasmine.clock().tick(100);
});
it('should allow to add a className for every list item', function () {
var view = new CustomCarouselView({
options: [
{ val: 'hello', selected: true },
{ val: 'howdy' },
{ val: 'hi' }
],
listItemOptions: {
className: 'MyFabolousClassName'
}
});
view.render();
expect(view.$('li').hasClass('MyFabolousClassName')).toBeTruthy();
view.clean();
});
it('should render properly', function () {
expect(this.view.$('li').length).toBe(3);
expect(this.view.$('.Carousel-shadow').length).toBe(2);
});
it('should bind scroll', function () {
expect(this.view._bindScroll).toHaveBeenCalled();
});
it('should check shadows', function () {
expect(this.view._checkShadows).toHaveBeenCalled();
});
afterEach(function () {
jasmine.clock().uninstall();
});
describe('bind', function () {
it('should check scroll when selected item changes', function () {
this.view.collection.at(1).set('selected', true);
expect(this.view._checkScroll).toHaveBeenCalled();
});
});
describe('unbind', function () {
it('should not check shadows after unbind', function () {
this.view._checkShadows.calls.reset();
this.view._unbindScroll();
this.view._listContainer().trigger('ps-scroll-x');
expect(this.view._checkShadows).not.toHaveBeenCalled();
});
});
it('should destroy custom scroll when view is removed', function () {
spyOn(this.view, '_destroyCustomScroll');
this.view.clean();
expect(this.view._destroyCustomScroll).toHaveBeenCalled();
});
});