diff options
Diffstat (limited to 'polygerrit-ui/app/elements/admin/gr-repo-dashboards/gr-repo-dashboards_test.html')
-rw-r--r-- | polygerrit-ui/app/elements/admin/gr-repo-dashboards/gr-repo-dashboards_test.html | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-dashboards/gr-repo-dashboards_test.html b/polygerrit-ui/app/elements/admin/gr-repo-dashboards/gr-repo-dashboards_test.html new file mode 100644 index 0000000000..94bf5e09d5 --- /dev/null +++ b/polygerrit-ui/app/elements/admin/gr-repo-dashboards/gr-repo-dashboards_test.html @@ -0,0 +1,158 @@ +<!DOCTYPE html> +<!-- +@license +Copyright (C) 2017 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> + +<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes"> +<title>gr-repo-dashboards</title> + +<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script> +<script src="../../../bower_components/web-component-tester/browser.js"></script> +<link rel="import" href="../../../test/common-test-setup.html"/> +<link rel="import" href="gr-repo-dashboards.html"> + +<script>void(0);</script> + +<test-fixture id="basic"> + <template> + <gr-repo-dashboards></gr-repo-dashboards> + </template> +</test-fixture> + +<script> + suite('gr-repo-dashboards tests', () => { + let element; + let sandbox; + + setup(() => { + sandbox = sinon.sandbox.create(); + element = fixture('basic'); + }); + + teardown(() => { + sandbox.restore(); + }); + + suite('dashboard table', () => { + setup(() => { + sandbox.stub(element.$.restAPI, 'getRepoDashboards').returns( + Promise.resolve([ + { + id: 'default:contributor', + project: 'gerrit', + defining_project: 'gerrit', + ref: 'default', + path: 'contributor', + description: 'Own contributions.', + foreach: 'owner:self', + url: '/dashboard/?params', + title: 'Contributor Dashboard', + sections: [ + { + name: 'Mine To Rebase', + query: 'is:open -is:mergeable', + }, + { + name: 'My Recently Merged', + query: 'is:merged limit:10', + }, + ], + }, + { + id: 'custom:custom2', + project: 'gerrit', + defining_project: 'Public-Projects', + ref: 'custom', + path: 'open', + description: 'Recent open changes.', + url: '/dashboard/?params', + title: 'Open Changes', + sections: [ + { + name: 'Open Changes', + query: 'status:open project:${project} -age:7w', + }, + ], + }, + { + id: 'default:abc', + project: 'gerrit', + ref: 'default', + }, + { + id: 'custom:custom1', + project: 'gerrit', + ref: 'custom', + }, + ])); + }); + + test('loading, sections, and ordering', done => { + assert.isTrue(element._loading); + assert.notEqual(getComputedStyle(element.$.loadingContainer).display, + 'none'); + assert.equal(getComputedStyle(element.$.dashboards).display, + 'none'); + element.repo = 'test'; + flush(() => { + assert.equal(getComputedStyle(element.$.loadingContainer).display, + 'none'); + assert.notEqual(getComputedStyle(element.$.dashboards).display, + 'none'); + + assert.equal(element._dashboards.length, 2); + assert.equal(element._dashboards[0].section, 'custom'); + assert.equal(element._dashboards[1].section, 'default'); + + const dashboards = element._dashboards[0].dashboards; + assert.equal(dashboards.length, 2); + assert.equal(dashboards[0].id, 'custom:custom1'); + assert.equal(dashboards[1].id, 'custom:custom2'); + + done(); + }); + }); + }); + + suite('test url', () => { + test('_getUrl', () => { + sandbox.stub(Gerrit.Nav, 'getUrlForRepoDashboard', + () => '/r/dashboard/test'); + + assert.equal(element._getUrl('/dashboard/test', {}), '/r/dashboard/test'); + + assert.equal(element._getUrl(undefined, undefined), ''); + }); + }); + + suite('404', () => { + test('fires page-error', done => { + const response = {status: 404}; + sandbox.stub( + element.$.restAPI, 'getRepoDashboards', (repo, errFn) => { + errFn(response); + }); + + element.addEventListener('page-error', e => { + assert.deepEqual(e.detail.response, response); + done(); + }); + + element.repo = 'test'; + }); + }); + }); +</script> |