summaryrefslogtreecommitdiffstatshomepage
path: root/test/core/headers.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/headers.js')
-rw-r--r--test/core/headers.js110
1 files changed, 110 insertions, 0 deletions
diff --git a/test/core/headers.js b/test/core/headers.js
new file mode 100644
index 00000000..9dc5fe21
--- /dev/null
+++ b/test/core/headers.js
@@ -0,0 +1,110 @@
+describe("kutty AJAX headers", function() {
+ beforeEach(function () {
+ this.server = makeServer();
+ clearWorkArea();
+ });
+ afterEach(function () {
+ this.server.restore();
+ clearWorkArea();
+ });
+
+ it("should include the X-KT-Request header", function(){
+ this.server.respondWith("GET", "/test", function(xhr){
+ xhr.requestHeaders['X-KT-Request'].should.be.equal('true');
+ xhr.respond(200, {}, "");
+ });
+ var div = make('<div kt-get="/test"></div>');
+ div.click();
+ this.server.respond();
+ })
+
+ it("should include the X-KT-Trigger header", function(){
+ this.server.respondWith("GET", "/test", function(xhr){
+ xhr.requestHeaders['X-KT-Trigger'].should.equal('d1');
+ xhr.respond(200, {}, "");
+ });
+ var div = make('<div id="d1" kt-get="/test"></div>');
+ div.click();
+ this.server.respond();
+ })
+
+ it("should include the X-KT-Trigger-Name header", function(){
+ this.server.respondWith("GET", "/test", function(xhr){
+ xhr.requestHeaders['X-KT-Trigger-Name'].should.equal('n1');
+ xhr.respond(200, {}, "");
+ });
+ var div = make('<button name="n1" kt-get="/test"></button>');
+ div.click();
+ this.server.respond();
+ })
+
+ it("should include the X-KT-Target header", function(){
+ this.server.respondWith("GET", "/test", function(xhr){
+ xhr.requestHeaders['X-KT-Target'].should.equal('d1');
+ xhr.respond(200, {}, "");
+ });
+ var div = make('<div kt-target="#d1" kt-get="/test"></div><div id="d1" ></div>');
+ div.click();
+ this.server.respond();
+ })
+
+ it("should handle simple string X-KT-Trigger response header properly", function(){
+ this.server.respondWith("GET", "/test", [200, {"X-KT-Trigger" : "foo"}, ""]);
+
+ var div = make('<div kt-get="/test"></div>');
+ var invokedEvent = false;
+ div.addEventListener("foo", function (evt) {
+ invokedEvent = true;
+ });
+ div.click();
+ this.server.respond();
+ invokedEvent.should.equal(true);
+ })
+
+ it("should handle basic JSON X-KT-Trigger response header properly", function(){
+ this.server.respondWith("GET", "/test", [200, {"X-KT-Trigger" : "{\"foo\":null}"}, ""]);
+
+ var div = make('<div kt-get="/test"></div>');
+ var invokedEvent = false;
+ div.addEventListener("foo", function (evt) {
+ invokedEvent = true;
+ should.equal(null, evt.detail.value);
+ evt.detail.elt.should.equal(div);
+ });
+ div.click();
+ this.server.respond();
+ invokedEvent.should.equal(true);
+ })
+
+ it("should handle JSON with array arg X-KT-Trigger response header properly", function(){
+ this.server.respondWith("GET", "/test", [200, {"X-KT-Trigger" : "{\"foo\":[1, 2, 3]}"}, ""]);
+
+ var div = make('<div kt-get="/test"></div>');
+ var invokedEvent = false;
+ div.addEventListener("foo", function (evt) {
+ invokedEvent = true;
+ evt.detail.elt.should.equal(div);
+ evt.detail.value.should.deep.equal([1, 2, 3]);
+ });
+ div.click();
+ this.server.respond();
+ invokedEvent.should.equal(true);
+ })
+
+ it("should handle JSON with array arg X-KT-Trigger response header properly", function(){
+ this.server.respondWith("GET", "/test", [200, {"X-KT-Trigger" : "{\"foo\":{\"a\":1, \"b\":2}}"}, ""]);
+
+ var div = make('<div kt-get="/test"></div>');
+ var invokedEvent = false;
+ div.addEventListener("foo", function (evt) {
+ invokedEvent = true;
+ evt.detail.elt.should.equal(div);
+ evt.detail.a.should.equal(1);
+ evt.detail.b.should.equal(2);
+ });
+ div.click();
+ this.server.respond();
+ invokedEvent.should.equal(true);
+ })
+
+}); \ No newline at end of file