| /** |
| * @license |
| * Copyright 2020 Google LLC |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| import '../test/common-test-setup'; |
| import { |
| createAccountDetailWithIdNameAndEmail, |
| createAccountWithId, |
| createChange, |
| createComment, |
| createCommentThread, |
| createParsedChange, |
| createServerInfo, |
| } from '../test/test-data-generators'; |
| import { |
| AccountId, |
| AccountInfo, |
| ChangeInfo, |
| EmailAddress, |
| ServerInfo, |
| } from '../types/common'; |
| import { |
| getMentionedReason, |
| getReason, |
| hasAttention, |
| sortReviewers, |
| } from './attention-set-util'; |
| import {DefaultDisplayNameConfig} from '../api/rest-api'; |
| import {AccountsVisibility, AccountTag} from '../constants/constants'; |
| import {assert} from '@open-wc/testing'; |
| |
| const KERMIT: AccountInfo = { |
| email: 'kermit@gmail.com' as EmailAddress, |
| username: 'kermit', |
| name: 'Kermit The Frog', |
| _account_id: 31415926535 as AccountId, |
| }; |
| |
| const OTHER_ACCOUNT: AccountInfo = { |
| email: 'other@gmail.com' as EmailAddress, |
| username: 'other', |
| name: 'Other User', |
| _account_id: 31415926536 as AccountId, |
| }; |
| |
| const MENTION_ACCOUNT: AccountInfo = { |
| email: 'mention@gmail.com' as EmailAddress, |
| username: 'mention', |
| name: 'Mention User', |
| _account_id: 31415926537 as AccountId, |
| }; |
| |
| const MENTION_ACCOUNT_2: AccountInfo = { |
| email: 'mention2@gmail.com' as EmailAddress, |
| username: 'mention2', |
| name: 'Mention2 User', |
| _account_id: 31415926538 as AccountId, |
| }; |
| |
| const change: ChangeInfo = { |
| ...createChange(), |
| attention_set: { |
| '31415926535': { |
| account: KERMIT, |
| reason: 'a good reason', |
| }, |
| '31415926536': { |
| account: OTHER_ACCOUNT, |
| reason: 'Added by <GERRIT_ACCOUNT_31415926535>', |
| reason_account: KERMIT, |
| }, |
| '31415926537': { |
| account: MENTION_ACCOUNT, |
| reason: '<GERRIT_ACCOUNT_31415926535> replied on the change', |
| reason_account: KERMIT, |
| }, |
| '31415926538': { |
| account: MENTION_ACCOUNT_2, |
| reason: 'Bot voted negatively on the change', |
| reason_account: KERMIT, |
| }, |
| }, |
| }; |
| |
| const config: ServerInfo = { |
| ...createServerInfo(), |
| user: { |
| anonymous_coward_name: 'Unidentified User', |
| }, |
| accounts: { |
| visibility: AccountsVisibility.ALL, |
| default_display_name: DefaultDisplayNameConfig.USERNAME, |
| }, |
| }; |
| |
| suite('attention-set-util', () => { |
| test('hasAttention', () => { |
| assert.isTrue(hasAttention(KERMIT, change)); |
| }); |
| |
| test('getReason', () => { |
| assert.equal(getReason(config, KERMIT, change), 'a good reason'); |
| assert.equal(getReason(config, OTHER_ACCOUNT, change), 'Added by kermit'); |
| }); |
| |
| test('sortReviewers', () => { |
| const a1 = createAccountWithId(1); |
| a1.tags = [AccountTag.SERVICE_USER]; |
| const a2 = createAccountWithId(2); |
| a2.tags = [AccountTag.SERVICE_USER]; |
| const a3 = createAccountWithId(3); |
| const a4 = createAccountWithId(4); |
| const a5 = createAccountWithId(5); |
| const a6 = createAccountWithId(6); |
| const a7 = createAccountWithId(7); |
| |
| const reviewers = [a1, a2, a3, a4, a5, a6, a7]; |
| const change = { |
| ...createParsedChange(), |
| attention_set: {'6': {account: a6}}, |
| labels: { |
| 'Code-Review': { |
| all: [ |
| {...a2, value: 1}, |
| {...a4, value: 1}, |
| {...a5, value: -1}, |
| ], |
| }, |
| }, |
| }; |
| assert.sameOrderedMembers( |
| reviewers.sort((r1, r2) => sortReviewers(r1, r2, change, a7)), |
| [ |
| a7, // self |
| a6, // is in the attention set |
| a5, // human user, has voted -1 |
| a4, // human user, has voted +1 |
| a3, // human user, has not voted |
| a2, // service user, has voted |
| a1, // service user, has not voted |
| ] |
| ); |
| }); |
| |
| test('getMentionReason', () => { |
| let comment = { |
| ...createComment(), |
| message: `hey @${MENTION_ACCOUNT.email} take a look at this`, |
| unresolved: true, |
| author: { |
| ...createAccountDetailWithIdNameAndEmail(1), |
| }, |
| }; |
| |
| assert.equal( |
| getMentionedReason( |
| [createCommentThread([comment])], |
| KERMIT, |
| KERMIT, |
| config |
| ), |
| '<GERRIT_ACCOUNT_31415926535> replied on the change' |
| ); |
| |
| assert.equal( |
| getMentionedReason( |
| [createCommentThread([comment])], |
| KERMIT, |
| MENTION_ACCOUNT, |
| config |
| ), |
| '<GERRIT_ACCOUNT_31415926535> mentioned you in a comment' |
| ); |
| |
| // resolved mention hence does not change reason |
| comment = { |
| ...createComment(), |
| message: `hey @${MENTION_ACCOUNT.email} take a look at this`, |
| unresolved: false, |
| author: { |
| ...createAccountDetailWithIdNameAndEmail(1), |
| }, |
| }; |
| assert.equal( |
| getMentionedReason( |
| [createCommentThread([comment])], |
| KERMIT, |
| MENTION_ACCOUNT, |
| config |
| ), |
| '<GERRIT_ACCOUNT_31415926535> replied on the change' |
| ); |
| }); |
| }); |