summaryrefslogtreecommitdiffstats
path: root/polygerrit-ui/app/elements/admin/gr-repo-dashboards/gr-repo-dashboards_test.html
diff options
context:
space:
mode:
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.html158
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>