| /** | |
| * @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 {assert, fixture, html} from '@open-wc/testing'; | |
| import {GrRouter, routerToken} from './core/gr-router/gr-router'; | |
| import { | |
| queryAll, | |
| queryAndAssert, | |
| 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'); | |
| window.history.back(); | |
| view = await assertView('gr-change-list-view'); | |
| assert.equal(assertItems(view).length, 3); | |
| }); | |
| }); |