| /** |
| * @license |
| * Copyright 2023 Google LLC |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| import { |
| getCodeReviewVotesFromMessage, |
| getRevertCreatedChangeIds, |
| } from './message-util'; |
| import {assert} from '@open-wc/testing'; |
| import {MessageTag} from '../constants/constants'; |
| import { |
| AccountInfo, |
| ChangeId, |
| ChangeInfo, |
| ChangeMessageInfo, |
| LabelNameToInfoMap, |
| PatchSetNum, |
| ReviewInputTag, |
| } from '../api/rest-api'; |
| import { |
| createAccountWithId, |
| createChange, |
| createChangeMessage, |
| createDetailedLabelInfo, |
| } from '../test/test-data-generators'; |
| |
| suite('message-util tests', () => { |
| suite('getRevertCreatedChangeIds', () => { |
| test('getRevertCreatedChangeIds', () => { |
| const messages = [ |
| { |
| ...createChangeMessage(), |
| message: |
| 'Created a revert of this change as If02ca1cd494579d6bb92a157bf1819e3689cd6b1', |
| tag: MessageTag.TAG_REVERT as ReviewInputTag, |
| }, |
| { |
| ...createChangeMessage(), |
| message: 'Created a revert of this change as abc', |
| tag: undefined, |
| }, |
| ]; |
| |
| assert.deepEqual(getRevertCreatedChangeIds(messages), [ |
| 'If02ca1cd494579d6bb92a157bf1819e3689cd6b1' as ChangeId, |
| ]); |
| }); |
| |
| test('getRevertCreatedChangeIds with extra spam', () => { |
| const messages = [ |
| { |
| ...createChangeMessage(), |
| message: |
| 'Created a revert of this change as IIf02ca1cd494579d6bb92a157bf1819e3689cd6b1', |
| tag: MessageTag.TAG_REVERT as ReviewInputTag, |
| }, |
| { |
| ...createChangeMessage(), |
| message: 'Created a revert of this change as abc', |
| tag: undefined, |
| }, |
| ]; |
| |
| assert.deepEqual(getRevertCreatedChangeIds(messages), [ |
| 'If02ca1cd494579d6bb92a157bf1819e3689cd6b1' as ChangeId, |
| ]); |
| }); |
| }); |
| |
| suite('getCodeReviewVotesFromMessage', () => { |
| const account1: AccountInfo = { |
| ...createAccountWithId(1), |
| }; |
| const account2: AccountInfo = { |
| ...createAccountWithId(2), |
| }; |
| |
| const labels: LabelNameToInfoMap = { |
| 'Code-Review': createDetailedLabelInfo(), |
| }; |
| |
| function createMessage( |
| author: AccountInfo, |
| message: string, |
| ps: number |
| ): ChangeMessageInfo { |
| return { |
| ...createChangeMessage(), |
| author, |
| message, |
| _revision_number: ps as PatchSetNum, |
| }; |
| } |
| |
| test('no messages', () => { |
| const change: ChangeInfo = { |
| ...createChange(), |
| messages: [], |
| labels, |
| }; |
| const actual = getCodeReviewVotesFromMessage(change, account1); |
| assert.equal(actual.size, 0); |
| }); |
| |
| test('no messages from account', () => { |
| const change: ChangeInfo = { |
| ...createChange(), |
| messages: [createMessage(account2, 'Patch Set 1: Code-Review+1', 1)], |
| labels, |
| }; |
| const actual = getCodeReviewVotesFromMessage(change, account1); |
| assert.equal(actual.size, 0); |
| }); |
| |
| test('one message with code review vote', () => { |
| const change: ChangeInfo = { |
| ...createChange(), |
| messages: [createMessage(account1, 'Patch Set 1: Code-Review+1', 1)], |
| labels, |
| }; |
| const actual = getCodeReviewVotesFromMessage(change, account1); |
| assert.deepEqual( |
| actual, |
| new Map([[1 as PatchSetNum, {label: 'Code-Review', value: '+1'}]]) |
| ); |
| }); |
| |
| test('vote reset', () => { |
| const change: ChangeInfo = { |
| ...createChange(), |
| messages: [createMessage(account1, 'Patch Set 1: Code-Review-1', 1)], |
| labels, |
| }; |
| const actual = getCodeReviewVotesFromMessage(change, account1); |
| assert.deepEqual( |
| actual, |
| new Map([[1 as PatchSetNum, {label: 'Code-Review', value: '-1'}]]) |
| ); |
| }); |
| |
| test('latest message wins for same patchset', () => { |
| const change: ChangeInfo = { |
| ...createChange(), |
| messages: [ |
| createMessage(account1, 'Patch Set 1: Code-Review-1', 1), |
| createMessage(account1, 'Patch Set 1: Code-Review+1', 1), |
| ], |
| labels, |
| }; |
| const actual = getCodeReviewVotesFromMessage(change, account1); |
| assert.deepEqual( |
| actual, |
| new Map([[1 as PatchSetNum, {label: 'Code-Review', value: '+1'}]]) |
| ); |
| }); |
| |
| test('messages from different users', () => { |
| const change: ChangeInfo = { |
| ...createChange(), |
| messages: [ |
| createMessage(account1, 'Patch Set 1: Code-Review+1', 1), |
| createMessage(account2, 'Patch Set 1: Code-Review-1', 1), |
| ], |
| labels, |
| }; |
| const actual = getCodeReviewVotesFromMessage(change, account1); |
| assert.deepEqual( |
| actual, |
| new Map([[1 as PatchSetNum, {label: 'Code-Review', value: '+1'}]]) |
| ); |
| }); |
| |
| test('messages for different patchsets', () => { |
| const change: ChangeInfo = { |
| ...createChange(), |
| messages: [ |
| createMessage(account1, 'Patch Set 1: Code-Review-1', 1), |
| createMessage(account1, 'Patch Set 2: Code-Review+1', 2), |
| ], |
| labels, |
| }; |
| const actual = getCodeReviewVotesFromMessage(change, account1); |
| assert.deepEqual( |
| actual, |
| new Map([ |
| [1 as PatchSetNum, {label: 'Code-Review', value: '-1'}], |
| [2 as PatchSetNum, {label: 'Code-Review', value: '+1'}], |
| ]) |
| ); |
| }); |
| }); |
| }); |