134 lines
4.0 KiB
JavaScript
134 lines
4.0 KiB
JavaScript
describe('embed links', function () {
|
|
const objectify = function (str) {
|
|
const hash = {};
|
|
const parts = str.split('&');
|
|
for (let i = 0; i < parts.length; i++) {
|
|
const keyValue = parts[i].split('=');
|
|
hash[keyValue[0]] = keyValue[1];
|
|
}
|
|
return hash;
|
|
};
|
|
|
|
const checkiFrameCode = function (embedCode, readonly) {
|
|
// turn the code into an html element
|
|
const $embediFrame = $(embedCode);
|
|
|
|
// read and check the frame attributes
|
|
const width = $embediFrame.attr('width');
|
|
const height = $embediFrame.attr('height');
|
|
const name = $embediFrame.attr('name');
|
|
expect(width).to.be('100%');
|
|
expect(height).to.be('600');
|
|
expect(name).to.be(readonly ? 'embed_readonly' : 'embed_readwrite');
|
|
|
|
// parse the url
|
|
const src = $embediFrame.attr('src');
|
|
const questionMark = src.indexOf('?');
|
|
const url = src.substr(0, questionMark);
|
|
const paramsStr = src.substr(questionMark + 1);
|
|
const params = objectify(paramsStr);
|
|
|
|
const 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) {
|
|
const chrome$ = helper.padChrome$;
|
|
|
|
// open share dropdown
|
|
chrome$('.buttonicon-embed').click();
|
|
|
|
// get the link of the share field + the actual pad url and compare them
|
|
const shareLink = chrome$('#linkinput').val();
|
|
const 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) {
|
|
const chrome$ = helper.padChrome$;
|
|
|
|
// open share dropdown
|
|
chrome$('.buttonicon-embed').click();
|
|
|
|
// get the link of the share field + the actual pad url and compare them
|
|
const 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) {
|
|
const 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
|
|
const shareLink = chrome$('#linkinput').val();
|
|
const 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) {
|
|
const 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
|
|
const embedCode = chrome$('#embedinput').val();
|
|
|
|
checkiFrameCode(embedCode, true);
|
|
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|