| /** |
| * @license |
| * Copyright 2023 Google LLC |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| import '../test/common-test-setup'; |
| import './gr-app-element'; |
| import {testResolver} from '../test/common-test-setup'; |
| import {fixture, html, assert} from '@open-wc/testing'; |
| import {GrRouter, routerToken} from './core/gr-router/gr-router'; |
| import { |
| queryAndAssert, |
| queryAll, |
| stubRestApi, |
| waitQueryAndAssert, |
| } from '../test/test-utils'; |
| import {GrAppElement} from './gr-app-element'; |
| import {LitElement} from 'lit'; |
| import {createSearchUrl} from '../models/views/search'; |
| import {createChange} from '../test/test-data-generators'; |
| import {NumericChangeId} from '../api/rest-api'; |
| import {createSettingsUrl} from '../models/views/settings'; |
| |
| suite('integration tests', () => { |
| let appElement: GrAppElement; |
| let router: GrRouter; |
| |
| const assertView = async function <T extends LitElement>(tagName: string) { |
| await appElement.updateComplete; |
| const view = await waitQueryAndAssert<T>(appElement, tagName); |
| assert.isOk(view); |
| return view; |
| }; |
| |
| const assertItems = function (el: HTMLElement) { |
| const list = queryAndAssert(el, 'gr-change-list'); |
| const section = queryAndAssert(list, 'gr-change-list-section'); |
| return queryAll(section, 'gr-change-list-item'); |
| }; |
| |
| setup(async () => { |
| appElement = await fixture<GrAppElement>( |
| html`<gr-app-element id="app-element"></gr-app-element>` |
| ); |
| router = testResolver(routerToken); |
| router._testOnly_startRouter(); |
| await appElement.updateComplete; |
| }); |
| |
| teardown(async () => { |
| router.finalize(); |
| }); |
| |
| test('navigate from search view page to settings page and back', async () => { |
| stubRestApi('getChanges').returns( |
| Promise.resolve([ |
| createChange({_number: 1 as NumericChangeId}), |
| createChange({_number: 2 as NumericChangeId}), |
| createChange({_number: 3 as NumericChangeId}), |
| ]) |
| ); |
| |
| router.setUrl(createSearchUrl({query: 'asdf'})); |
| let view = await assertView('gr-change-list-view'); |
| assert.equal(assertItems(view).length, 3); |
| |
| router.setUrl(createSettingsUrl()); |
| await assertView('gr-settings-view'); |
| |
| router.setUrl(createSearchUrl({query: 'asdf'})); |
| view = await assertView('gr-change-list-view'); |
| assert.equal(assertItems(view).length, 3); |
| }); |
| }); |