define([
    'text!fixtures/bellows.html',
    'text!fixtures/items.html',
    'text!fixtures/item.html',
    '$',
    'velocity',
    'bellows'
], function(fixture, items, item, $) {
    var element;

    describe('Bellows plugin', function() {
        beforeEach(function() {
            element = $(fixture).appendTo('#container');
        });

        afterEach(function() {
            element = null;
        });

        describe('binding to Zepto\'s fn', function() {
            it('defines bellows in Zepto', function() {
                var bellows = $.fn.bellows;

                assert.isDefined(bellows);
            });

            it('defines bellows as a function', function() {
                var bellows = $.fn.bellows;

                assert.isFunction(bellows);
            });
        });

        describe('invoking bellows', function() {
            it('creates bellows instance on element', function() {
                element.bellows();

                assert.isDefined(element.data('bellows'));
            });

            it('stores element inside instance', function() {
                element.bellows();

                assert.isDefined(element.data('bellows').$bellows);
            });

            it('wraps each content section with correct CSS class', function() {
                element.bellows();

                assert.lengthOf(element.find('.bellows__content-wrapper'), 2);
            });
        });

        describe('invoking bellows methods before plugin is initialized', function() {
            it('throws when not initialized', function() {
                assert.throws(function() { element.bellows('open'); });
            });
        });

        describe('invoking bellows methods using the plugin interface', function() {
            it('opens a bellows item using the open method', function(done) {
                element.bellows({
                    opened: function(e, ui) {
                        assert.isTrue(ui.item.hasClass('bellows--is-open'));
                        done();
                    }
                });

                element.bellows('open', 0);
            });

            it('closes a bellows item using the close method', function(done) {
                element.bellows({
                    opened: function() {
                        element.bellows('close', 0);
                    },
                    closed: function(e, ui) {
                        assert.isFalse(ui.item.hasClass('bellows--is-open'));
                        done();
                    }
                });

                element.bellows('open', 0);
            });

            it('removes aria-hidden attribute when open', function(done) {
                element.bellows({
                    opened: function(e, ui) {
                        assert.isFalse(!!ui.item.find('.bellows__content-wrapper').attr('aria-hidden'));
                        done();
                    }
                });

                element.bellows('open', 0);
            });

            it('adds aria-hidden attribute when closed', function(done) {
                element.bellows({
                    opened: function() {
                        element.bellows('close', 0);
                    },
                    closed: function(e, ui) {
                        assert.isTrue(!!ui.item.find('.bellows__content-wrapper').attr('aria-hidden'));
                        done();
                    }
                });

                element.bellows('open', 0);
            });

            it('enables handlers for dynamically added items', function(done) {
                element.bellows({
                    open: function() {
                        done();
                    }
                });

                element
                    .bellows('add', items)
                    .find('.bellows__header:eq(3)')
                    .trigger('click');
            });

            it('replaces items when adding with replace', function() {
                element.bellows();

                element.bellows('add', item, true);

                assert.equal(element.find('.bellows__item').length, 1);
            });

            it('throws for method calls that don\'t exist', function() {
                assert.throws(function() { element.bellows().bellows('noMethod'); });
            });

            it('throws when attempting to invoke private methods', function() {
                assert.throws(function() { element.bellows().bellows('_init'); });
            });

            it('throws when attempting to invoke methods that aren\'t functions', function() {
                assert.throws(function() { element.bellows().bellows('singleItemOpen'); });
            });
        });
    });
});
@@ -4765,24 +4765,699 @@
 %0A        %7D);
+%0A%0A        describe('disabling touch events on bellows items via CSS class', function() %7B%0A            it('does not apply %5C'.bellows--is-open%5C' to bellows items on touch event', function(done) %7B%0A                element.bellows();%0A%0A                var $item = $(item);%0A%0A                element.bellows('add', $item, true);%0A%0A                $item%0A                    .addClass('bellows--is-disabled')%0A                    .find('.bellows__header')%0A                    .trigger('click');%0A%0A                setTimeout(function() %7B%0A                    assert.isFalse($item.hasClass('bellows--is-open'));%0A                    done();%0A                %7D, 300);%0A            %7D);%0A        %7D);
 %0A    %7D);%0A%7D);

Add test for disabling bellows item touch events