define([ 'jquery', 'common/js/spec_helpers/template_helpers', 'js/discovery/models/facet_option', 'js/discovery/views/refine_sidebar' ], function($, TemplateHelpers, FacetOption, RefineSidebar) { 'use strict'; var MEANINGS = { org: { name: 'Organization', terms: { edX1: 'edX_1' } }, modes: { name: 'Course Type', terms: { honor: 'Honor', verified: 'Verified' } }, language: { terms: { en: 'English', hr: 'Croatian' } } }; describe('discovery.views.RefineSidebar', function() { beforeEach(function() { loadFixtures('js/fixtures/discovery.html'); TemplateHelpers.installTemplates([ 'templates/discovery/facet', 'templates/discovery/facet_option' ]); this.facetOptions = new Backbone.Collection([], {model: FacetOption}); this.facetOptions.add([ {facet: 'language', term: 'es', count: 12}, {facet: 'language', term: 'en', count: 10}, {facet: 'modes', term: 'honor', count: 2, selected: true} ]); this.sidebar = new RefineSidebar({collection: this.facetOptions, meanings: MEANINGS}); this.sidebar.render(); }); it('styles active filter', function() { expect(this.sidebar.$el.find('button.selected')).toHaveData('facet', 'modes'); }); it('styles active filter', function() { this.onSelect = jasmine.createSpy('onSelect'); this.sidebar.on('selectOption', this.onSelect); this.sidebar.$el.find('button[data-value="en"]').click(); expect(this.onSelect).toHaveBeenCalledWith('language', 'en', 'English'); }); it('expands and collapses facet', function() { var options = _.range(20).map(function(number) { return {facet: 'org', term: 'test' + number, count: 1}; }); this.facetOptions.reset(options); this.sidebar.render(); this.sidebar.$el.find('.show-more').click(); expect(this.sidebar.$el.find('ul.facet-list')).not.toHaveClass('collapse'); expect(this.sidebar.$el.find('.show-more')).toHaveClass('hidden'); this.sidebar.$el.find('.show-less').click(); expect(this.sidebar.$el.find('ul.facet-list')).toHaveClass('collapse'); expect(this.sidebar.$el.find('.show-less')).toHaveClass('hidden'); }); }); });