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); } //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(60000); }); 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(60000); }); describe("the share link", function(){ it("shows a read only url", function(done){ var chrome$ = helper.padChrome$; //open share dropdown chrome$(".buttonicon-embed").click(); chrome$('#readonlyinput').click(); chrome$('#readonlyinput:checkbox:not(:checked)').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').click(); chrome$('#readonlyinput:checkbox:not(:checked)').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(); }); }); }); });