| /** |
| * @license |
| * Copyright (C) 2022 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. |
| */ |
| |
| import '../../../test/common-test-setup-karma'; |
| import {fixture} from '@open-wc/testing-helpers'; |
| import {html} from 'lit'; |
| import './gr-change-list-column-requirement'; |
| import {GrChangeListColumnRequirement} from './gr-change-list-column-requirement'; |
| import { |
| createSubmitRequirementExpressionInfo, |
| createSubmitRequirementResultInfo, |
| createNonApplicableSubmitRequirementResultInfo, |
| createChange, |
| } from '../../../test/test-data-generators'; |
| import { |
| AccountId, |
| ChangeInfo, |
| DetailedLabelInfo, |
| SubmitRequirementResultInfo, |
| SubmitRequirementStatus, |
| } from '../../../api/rest-api'; |
| import {StandardLabels} from '../../../utils/label-util'; |
| import {queryAndAssert, stubFlags} from '../../../test/test-utils'; |
| |
| suite('gr-change-list-column-requirement tests', () => { |
| let element: GrChangeListColumnRequirement; |
| let change: ChangeInfo; |
| setup(() => { |
| stubFlags('isEnabled').returns(true); |
| const submitRequirement: SubmitRequirementResultInfo = { |
| ...createSubmitRequirementResultInfo(), |
| name: StandardLabels.CODE_REVIEW, |
| submittability_expression_result: { |
| ...createSubmitRequirementExpressionInfo(), |
| }, |
| }; |
| change = { |
| ...createChange(), |
| submit_requirements: [ |
| submitRequirement, |
| createNonApplicableSubmitRequirementResultInfo(), |
| ], |
| unresolved_comment_count: 1, |
| }; |
| }); |
| |
| test('renders', async () => { |
| element = await fixture<GrChangeListColumnRequirement>( |
| html`<gr-change-list-column-requirement |
| .change=${change} |
| .labelName=${StandardLabels.CODE_REVIEW} |
| > |
| </gr-change-list-column-requirement>` |
| ); |
| expect(element).shadowDom.to.equal( |
| /* HTML */ |
| ` <div class="container" title="Satisfied"> |
| <iron-icon |
| class="check-circle-filled" |
| icon="gr-icons:check-circle-filled" |
| > |
| </iron-icon> |
| </div>` |
| ); |
| }); |
| |
| test('show worst vote when state is not satisfied', async () => { |
| const VALUES_2 = { |
| '-2': 'blocking', |
| '-1': 'bad', |
| '0': 'neutral', |
| '+1': 'good', |
| '+2': 'perfect', |
| }; |
| const label: DetailedLabelInfo = { |
| values: VALUES_2, |
| all: [ |
| {value: -1, _account_id: 777 as AccountId, name: 'Reviewer'}, |
| {value: 1, _account_id: 324 as AccountId, name: 'Reviewer 2'}, |
| ], |
| }; |
| const submitRequirement: SubmitRequirementResultInfo = { |
| ...createSubmitRequirementResultInfo(), |
| name: StandardLabels.CODE_REVIEW, |
| status: SubmitRequirementStatus.UNSATISFIED, |
| submittability_expression_result: createSubmitRequirementExpressionInfo(), |
| }; |
| change = { |
| ...change, |
| submit_requirements: [submitRequirement], |
| labels: { |
| Verified: label, |
| }, |
| }; |
| element = await fixture<GrChangeListColumnRequirement>( |
| html`<gr-change-list-column-requirement |
| .change=${change} |
| .labelName=${StandardLabels.CODE_REVIEW} |
| > |
| </gr-change-list-column-requirement>` |
| ); |
| expect(element).shadowDom.to.equal( |
| /* HTML */ |
| ` <div class="container"> |
| <gr-vote-chip tooltip-with-who-voted=""></gr-vote-chip> |
| </div>` |
| ); |
| const voteChip = queryAndAssert(element, 'gr-vote-chip'); |
| expect(voteChip).shadowDom.to.equal( |
| /* HTML */ |
| ` <gr-tooltip-content |
| class="container" |
| has-tooltip="" |
| title="Reviewer: bad" |
| > |
| <div class="negative vote-chip">-1</div> |
| </gr-tooltip-content>` |
| ); |
| }); |
| |
| test('show trigger vote', async () => { |
| const VALUES_2 = { |
| '-2': 'blocking', |
| '-1': 'bad', |
| '0': 'neutral', |
| '+1': 'good', |
| '+2': 'perfect', |
| }; |
| change = { |
| ...change, |
| submit_requirements: [], |
| labels: { |
| 'Commit-Queue': { |
| values: VALUES_2, |
| all: [ |
| {value: -1, _account_id: 777 as AccountId, name: 'Reviewer'}, |
| {value: 1, _account_id: 324 as AccountId, name: 'Reviewer 2'}, |
| ], |
| }, |
| }, |
| }; |
| element = await fixture<GrChangeListColumnRequirement>( |
| html`<gr-change-list-column-requirement |
| .change=${change} |
| .labelName=${'Commit-Queue'} |
| > |
| </gr-change-list-column-requirement>` |
| ); |
| expect(element).shadowDom.to.equal( |
| /* HTML */ |
| ` <div class="container"> |
| <gr-vote-chip tooltip-with-who-voted=""></gr-vote-chip> |
| </div>` |
| ); |
| const voteChip = queryAndAssert(element, 'gr-vote-chip'); |
| expect(voteChip).shadowDom.to.equal( |
| /* HTML */ |
| ` <gr-tooltip-content |
| class="container" |
| has-tooltip="" |
| title="Reviewer 2: good" |
| > |
| <div class="positive vote-chip">+1</div> |
| </gr-tooltip-content>` |
| ); |
| }); |
| }); |