describe("hx-swap-oob attribute", function () {
beforeEach(function () {
this.server = makeServer();
clearWorkArea();
});
afterEach(function () {
this.server.restore();
clearWorkArea();
});
it('handles basic response properly', function () {
this.server.respondWith("GET", "/test", "Clicked
Swapped
");
var div = make('click me
');
make('');
div.click();
this.server.respond();
div.innerHTML.should.equal("Clicked");
byId("d1").innerHTML.should.equal("Swapped");
})
it('handles more than one oob swap properly', function () {
this.server.respondWith("GET", "/test", "ClickedSwapped1
Swapped2
");
var div = make('click me
');
make('');
make('');
div.click();
this.server.respond();
div.innerHTML.should.equal("Clicked");
byId("d1").innerHTML.should.equal("Swapped1");
byId("d2").innerHTML.should.equal("Swapped2");
})
it('handles no id match properly', function () {
this.server.respondWith("GET", "/test", "ClickedSwapped
");
var div = make('click me
');
div.click();
this.server.respond();
div.innerText.should.equal("Clicked");
})
it('handles basic response properly w/ data-* prefix', function () {
this.server.respondWith("GET", "/test", "ClickedSwapped
");
var div = make('click me
');
make('');
div.click();
this.server.respond();
div.innerHTML.should.equal("Clicked");
byId("d1").innerHTML.should.equal("Swapped");
})
it('handles outerHTML response properly', function () {
this.server.respondWith("GET", "/test", "ClickedSwapped
");
var div = make('click me
');
make('');
div.click();
this.server.respond();
byId("d1").getAttribute("foo").should.equal("bar");
div.innerHTML.should.equal("Clicked");
byId("d1").innerHTML.should.equal("Swapped");
})
it('handles innerHTML response properly', function () {
this.server.respondWith("GET", "/test", "ClickedSwapped
");
var div = make('click me
');
make('');
div.click();
this.server.respond();
should.equal(byId("d1").getAttribute("foo"), null);
div.innerHTML.should.equal("Clicked");
byId("d1").innerHTML.should.equal("Swapped");
})
it('oob swaps can be nested in content', function () {
this.server.respondWith("GET", "/test", "");
var div = make('click me
');
make('');
div.click();
this.server.respond();
should.equal(byId("d1").getAttribute("foo"), null);
div.innerHTML.should.equal("Clicked
");
byId("d1").innerHTML.should.equal("Swapped");
})
it('oob swaps can use selectors to match up', function () {
this.server.respondWith("GET", "/test", "");
var div = make('click me
');
make('');
div.click();
this.server.respond();
should.equal(byId("d1").getAttribute("foo"), "bar");
div.innerHTML.should.equal("Clicked
");
byId("d1").innerHTML.should.equal("Swapped");
})
it('swaps into all targets that match the selector (innerHTML)', function () {
this.server.respondWith("GET", "/test", "Clicked
Swapped
");
var div = make('click me
');
make('No swap
');
make('Not swapped
');
make('Not swapped
');
div.click();
this.server.respond();
byId("d1").innerHTML.should.equal("No swap");
byId("d2").innerHTML.should.equal("Swapped");
byId("d3").innerHTML.should.equal("Swapped");
})
it('swaps into all targets that match the selector (outerHTML)', function () {
var oobSwapContent = 'Swapped
';
this.server.respondWith("GET", "/test", "Clicked
" + oobSwapContent);
var div = make('click me
');
make('');
make('');
make('');
div.click();
this.server.respond();
byId("d1").innerHTML.should.equal("No swap
");
byId("d2").innerHTML.should.equal(oobSwapContent);
byId("d3").innerHTML.should.equal(oobSwapContent);
})
it('oob swap delete works properly', function()
{
this.server.respondWith("GET", "/test", '');
var div = make('Foo
')
div.click();
this.server.respond();
should.equal(byId("d1"), null);
});
});