rewrote the embed values test

pull/1097/merge
Peter 'Pita' Martischka 2012-10-08 18:38:53 +01:00
parent bd47b6c40b
commit 7adef188ff
1 changed files with 122 additions and 56 deletions

View File

@ -1,67 +1,133 @@
describe("check embed links", function(){ 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 //create a new pad before each test run
beforeEach(function(cb){ beforeEach(function(cb){
testHelper.newPad(cb); helper.newPad(cb);
this.timeout(5000);
}); });
it("check embed links are sane", function() { describe("the share link", function(){
//get the inner iframe it("is the actual pad url", function(done){
var $inner = testHelper.$getPadInner(); var chrome$ = helper.padChrome$;
//get the embed button and click it //open share dropdown
var $embedButton = testHelper.$getPadChrome().find(".buttonicon-embed"); chrome$(".buttonicon-embed").click();
$embedButton.click();
//get the element //get the link of the share field + the actual pad url and compare them
var embedInput = testHelper.$getPadChrome().find("#embedinput"); var shareLink = chrome$("#linkinput").val();
var padURL = chrome$.window.location.href;
expect(shareLink).to.be(padURL);
//is the embed drop down visible? done();
var isVisible = $(embedInput).is(":visible"); });
});
//expect it to be visible describe("the embed as iframe code", function(){
expect(isVisible).to.be(true); it("is an iframe with the the correct url parameters and correct size", function(done){
var chrome$ = helper.padChrome$;
//does it contain "iframe" //open share dropdown
var containsIframe = embedInput.val().indexOf("iframe") != -1; chrome$(".buttonicon-embed").click();
//expect it to contain iframe //get the link of the share field + the actual pad url and compare them
expect(containsIframe).to.be(true); var embedCode = chrome$("#embedinput").val();
//does it contain "/iframe" checkiFrameCode(embedCode, false)
var containsSlashIframe = embedInput.val().indexOf("/iframe") != -1;
//expect it to contain /iframe done();
expect(containsSlashIframe).to.be(true); });
});
});
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$;
//get the Read only button and click it //open share dropdown
var $embedButton = testHelper.$getPadChrome().find("#readonlyinput"); chrome$(".buttonicon-embed").click();
$embedButton.click(); //check read only checkbox, a bit hacky
chrome$('#readonlyinput').attr('checked','checked').click().attr('checked','checked');
//is the embed drop down visible? //get the link of the share field + the actual pad url and compare them
var isVisible = $(embedInput).is(":visible"); var shareLink = chrome$("#linkinput").val();
var containsReadOnlyLink = shareLink.indexOf("r.") > 0
expect(containsReadOnlyLink).to.be(true);
//expect it to be visible done();
expect(isVisible).to.be(true); });
});
//does it contain r. describe("the embed as iframe code", function(){
var containsRDot = embedInput.val().indexOf("r.") != -1; it("is an iframe with the the correct url parameters and correct size", function(done){
var chrome$ = helper.padChrome$;
//expect it to contain iframe //open share dropdown
expect(containsRDot).to.be(true); chrome$(".buttonicon-embed").click();
//check read only checkbox, a bit hacky
chrome$('#readonlyinput').attr('checked','checked').click().attr('checked','checked');
//does it contain "iframe" //get the link of the share field + the actual pad url and compare them
var containsIframe = embedInput.val().indexOf("iframe") != -1; var embedCode = chrome$("#embedinput").val();
//expect it to contain iframe checkiFrameCode(embedCode, true);
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);
done();
});
});
}); });
}); });