blob: c92f5bb5bac2811c63481b73536f3e78ea804f80 [file] [log] [blame]
/**
* @license
* Copyright 2018 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import * as sinon from 'sinon';
import '../../../test/common-test-setup';
import './gr-documentation-search';
import {GrDocumentationSearch} from './gr-documentation-search';
import {queryAndAssert, stubRestApi} from '../../../test/test-utils';
import {DocResult} from '../../../types/common';
import {fixture, html, assert} from '@open-wc/testing';
import {testResolver} from '../../../test/common-test-setup';
import {navigationToken} from '../../core/gr-navigation/gr-navigation';
function documentationGenerator(counter: number) {
return {
title: `Gerrit Code Review - REST API Developers Notes${counter}`,
url: 'Documentation/dev-rest-api.html',
};
}
function createDocumentationList(n: number) {
const list = [];
for (let i = 0; i < n; ++i) {
list.push(documentationGenerator(i));
}
return list;
}
suite('gr-documentation-search tests', () => {
let element: GrDocumentationSearch;
let documentationSearches: DocResult[];
setup(async () => {
sinon.stub(testResolver(navigationToken), 'setUrl');
element = await fixture(
html`<gr-documentation-search></gr-documentation-search>`
);
});
suite('list with searches for documentation', () => {
setup(async () => {
documentationSearches = createDocumentationList(26);
stubRestApi('getDocumentationSearches').returns(
Promise.resolve(documentationSearches)
);
await element.getDocumentationSearches();
await element.updateComplete;
});
test('test for test repo in the list', async () => {
assert.equal(
element.documentationSearches![1].title,
'Gerrit Code Review - REST API Developers Notes1'
);
assert.equal(
element.documentationSearches![1].url,
'Documentation/dev-rest-api.html'
);
});
test('render', () => {
assert.shadowDom.equal(
element,
/* HTML */ `
<gr-list-view>
<table class="genericList" id="list">
<tbody>
<tr class="headerRow">
<th class="name topHeader">Name</th>
<th class="name topHeader"></th>
<th class="name topHeader"></th>
</tr>
<tr class="loadingMsg" id="loading">
<td>Loading...</td>
</tr>
</tbody>
<tbody>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes0
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes1
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes2
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes3
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes4
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes5
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes6
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes7
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes8
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes9
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes10
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes11
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes12
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes13
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes14
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes15
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes16
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes17
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes18
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes19
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes20
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes21
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes22
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes23
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes24
</a>
</td>
<td></td>
<td></td>
</tr>
<tr class="table">
<td class="name">
<a href="/Documentation/dev-rest-api.html">
Gerrit Code Review - REST API Developers Notes25
</a>
</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</gr-list-view>
`
);
});
});
suite('filter', () => {
setup(() => {
documentationSearches = createDocumentationList(25);
});
test('paramsChanged', async () => {
const stub = stubRestApi('getDocumentationSearches').returns(
Promise.resolve(documentationSearches)
);
element.filter = 'test';
await element.getDocumentationSearches();
assert.isTrue(stub.lastCall.calledWithExactly('test'));
});
});
suite('loading', () => {
test('correct contents are displayed', async () => {
assert.isTrue(element.loading);
assert.equal(
getComputedStyle(queryAndAssert(element, '#loading')).display,
'block'
);
element.loading = false;
await element.updateComplete;
assert.equal(
getComputedStyle(queryAndAssert(element, '#loading')).display,
'none'
);
});
});
});