summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter 'Pita' Martischka <petermartischka@googlemail.com>2012-10-08 18:38:53 +0100
committerPeter 'Pita' Martischka <petermartischka@googlemail.com>2012-10-08 18:38:53 +0100
commit7adef188fff416ff710fe9131b38c10665528c37 (patch)
treea349c77eaebedf504c07773f48c2466f13da0e0c
parentbd47b6c40beb645bcede3a5d1ba95d7daec04971 (diff)
downloadetherpad-lite-7adef188fff416ff710fe9131b38c10665528c37.zip
rewrote the embed values test
-rw-r--r--tests/frontend/specs/embed_value.js192
1 files changed, 129 insertions, 63 deletions
diff --git a/tests/frontend/specs/embed_value.js b/tests/frontend/specs/embed_value.js
index 46fca686..dc1511c0 100644
--- a/tests/frontend/specs/embed_value.js
+++ b/tests/frontend/specs/embed_value.js
@@ -1,67 +1,133 @@
-describe("check embed links", function(){
- //create a new pad before each test run
- beforeEach(function(cb){
- testHelper.newPad(cb);
- });
-
- it("check embed links are sane", function() {
- //get the inner iframe
- var $inner = testHelper.$getPadInner();
-
- //get the embed button and click it
- var $embedButton = testHelper.$getPadChrome().find(".buttonicon-embed");
- $embedButton.click();
-
- //get the element
- var embedInput = testHelper.$getPadChrome().find("#embedinput");
-
- //is the embed drop down visible?
- var isVisible = $(embedInput).is(":visible");
+describe("embed links", function(){
+ var objectify = function (str)
+ {
+ var hash = {};
+ var parts = str.split('&');
+ for(var i = 0; i < parts.length; i++)
+ {
+ var keyValue = parts[i].split('=');
+ hash[keyValue[0]] = keyValue[1];
+ }
+ return hash;
+ }
+
+ var checkiFrameCode = function(embedCode, readonly){
+ //turn the code into an html element
+ var $embediFrame = $(embedCode);
+
+ //read and check the frame attributes
+ var width = $embediFrame.attr("width");
+ var height = $embediFrame.attr("height");
+ var name = $embediFrame.attr("name");
+ expect(width).to.be('600');
+ expect(height).to.be('400');
+ expect(name).to.be(readonly ? "embed_readonly" : "embed_readwrite");
+
+ //parse the url
+ var src = $embediFrame.attr("src");
+ var questionMark = src.indexOf("?");
+ var url = src.substr(0,questionMark);
+ var paramsStr = src.substr(questionMark+1);
+ var params = objectify(paramsStr);
+
+ var expectedParams = {
+ showControls: 'true'
+ , showChat: 'true'
+ , showLineNumbers: 'true'
+ , useMonospaceFont: 'false'
+ }
+
+ //check the url
+ if(readonly){
+ expect(url.indexOf("r.") > 0).to.be(true);
+ } else {
+ expect(url).to.be(helper.padChrome$.window.location.href);
+ }
- //expect it to be visible
- expect(isVisible).to.be(true);
-
- //does it contain "iframe"
- var containsIframe = embedInput.val().indexOf("iframe") != -1;
-
- //expect it to contain iframe
- expect(containsIframe).to.be(true);
-
- //does it contain "/iframe"
- var containsSlashIframe = embedInput.val().indexOf("/iframe") != -1;
-
- //expect it to contain /iframe
- expect(containsSlashIframe).to.be(true);
-
-
-
- //get the Read only button and click it
- var $embedButton = testHelper.$getPadChrome().find("#readonlyinput");
- $embedButton.click();
-
- //is the embed drop down visible?
- var isVisible = $(embedInput).is(":visible");
-
- //expect it to be visible
- expect(isVisible).to.be(true);
-
- //does it contain r.
- var containsRDot = embedInput.val().indexOf("r.") != -1;
-
- //expect it to contain iframe
- expect(containsRDot).to.be(true);
-
- //does it contain "iframe"
- var containsIframe = embedInput.val().indexOf("iframe") != -1;
-
- //expect it to contain iframe
- expect(containsIframe).to.be(true);
-
- //does it contain "/iframe"
- var containsSlashIframe = embedInput.val().indexOf("/iframe") != -1;
-
- //expect it to contain /iframe
- expect(containsSlashIframe).to.be(true);
+ //check if all parts of the url are like expected
+ expect(params).to.eql(expectedParams);
+ }
+
+ describe("read and write", function(){
+ //create a new pad before each test run
+ beforeEach(function(cb){
+ helper.newPad(cb);
+ this.timeout(5000);
+ });
+
+ describe("the share link", function(){
+ it("is the actual pad url", function(done){
+ var chrome$ = helper.padChrome$;
+
+ //open share dropdown
+ chrome$(".buttonicon-embed").click();
+
+ //get the link of the share field + the actual pad url and compare them
+ var shareLink = chrome$("#linkinput").val();
+ var padURL = chrome$.window.location.href;
+ expect(shareLink).to.be(padURL);
+
+ done();
+ });
+ });
+
+ describe("the embed as iframe code", function(){
+ it("is an iframe with the the correct url parameters and correct size", function(done){
+ var chrome$ = helper.padChrome$;
+
+ //open share dropdown
+ chrome$(".buttonicon-embed").click();
+
+ //get the link of the share field + the actual pad url and compare them
+ var embedCode = chrome$("#embedinput").val();
+
+ checkiFrameCode(embedCode, false)
+
+ done();
+ });
+ });
+ });
+ describe("when read only option is set", function(){
+ beforeEach(function(cb){
+ helper.newPad(cb);
+ this.timeout(5000);
+ });
+
+ describe("the share link", function(){
+ it("shows a read only url", function(done){
+ var chrome$ = helper.padChrome$;
+
+ //open share dropdown
+ chrome$(".buttonicon-embed").click();
+ //check read only checkbox, a bit hacky
+ chrome$('#readonlyinput').attr('checked','checked').click().attr('checked','checked');
+
+ //get the link of the share field + the actual pad url and compare them
+ var shareLink = chrome$("#linkinput").val();
+ var containsReadOnlyLink = shareLink.indexOf("r.") > 0
+ expect(containsReadOnlyLink).to.be(true);
+
+ done();
+ });
+ });
+
+ describe("the embed as iframe code", function(){
+ it("is an iframe with the the correct url parameters and correct size", function(done){
+ var chrome$ = helper.padChrome$;
+
+ //open share dropdown
+ chrome$(".buttonicon-embed").click();
+ //check read only checkbox, a bit hacky
+ chrome$('#readonlyinput').attr('checked','checked').click().attr('checked','checked');
+
+ //get the link of the share field + the actual pad url and compare them
+ var embedCode = chrome$("#embedinput").val();
+
+ checkiFrameCode(embedCode, true);
+
+ done();
+ });
+ });
});
});