describe("loading states extension", function() { beforeEach(function () { this.server = makeServer(); this.clock = sinon.useFakeTimers(); clearWorkArea(); }); afterEach(function () { this.server.restore(); this.clock.restore(); clearWorkArea(); }); it('works on basic setup', function () { this.server.respondWith("GET", "/test", "Clicked!"); var btn = make(''); var element = make('
'); btn.click(); element.style.display.should.be.equal("inline-block"); this.server.respond(); element.style.display.should.be.equal("none"); btn.innerHTML.should.equal("Clicked!"); }); it('works with custom display', function () { this.server.respondWith("GET", "/test", "Clicked!"); var btn = make(''); var element = make('
'); btn.click(); element.style.display.should.be.equal("flex"); this.server.respond(); element.style.display.should.be.equal("none"); btn.innerHTML.should.equal("Clicked!"); }); it('works with classes', function () { this.server.respondWith("GET", "/test", "Clicked!"); var btn = make(''); var element = make('
'); btn.click(); element.should.have.class("test"); this.server.respond(); element.should.not.have.class("test"); btn.innerHTML.should.equal("Clicked!"); }); it('works with classes removal', function () { this.server.respondWith("GET", "/test", "Clicked!"); var btn = make(''); var element = make('
'); btn.click(); element.should.not.have.class("test"); this.server.respond(); element.should.have.class("test"); btn.innerHTML.should.equal("Clicked!"); }); it('works with disabling', function () { this.server.respondWith("GET", "/test", "Clicked!"); var btn = make(''); var element = make(''); var element = make(''); var element = make(''); var element = make('
'); btn.click(); element.should.have.class("test"); this.clock.tick(1000); element.should.not.have.class("test"); this.server.respond(); element.should.have.class("test"); btn.innerHTML.should.equal("Clicked!"); }); it('works with custom targets', function () { this.server.respondWith("GET", "/test", "Clicked!"); var btn = make(''); var element = make('
'); btn.click(); element.should.have.class("test"); this.server.respond(); element.should.not.have.class("test"); btn.innerHTML.should.equal("Clicked!"); }); it('works with path filters', function () { this.server.respondWith("GET", "/test", "Clicked!"); var btn = make(''); var matchingRequestElement = make('
'); var nonMatchingPathElement = make('
'); btn.click(); matchingRequestElement.should.have.class("test"); nonMatchingPathElement.should.not.have.class("test"); this.server.respond(); matchingRequestElement.should.not.have.class("test"); nonMatchingPathElement.should.not.have.class("test"); btn.innerHTML.should.equal("Clicked!"); }); it('works with scopes', function () { this.server.respondWith("GET", "/test", "Clicked!"); var btn = make('
'); var element = make('
'); btn.getElementsByTagName("button")[0].click(); element.should.not.have.class("test"); this.server.respond(); element.should.not.have.class("test"); btn.getElementsByTagName("button")[0].innerHTML.should.equal("Clicked!"); }); });