@ -6,151 +6,157 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
(function(_global) {
|
||||
var options;
|
||||
var options;
|
||||
|
||||
function setAttributes(elem, attrs) {
|
||||
if (!attrs) {
|
||||
return;
|
||||
}
|
||||
Object.keys(attrs).forEach(function(key) { elem.setAttribute(key, attrs[key]); });
|
||||
function setAttributes(elem, attrs) {
|
||||
if (!attrs) {
|
||||
return;
|
||||
}
|
||||
Object.keys(attrs).forEach(function(key) {
|
||||
elem.setAttribute(key, attrs[key]);
|
||||
});
|
||||
}
|
||||
|
||||
function createLi(attrs) {
|
||||
var li = document.createElement('li');
|
||||
setAttributes(li, attrs);
|
||||
return li;
|
||||
}
|
||||
function createLi(attrs) {
|
||||
var li = document.createElement('li');
|
||||
setAttributes(li, attrs);
|
||||
return li;
|
||||
}
|
||||
|
||||
function createLabel(attrs) {
|
||||
var label = document.createElement('label');
|
||||
setAttributes(label, attrs);
|
||||
return label;
|
||||
}
|
||||
function createLabel(attrs) {
|
||||
var label = document.createElement('label');
|
||||
setAttributes(label, attrs);
|
||||
return label;
|
||||
}
|
||||
|
||||
function createButton(attrs, innerHtml) {
|
||||
var button = document.createElement('button');
|
||||
button.innerHTML = innerHtml;
|
||||
setAttributes(button, attrs);
|
||||
return button;
|
||||
}
|
||||
function createButton(attrs, innerHtml) {
|
||||
var button = document.createElement('button');
|
||||
button.innerHTML = innerHtml;
|
||||
setAttributes(button, attrs);
|
||||
return button;
|
||||
}
|
||||
|
||||
function createTextNode(text) { return document.createTextNode(text); }
|
||||
function createTextNode(text) {
|
||||
return document.createTextNode(text);
|
||||
}
|
||||
|
||||
function createCheckbox(attrs, checked) {
|
||||
var checkbox = document.createElement('input');
|
||||
checkbox.type = 'checkbox';
|
||||
checkbox.checked = !!checked;
|
||||
setAttributes(checkbox, attrs);
|
||||
return checkbox;
|
||||
}
|
||||
function createCheckbox(attrs, checked) {
|
||||
var checkbox = document.createElement('input');
|
||||
checkbox.type = 'checkbox';
|
||||
checkbox.checked = !!checked;
|
||||
setAttributes(checkbox, attrs);
|
||||
return checkbox;
|
||||
}
|
||||
|
||||
function createUl(attrs) {
|
||||
var ul = document.createElement('ul');
|
||||
setAttributes(ul, attrs);
|
||||
return ul;
|
||||
}
|
||||
function createUl(attrs) {
|
||||
var ul = document.createElement('ul');
|
||||
setAttributes(ul, attrs);
|
||||
return ul;
|
||||
}
|
||||
|
||||
var serailPromise = _global['__zone_symbol__serialPromise'];
|
||||
|
||||
_global['__zone_symbol__testTargetsUIBuild'] = function(_options) {
|
||||
options = _options;
|
||||
var allButton = createButton({}, 'test selected');
|
||||
allButton.addEventListener('click', function() {
|
||||
var promiseFactories = [];
|
||||
for (var i = 0; i < options.tests.length; i++) {
|
||||
var checkbox = document.getElementById('testcheck' + i);
|
||||
if (checkbox.checked) {
|
||||
var test = options.tests[i];
|
||||
promiseFactories.push({
|
||||
factory: function(context) { return doTest(context.test, context.idx); },
|
||||
context: {test: test, idx: i}
|
||||
});
|
||||
}
|
||||
}
|
||||
serailPromise(promiseFactories);
|
||||
});
|
||||
options.targetContainer.appendChild(allButton);
|
||||
|
||||
var ul = createUl();
|
||||
options.targetContainer.appendChild(ul);
|
||||
var serailPromise = _global['__zone_symbol__serialPromise'];
|
||||
|
||||
_global['__zone_symbol__testTargetsUIBuild'] = function(_options) {
|
||||
options = _options;
|
||||
var allButton = createButton({}, 'test selected');
|
||||
allButton.addEventListener('click', function() {
|
||||
var promiseFactories = [];
|
||||
for (var i = 0; i < options.tests.length; i++) {
|
||||
buildTestItemUI(ul, options.tests[i], i);
|
||||
}
|
||||
};
|
||||
|
||||
function buildTestItemUI(ul, testItem, idx) {
|
||||
var li = createLi({'id': 'test' + idx});
|
||||
|
||||
var button = createButton({'id': 'buttontest' + idx}, 'begin test');
|
||||
buildButtonClickHandler(button);
|
||||
|
||||
var title = createTextNode(options.tests[idx].title);
|
||||
var checkbox = createCheckbox({'id': 'testcheck' + idx}, true);
|
||||
var label = createLabel({'id': 'label' + idx});
|
||||
|
||||
li.appendChild(checkbox);
|
||||
li.appendChild(title);
|
||||
li.appendChild(button);
|
||||
li.appendChild(label);
|
||||
|
||||
ul.appendChild(li);
|
||||
}
|
||||
|
||||
function processTestResult(test, result, id) {
|
||||
var split = result.displayText.split('\n');
|
||||
options.jsonResult[test.title] = result.rawData;
|
||||
options.jsonContainer.innerHTML =
|
||||
'<div style="display:none">' + JSON.stringify(options.jsonResult) + '</div>';
|
||||
|
||||
var summary = result.summary;
|
||||
var row = options.resultsContainer.insertRow();
|
||||
var cell = row.insertCell();
|
||||
cell.innerHTML = test.title;
|
||||
cell.rowSpan = Object.keys(summary).length;
|
||||
var idx = 0;
|
||||
Object.keys(summary).forEach(function(key) {
|
||||
var tableRow = row;
|
||||
if (idx !== 0) {
|
||||
tableRow = options.resultsContainer.insertRow();
|
||||
var checkbox = document.getElementById('testcheck' + i);
|
||||
if (checkbox.checked) {
|
||||
var test = options.tests[i];
|
||||
promiseFactories.push({
|
||||
factory: function(context) {
|
||||
return doTest(context.test, context.idx);
|
||||
},
|
||||
context: {test: test, idx: i}
|
||||
});
|
||||
}
|
||||
var keyCell = tableRow.insertCell();
|
||||
keyCell.innerHTML = key;
|
||||
var valueCell = tableRow.insertCell();
|
||||
valueCell.innerHTML = summary[key];
|
||||
idx++;
|
||||
});
|
||||
|
||||
var testLi = document.getElementById('test' + id);
|
||||
for (var j = 0; j < split.length; j++) {
|
||||
var br = document.createElement('br');
|
||||
var s = document.createTextNode(split[j]);
|
||||
testLi.appendChild(br);
|
||||
testLi.appendChild(s);
|
||||
}
|
||||
}
|
||||
serailPromise(promiseFactories);
|
||||
});
|
||||
options.targetContainer.appendChild(allButton);
|
||||
|
||||
function doTest(test, id) {
|
||||
test.cleanFn();
|
||||
test.before();
|
||||
var button = document.getElementById('buttontest' + id);
|
||||
button.setAttribute('enabled', 'false');
|
||||
var label = document.getElementById('label' + id);
|
||||
label.innerHTML = 'Testing';
|
||||
return test.testFn().then(function(result) {
|
||||
processTestResult(test, result, id);
|
||||
test.after();
|
||||
label.innerHTML = 'Finished';
|
||||
button.setAttribute('enabled', 'true');
|
||||
});
|
||||
}
|
||||
var ul = createUl();
|
||||
options.targetContainer.appendChild(ul);
|
||||
|
||||
function buildButtonClickHandler(button) {
|
||||
button.onclick = function(event) {
|
||||
var target = event.target;
|
||||
var id = target.getAttribute('id').substring(10);
|
||||
var test = options.tests[id];
|
||||
doTest(test, id);
|
||||
};
|
||||
for (var i = 0; i < options.tests.length; i++) {
|
||||
buildTestItemUI(ul, options.tests[i], i);
|
||||
}
|
||||
};
|
||||
|
||||
function buildTestItemUI(ul, testItem, idx) {
|
||||
var li = createLi({'id': 'test' + idx});
|
||||
|
||||
var button = createButton({'id': 'buttontest' + idx}, 'begin test');
|
||||
buildButtonClickHandler(button);
|
||||
|
||||
var title = createTextNode(options.tests[idx].title);
|
||||
var checkbox = createCheckbox({'id': 'testcheck' + idx}, true);
|
||||
var label = createLabel({'id': 'label' + idx});
|
||||
|
||||
li.appendChild(checkbox);
|
||||
li.appendChild(title);
|
||||
li.appendChild(button);
|
||||
li.appendChild(label);
|
||||
|
||||
ul.appendChild(li);
|
||||
}
|
||||
|
||||
function processTestResult(test, result, id) {
|
||||
var split = result.displayText.split('\n');
|
||||
options.jsonResult[test.title] = result.rawData;
|
||||
options.jsonContainer.innerHTML =
|
||||
'<div style="display:none">' + JSON.stringify(options.jsonResult) + '</div>';
|
||||
|
||||
var summary = result.summary;
|
||||
var row = options.resultsContainer.insertRow();
|
||||
var cell = row.insertCell();
|
||||
cell.innerHTML = test.title;
|
||||
cell.rowSpan = Object.keys(summary).length;
|
||||
var idx = 0;
|
||||
Object.keys(summary).forEach(function(key) {
|
||||
var tableRow = row;
|
||||
if (idx !== 0) {
|
||||
tableRow = options.resultsContainer.insertRow();
|
||||
}
|
||||
var keyCell = tableRow.insertCell();
|
||||
keyCell.innerHTML = key;
|
||||
var valueCell = tableRow.insertCell();
|
||||
valueCell.innerHTML = summary[key];
|
||||
idx++;
|
||||
});
|
||||
|
||||
var testLi = document.getElementById('test' + id);
|
||||
for (var j = 0; j < split.length; j++) {
|
||||
var br = document.createElement('br');
|
||||
var s = document.createTextNode(split[j]);
|
||||
testLi.appendChild(br);
|
||||
testLi.appendChild(s);
|
||||
}
|
||||
}
|
||||
|
||||
function doTest(test, id) {
|
||||
test.cleanFn();
|
||||
test.before();
|
||||
var button = document.getElementById('buttontest' + id);
|
||||
button.setAttribute('enabled', 'false');
|
||||
var label = document.getElementById('label' + id);
|
||||
label.innerHTML = 'Testing';
|
||||
return test.testFn().then(function(result) {
|
||||
processTestResult(test, result, id);
|
||||
test.after();
|
||||
label.innerHTML = 'Finished';
|
||||
button.setAttribute('enabled', 'true');
|
||||
});
|
||||
}
|
||||
|
||||
function buildButtonClickHandler(button) {
|
||||
button.onclick = function(event) {
|
||||
var target = event.target;
|
||||
var id = target.getAttribute('id').substring(10);
|
||||
var test = options.tests[id];
|
||||
doTest(test, id);
|
||||
};
|
||||
}
|
||||
}(typeof window === 'undefined' ? global : window));
|
||||
|
Reference in New Issue
Block a user