Skip to content
This repository has been archived by the owner on Dec 5, 2022. It is now read-only.

Commit

Permalink
fix integration test and remove duplication (#151)
Browse files Browse the repository at this point in the history
* small wrapper to remove the code repetition

* fix tests and example
  • Loading branch information
vigneshshanmugam authored Jun 1, 2017
1 parent c91be2c commit ee67d42
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 54 deletions.
47 changes: 22 additions & 25 deletions examples/multiple-fragments-with-custom-amd/fragment.js
Original file line number Diff line number Diff line change
@@ -1,38 +1,32 @@
'use strict';
const url = require('url');

const jsHeaders = {
'Content-Type': 'application/javascript',
'Access-Control-Allow-Origin': '*'
};

const defineFn = (module, fragmentName) => {
return `define (['${module}'], function (module) {
return function initFragment (element) {
element.className += ' fragment-${fragmentName}-${module}';
element.innerHTML += module;
}
})`;
};

module.exports = (fragmentName, fragmentUrl) => (request, response) => {
const pathname = url.parse(request.url).pathname;
switch (pathname) {
case '/fragment-1.js':
// serve fragment's JavaScript
response.writeHead(200, {
'Content-Type': 'application/javascript',
'Access-Control-Allow-Origin': '*'
});
response.end(`
define (['word'], function (word) {
return function initFragment (element) {
element.className += ' fragment-${fragmentName}-initialised';
element.innerHTML += word;
};
});
`);
response.writeHead(200, jsHeaders);
response.end(defineFn('js1', fragmentName));
break;
case '/fragment-2.js':
// serve fragment's JavaScript
response.writeHead(200, {
'Content-Type': 'application/javascript',
'Access-Control-Allow-Origin': '*'
});
response.end(`
define (['leet'], function (leet) {
return function initFragment (element) {
element.className += ' fragment-${fragmentName}-leet';
element.innerHTML += ' ' + leet;
};
});
`);
response.writeHead(200, jsHeaders);
response.end(defineFn('js2', fragmentName));
break;
case '/fragment.css':
// serve fragment's CSS
Expand All @@ -43,9 +37,12 @@ module.exports = (fragmentName, fragmentUrl) => (request, response) => {
margin: 10px;
text-align: center;
}
.fragment-${fragmentName}-initialised {
.fragment-${fragmentName}-js1 {
background-color: lightgrey;
}
.fragment-${fragmentName}-js2 {
color: blue;
}
`);
break;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
<script>
require.config({onNodeCreated: function(node){node.crossOrigin="anonymous"}});
// Example dependencies for the fragments
define('word', function () {
return 'initialised';
define('js1', function () {
return 'js1';
});
define('leet', function () {
return 1337;
define('js2', function () {
return '-js2';
});
</script>
</head>
Expand Down
48 changes: 23 additions & 25 deletions examples/multiple-fragments-with-custom-amd/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,18 @@ const templatesPath = path.join(__dirname, 'templates');
const baseTemplateFn = () => 'base-template';
const fragment = require('./fragment');
const tailor = new Tailor({
maxAssetLinks: 2,
fetchTemplate: fetchTemplate(templatesPath, baseTemplateFn)
});
const assert = require('assert');
const asserters = wd.asserters;

const PLATFORMS = [
{
browserName: 'internet explorer',
version: '10.0'
},
{
browserName: 'chrome'
}
];
const PLATFORMS = [{
browserName: 'internet explorer',
version: '10.0'
},{
browserName: 'chrome'
}];

describe('Frontend test', function () {

Expand Down Expand Up @@ -56,39 +54,39 @@ describe('Frontend test', function () {
server = http.createServer(tailor.requestHandler);
fragment1 = http.createServer(fragment('hello', 'http://localhost:8081'));
fragment2 = http.createServer(fragment('world', 'http://localhost:8082'));
fragment3 = http.createServer(fragment('world', 'http://localhost:8083'));
fragment3 = http.createServer(fragment('body-start', 'http://localhost:8083'));
return Promise.all([
new Promise((resolve) => server.listen(8080, () => resolve())),
new Promise((resolve) => fragment1.listen(8081, () => resolve())),
new Promise((resolve) => fragment2.listen(8082, () => resolve())),
new Promise((resolve) => fragment3.listen(8083, () => resolve()))
server.listen(8080),
fragment1.listen(8081),
fragment2.listen(8082),
fragment3.listen(8083)
]);
});

after(() => {
return Promise.all([
new Promise((resolve) => server.close(() => resolve())),
new Promise((resolve) => fragment1.close(() => resolve())),
new Promise((resolve) => fragment2.close(() => resolve())),
new Promise((resolve) => fragment3.close(() => resolve()))
server.close(),
fragment1.close(),
fragment2.close(),
fragment3.close()
]);
});

PLATFORMS.forEach((platform) => {
it('should open the page and initialise two fragments, each requiring two scripts in ' + platform.browserName, () => {
it('should open the page and initialise three fragments, each requiring two scripts in ' + platform.browserName, () => {
return testOnPlatform(platform, (browser) => {
return browser
.get('http://localhost:8080/index')
.title()
.then((title) => {
assert.equal(title, 'Test Page', 'Test page is not loaded');
})
.waitForElementByCss('.fragment-hello-initialised', asserters.textInclude('initialised'), 2000)
.waitForElementByCss('.fragment-hello-leet', asserters.textInclude('1337'), 2000)
.waitForElementByCss('.fragment-world-initialised', asserters.textInclude('initialised'), 2000)
.waitForElementByCss('.fragment-world-leet', asserters.textInclude('1337'), 2000)
.waitForElementByCss('.fragment-body-start-initialised', asserters.textInclude('initialised'), 2000)
.waitForElementByCss('.fragment-body-start-leet', asserters.textInclude('1337'), 2000);
.waitForElementByCss('.fragment-hello-js1', asserters.textInclude('js1'), 2000)
.waitForElementByCss('.fragment-hello-js2', asserters.textInclude('js2'), 2000)
.waitForElementByCss('.fragment-world-js1', asserters.textInclude('js1'), 2000)
.waitForElementByCss('.fragment-world-js2', asserters.textInclude('js2'), 2000)
.waitForElementByCss('.fragment-body-start-js1', asserters.textInclude('js1'), 2000)
.waitForElementByCss('.fragment-body-start-js2', asserters.textInclude('js2'), 2000);

});
});
Expand Down

0 comments on commit ee67d42

Please sign in to comment.