78 lines
3.5 KiB
JavaScript
78 lines
3.5 KiB
JavaScript
define(['jquery', 'js/utils/navigation'], function($) {
|
|
'use strict';
|
|
|
|
describe('Course Navigation Accordion', function() {
|
|
var $accordion, chapterMenu;
|
|
|
|
function keyPressEvent(key) {
|
|
return $.Event('keydown', {which: key});
|
|
}
|
|
|
|
beforeEach(function() {
|
|
loadFixtures('js/fixtures/accordion.html');
|
|
|
|
$accordion = $('.accordion');
|
|
chapterMenu = $accordion.children('.chapter-content-container').children('.chapter-menu');
|
|
|
|
this.KEY = $.ui.keyCode;
|
|
spyOn($.fn, 'focus').and.callThrough();
|
|
edx.util.navigation.init();
|
|
});
|
|
|
|
describe('constructor', function() {
|
|
describe('always', function() {
|
|
it('ensures accordion is present', function() {
|
|
expect($accordion.length).toBe(1);
|
|
});
|
|
|
|
it('ensures aria attributes are present', function() {
|
|
expect($accordion.find('.button-chapter').first()).toHaveAttr('aria-expanded', 'true');
|
|
expect($accordion.find('.button-chapter').last()).toHaveAttr('aria-expanded', 'false');
|
|
});
|
|
|
|
it('ensures only one active item', function() {
|
|
expect($(chapterMenu).find('.active').length).toBe(1);
|
|
});
|
|
});
|
|
|
|
describe('open section with mouse click', function() {
|
|
it('ensures new section is opened and previous section is closed', function() {
|
|
$accordion.find('.button-chapter').last().trigger('click');
|
|
|
|
expect($accordion.find('.chapter-content-container').first()).not.toHaveClass('is-open');
|
|
expect($accordion.find('.chapter-content-container').last()).toHaveClass('is-open');
|
|
|
|
expect($accordion.find('.button-chapter').first()).not.toHaveClass('is-open');
|
|
expect($accordion.find('.button-chapter').last()).toHaveClass('is-open');
|
|
});
|
|
|
|
it('ensure proper aria and attrs', function() {
|
|
$accordion.find('.button-chapter').last().trigger('click');
|
|
|
|
expect($accordion.find('.button-chapter').first()).toHaveAttr('aria-expanded', 'false');
|
|
expect($accordion.find('.button-chapter').last()).toHaveAttr('aria-expanded', 'true');
|
|
});
|
|
});
|
|
|
|
describe('open section with spacebar', function() {
|
|
it('ensures new section is opened and previous section is closed', function() {
|
|
$accordion.find('.button-chapter').last().focus().trigger(keyPressEvent(this.KEY.SPACE));
|
|
|
|
expect($accordion.find('.chapter-content-container').first()).not.toHaveClass('is-open');
|
|
expect($accordion.find('.chapter-content-container').last()).toHaveClass('is-open');
|
|
|
|
expect($accordion.find('.button-chapter').first()).not.toHaveClass('is-open');
|
|
expect($accordion.find('.button-chapter').last()).toHaveClass('is-open');
|
|
});
|
|
|
|
it('ensure proper aria and attrs', function() {
|
|
$accordion.find('.button-chapter').last().focus().trigger(keyPressEvent(this.KEY.SPACE));
|
|
|
|
expect($accordion.find('.button-chapter').first()).toHaveAttr('aria-expanded', 'false');
|
|
expect($accordion.find('.button-chapter').last()).toHaveAttr('aria-expanded', 'true');
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|