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

86 lines
2.7 KiB
JavaScript

var _ = require('underscore');
var Backbone = require('backbone');
var TabsView = require('builder/embed/tabs/tabs-view');
describe('embed/tabs/tabs-view', function () {
var view;
var viewOptions = {
model: new Backbone.Model(),
tabs: [
{ name: 'map', isSelected: true },
{ name: 'legends' }
]
};
var createViewFn = function (options) {
return new TabsView(_.extend({}, viewOptions, options));
};
afterEach(function () {
view.clean();
});
describe('.render', function () {
it('should render properly when there is no title in tabs', function () {
view = createViewFn();
view.render();
expect(view.$('.js-tabs-container').length).toBe(1);
expect(view.$('.js-tab').length).toBe(2);
var tabsMarkup = view.$('.js-tabs-container').html();
expect(tabsMarkup).toContain('data-tab="' + viewOptions.tabs[0].name);
expect(tabsMarkup).toContain(viewOptions.tabs[0].name + '</button>');
expect(tabsMarkup).toContain('data-tab="' + viewOptions.tabs[1].name);
expect(tabsMarkup).toContain(viewOptions.tabs[1].name + '</button>');
expect(view.$('.js-tab.is-selected[data-tab="' + viewOptions.tabs[0].name + '"]').length).toBe(1);
});
it('should render properly when there is title in tabs', function () {
var options = {
tabs: [
{ name: 'map', title: 'mapTitle', isSelected: true },
{ name: 'legends', title: 'layers' }
]
};
view = createViewFn(options);
view.render();
expect(view.$('.js-tabs-container').length).toBe(1);
expect(view.$('.js-tab').length).toBe(2);
var tabsMarkup = view.$('.js-tabs-container').html();
expect(tabsMarkup).toContain('data-tab="' + options.tabs[0].name);
expect(tabsMarkup).toContain(options.tabs[0].title + '</button>');
expect(tabsMarkup).toContain('data-tab="' + options.tabs[1].name);
expect(tabsMarkup).toContain(options.tabs[1].title + '</button>');
});
});
describe('.initBinds', function () {
beforeEach(function () {
spyOn(TabsView.prototype, '_onSelectedTabChanged');
view = createViewFn();
});
it('should call _onSelectedTabChanged when selected tab changes', function () {
view.model.set({ selected: 'legends' });
expect(view._onSelectedTabChanged).toHaveBeenCalled();
});
});
describe('._onTabClicked', function () {
beforeEach(function () {
view = createViewFn();
view.render();
});
it('should call _onSelectedTabChanged when selected tab changes', function () {
var legendsTab = view.$('.js-tab[data-tab="legends"]');
legendsTab.click();
expect(view.model.get('selected')).toBe('legends');
});
});
});