Add tests for gr-checkers-list
* Add test to see if the checkers list table headers are
correctly rendered
* Add test to see if the correct number of checkers are
returned
* Add test to see the rendered data matches the response
Change-Id: Ib6c9b209058c6ab0d194ab192ba3c5bd34425255
diff --git a/gr-checks/gr-checkers-list_test.html b/gr-checks/gr-checkers-list_test.html
new file mode 100644
index 0000000..6b5e0ad
--- /dev/null
+++ b/gr-checks/gr-checkers-list_test.html
@@ -0,0 +1,244 @@
+<!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>