| /** |
| * @license |
| * Copyright 2024 Google LLC |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| import '../../../test/common-test-setup'; |
| import './gr-change-autocomplete'; |
| import {GrChangeAutocomplete} from './gr-change-autocomplete'; |
| import {stubRestApi} from '../../../test/test-utils'; |
| import {NumericChangeId} from '../../../types/common'; |
| import {createChangeViewChange} from '../../../test/test-data-generators'; |
| import {assert, fixture, html} from '@open-wc/testing'; |
| |
| suite('gr-change-autocomplete tests', () => { |
| let element: GrChangeAutocomplete; |
| |
| setup(async () => { |
| stubRestApi('getChanges').returns( |
| Promise.resolve([ |
| { |
| ...createChangeViewChange(), |
| _number: 123 as NumericChangeId, |
| subject: 'my first awesome change', |
| }, |
| { |
| ...createChangeViewChange(), |
| _number: 124 as NumericChangeId, |
| subject: 'my second awesome change', |
| }, |
| { |
| ...createChangeViewChange(), |
| _number: 245 as NumericChangeId, |
| subject: 'my third awesome change', |
| }, |
| ]) |
| ); |
| |
| element = await fixture<GrChangeAutocomplete>( |
| html`<gr-change-autocomplete></gr-change-autocomplete>` |
| ); |
| await element.updateComplete; |
| }); |
| |
| test('renders', () => { |
| assert.shadowDom.equal( |
| element, |
| /* HTML */ ` |
| <gr-autocomplete |
| allow-non-suggested-values="" |
| placeholder="Change number or subject" |
| > |
| </gr-autocomplete> |
| ` |
| ); |
| }); |
| |
| test('suggestions are filtered by input', async () => { |
| const query = element['query']; |
| let suggestions = await query('123'); |
| assert.equal(suggestions.length, 1); |
| assert.equal(suggestions[0].name, '123: my first awesome change'); |
| |
| suggestions = await query('12'); |
| assert.equal(suggestions.length, 2); |
| |
| suggestions = await query('awesome'); |
| assert.equal(suggestions.length, 3); |
| |
| suggestions = await query('third'); |
| assert.equal(suggestions.length, 1); |
| }); |
| |
| test('suggestions do not include excluded change', async () => { |
| element.excludeChangeNum = 123 as NumericChangeId; |
| await element.updateComplete; |
| |
| const query = element['query']; |
| let suggestions = await query('123'); |
| assert.equal(suggestions.length, 0); |
| |
| suggestions = await query('awesome'); |
| assert.equal(suggestions.length, 2); |
| }); |
| }); |