blob: 6b5e0adc89a0edf8d6843b268fe692fa5bc75a50 [file] [log] [blame]
<!DOCTYPE html>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
<script src="/bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
<script src="/bower_components/web-component-tester/browser.js"></script>
<link rel="import" href="/bower_components/polymer/polymer.html">
<title>gr-checkers-list-view</title>
<link rel="import" href="gr-checkers-list.html">
<test-fixture id="basic">
<template is="dom-template">
<gr-checkers-list
plugin-rest-api="[[pluginRestApi]]"
>
</gr-checkers-list>
</template>
</test-fixture>
<script>
const CHECKERS = [
{
"uuid":"C:D",
"name":"A",
"description":"B",
"repository":"Backend",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-25 13:08:43.000000000",
"updated":"2019-07-25 13:08:43.000000000"
},
{
"uuid":"aa:bb",
"name":"n1",
"description":"d1",
"repository":"All-Users",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-29 13:07:17.000000000",
"updated":"2019-07-29 13:07:17.000000000"
},
{
"uuid":"adsf:asdasdas",
"name":"ds",
"description":"s",
"repository":"Scripts",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-29 13:28:09.000000000",
"updated":"2019-07-29 13:28:09.000000000"
},
{
"uuid":"ijkl:mnop",
"name":"abcd",
"description":"efgh",
"repository":"All-Projects",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-29 09:33:25.000000000",
"updated":"2019-07-29 09:33:25.000000000"
},
{
"uuid":"ngfnf:mhghgnhghn",
"name":"nbvfg",
"description":"fjhgj",
"repository":"All-Users",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-08-06 14:21:34.000000000",
"updated":"2019-08-06 14:21:34.000000000"
},
{
"uuid":"sdfsdf--:sdfsdf333",
"name":"sdfsdf",
"description":"sdfsdfsd",
"repository":"Scripts",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-30 13:00:19.000000000",
"updated":"2019-07-30 13:00:19.000000000"
},
{
"uuid":"test:checker1",
"name":"Unit Tests",
"description":"Random description that should be improved at some point",
"repository":"Backend",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-22 13:16:52.000000000",
"updated":"2019-07-22 14:21:14.000000000"
},
{
"uuid":"test:checker2",
"name":"Code Style",
"repository":"Backend",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-22 13:26:56.000000000",
"updated":"2019-07-22 13:26:56.000000000"
},
{
"uuid":"xddf:sdfsdfsdf",
"name":"sdfsdf",
"description":"sdfsdf",
"repository":"Scripts",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-29 14:11:59.000000000",
"updated":"2019-07-29 14:11:59.000000000"
},
{
"uuid":"zxczxc:bnvnbvnbvn",
"name":"zxc",
"description":"zxc",
"repository":"Scripts",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-29 14:00:24.000000000",
"updated":"2019-07-29 14:00:24.000000000"
},
{
"uuid":"zxczxc:sdfsdf",
"name":"zxc",
"description":"zxc",
"repository":"Scripts",
"status":"ENABLED",
"blocking":[
],
"query":"status:open",
"created":"2019-07-29 13:30:47.000000000",
"updated":"2019-07-29 13:30:47.000000000"
}
];
</script>
<script>
suite('gr-checkers-list tests', () => {
let element;
let sandbox;
let fetchJSONSpy, fetchJSONPromise, fetchJSONResolve;
setup((done) => {
sandbox = sinon.sandbox.create();
fetchJSONSpy = sinon.stub();
const fetchJSONPromise = new Promise((resolve, reject) => {
fetchJSONResolve = resolve;
})
fetchJSONSpy.returns(fetchJSONPromise)
const pluginRestApi = {
fetchJSON: fetchJSONSpy,
};
element = fixture('basic', {
pluginRestApi
});
flush(done);
});
teardown(() => { sandbox.restore(); });
test('renders checker list table headings', () => {
const checkersList = element.$$('table')
const headings = checkersList.firstElementChild.firstElementChild.
children;
const expectedHeadings = ["Checker Name", "Repository", "Status",
"Required", "Checker Description", "Edit"];
for (let i = 0;i < headings.length;i++) {
assert(headings[i].innerText === expectedHeadings[i]);
}
});
test('create checker button renders', () => {
assert(element.querySelector('#createNewContainer'));
const button = element.querySelector('#createNewContainer')
.querySelector('gr-button');
assert(button);
assert(button.innerText === 'Create New');
});
suite('with checkers', () => {
setup((done) => {
fetchJSONResolve(CHECKERS);
flush(done);
})
test('renders correct number of checkers', () => {
const checkers = element.$$('table > tbody:nth-child(2)')
.querySelectorAll('tr');
assert(checkers.length === CHECKERS.length);
})
test('renders correct checkers', () => {
const checkers = element.$$('table > tbody:nth-child(2)')
.querySelectorAll('tr');
for (let i = 0;i < checkers.length;i++) {
const checkerDetails = checkers[i].querySelectorAll('td');
assert(CHECKERS[i].name === checkerDetails[0].innerText);
assert(CHECKERS[i].repository === checkerDetails[1].innerText);
const status = CHECKERS[i].status || "NO";
assert(status === checkerDetails[2].innerText);
const checkerRequired = (CHECKERS[i].blocking &&
CHECKERS[i].blocking.length > 0)
? "YES": "NO";
assert(checkerRequired === checkerDetails[3].innerText);
const description = CHECKERS[i].description || '';
assert(description === checkerDetails[4].innerText);
}
})
});
});
</script>