Add tests for a more complex html structure, adjust core
This commit is contained in:
parent
6564581c5d
commit
f93b481263
5 changed files with 334 additions and 236 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,4 +1,3 @@
|
|||
.DS_Store
|
||||
test/spec-1-api.js
|
||||
test/spec-2-shell.js
|
||||
test/spec-3-tests.js
|
||||
.sass-cache/
|
||||
progress/
|
|
@ -69,18 +69,44 @@
|
|||
function updateStates() {
|
||||
var oc = options.classes,
|
||||
$container = $(options.selectors.container),
|
||||
old = $container.data('onSlide');
|
||||
old = $container.data('onSlide'),
|
||||
$all = $();
|
||||
|
||||
// Container state
|
||||
$container.removeClass(oc.onPrefix + old)
|
||||
.addClass(oc.onPrefix + current)
|
||||
.data('onSlide', current);
|
||||
$.each(slides, function(i, $e) {
|
||||
$e.toggleClass(oc.before, i < current - 1)
|
||||
.toggleClass(oc.previous, i === current - 1)
|
||||
.toggleClass(oc.current, i === current)
|
||||
.toggleClass(oc.next, i === current + 1)
|
||||
.toggleClass(oc.after, i > current + 1);
|
||||
|
||||
// Remove previous states
|
||||
$.each(slides, function(i, el) {
|
||||
$all = $all.add(el);
|
||||
});
|
||||
$all.removeClass([
|
||||
oc.before,
|
||||
oc.previous,
|
||||
oc.current,
|
||||
oc.next,
|
||||
oc.after
|
||||
].join(" "));
|
||||
|
||||
// Add new states back in
|
||||
slides[current].addClass(oc.current);
|
||||
if (current > 0) {
|
||||
slides[current-1].addClass(oc.previous);
|
||||
}
|
||||
if (current + 1 < slides.length) {
|
||||
slides[current+1].addClass(oc.next);
|
||||
}
|
||||
if (current > 1) {
|
||||
$.each(slides.slice(0, current - 1), function(i, el) {
|
||||
el.addClass(oc.before);
|
||||
});
|
||||
}
|
||||
if (current + 2 < slides.length) {
|
||||
$.each(slides.slice(current+2), function(i, el) {
|
||||
el.addClass(oc.after);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
$[pd] = function(method, arg) {
|
||||
|
|
12
test/fixtures/complex.html
vendored
Normal file
12
test/fixtures/complex.html
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
<div class="pitchdeck-container">
|
||||
<div class="slide1"></div>
|
||||
|
||||
<div class="slide2 slide3 slide4">
|
||||
<div class="slide2 slide10"></div>
|
||||
<div class="slide3 slide4"></div>
|
||||
</div>
|
||||
|
||||
<div class="slide3 slide5"></div>
|
||||
|
||||
<div class="slide6 slide7 slide8 slide9 slide10">
|
||||
</div>
|
|
@ -6,7 +6,7 @@
|
|||
<link rel="stylesheet" type="text/css" href="lib/jasmine.css">
|
||||
<script type="text/javascript" src="lib/jasmine.js"></script>
|
||||
<script type="text/javascript" src="lib/jasmine-html.js"></script>
|
||||
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.5.2.min.js"></script>
|
||||
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.6.1.min.js"></script>
|
||||
<script type="text/javascript" src="lib/jasmine-jquery.js"></script>
|
||||
|
||||
<!-- include source files here... -->
|
||||
|
|
|
@ -4,6 +4,7 @@ var defaults = $.pitchdeck.defaults;
|
|||
|
||||
// Go tests, go
|
||||
describe('PitchDeck', function() {
|
||||
describe('standard html structure', function() {
|
||||
beforeEach(function() {
|
||||
loadFixtures('standard.html');
|
||||
});
|
||||
|
@ -244,7 +245,67 @@ describe('PitchDeck', function() {
|
|||
expect(to).toEqual(3);
|
||||
});
|
||||
$.pitchdeck('go', 3);
|
||||
$d.unbind('pitchdeck.change');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('complex html structure', function() {
|
||||
beforeEach(function() {
|
||||
loadFixtures('complex.html');
|
||||
$.pitchdeck([
|
||||
'.slide1',
|
||||
'.slide2',
|
||||
'.slide3',
|
||||
'.slide4',
|
||||
'.slide5',
|
||||
'.slide6',
|
||||
'.slide7',
|
||||
'.slide8',
|
||||
'.slide9',
|
||||
'.slide10',
|
||||
]);
|
||||
$.pitchdeck('go', 2);
|
||||
});
|
||||
|
||||
describe('compound state classes', function() {
|
||||
it('should apply current class', function() {
|
||||
$('.slide3').each(function(i, el) {
|
||||
expect($(el)).toHaveClass(defaults.classes.current);
|
||||
});
|
||||
});
|
||||
|
||||
it('should apply previous class', function() {
|
||||
$('.slide2').each(function(i, el) {
|
||||
expect($(el)).toHaveClass(defaults.classes.previous);
|
||||
});
|
||||
});
|
||||
|
||||
it('should apply next class', function() {
|
||||
$('.slide4').each(function(i, el) {
|
||||
expect($(el)).toHaveClass(defaults.classes.next);
|
||||
});
|
||||
});
|
||||
|
||||
it('should apply before class', function() {
|
||||
$('.slide1').each(function(i, el) {
|
||||
expect($(el)).toHaveClass(defaults.classes.before);
|
||||
});
|
||||
});
|
||||
|
||||
it('should apply after class', function() {
|
||||
$('.slide5, .slide6, .slide7, .slide8, .slide9, .slide10').each(function(i, el) {
|
||||
expect($(el)).toHaveClass(defaults.classes.after);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should remove old state classes', function() {
|
||||
$.pitchdeck('go', 4);
|
||||
expect($('.slide3').not('.slide5')).not.toHaveClass(defaults.classes.current);
|
||||
expect($('.slide2').not('.slide4')).not.toHaveClass(defaults.classes.previous);
|
||||
expect($('.slide4').not('.slide6')).not.toHaveClass(defaults.classes.next);
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue