
On larger hosts we could not really convince teams to use the first name feature, because there will always be some first names that are ambiguous. Adding the initial letter of the second name for disambiguation was not visually appealing enough. Shortening the full name seems the more appropriate solution. "First names" had two primary goals: A dense reviewers column on the dashboard. And saving vertical space on the change page in the reviewers section. We will continue to use first names for the reviewer column only, but not anywhere else. We may re-evaluate how to render the reviewers column specifically, but this should not affect the entire application. On the change page we have tweaked the max-width of account chips such that two reviewer chips will fit next to each other, even when using full names. The overall width of the metadata column has grown a few pixels for that. Also included in this change: - Adding attention set related utility methods to account-util. - Tweaking the length of the account label in other places. - Making sure that the submit requirements component does not increase the width of the metadata column too much as currently very often seen on android-review. Screenshots: gerrit-review change page: Before: https://imgur.com/a/wuSWEU7 After: https://imgur.com/a/hl6uWOV gerrit-review dashboard: Before: https://imgur.com/a/Wb5DJ9o After: https://imgur.com/a/SudGTAU android-review change page: Before: https://imgur.com/a/h9Y5jqT After: https://imgur.com/a/m1awjpX Change-Id: I3189e76f6859bbf2bea370cdd976d5abb4b2d0be
201 lines
5.2 KiB
JavaScript
201 lines
5.2 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright (C) 2019 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.js';
|
|
import {getDisplayName, getUserName, getGroupDisplayName, getAccountDisplayName, _testOnly_accountEmail} from './display-name-util.js';
|
|
|
|
suite('display-name-utils tests', () => {
|
|
// eslint-disable-next-line no-unused-vars
|
|
const config = {
|
|
user: {
|
|
anonymous_coward_name: 'Anonymous Coward',
|
|
},
|
|
};
|
|
|
|
test('getDisplayName name only', () => {
|
|
const account = {
|
|
name: 'test-name',
|
|
};
|
|
assert.equal(getDisplayName(config, account),
|
|
'test-name');
|
|
});
|
|
|
|
test('getDisplayName prefer displayName', () => {
|
|
const account = {
|
|
name: 'test-name',
|
|
display_name: 'better-name',
|
|
};
|
|
assert.equal(getDisplayName(config, account),
|
|
'better-name');
|
|
});
|
|
|
|
test('getDisplayName prefer username default', () => {
|
|
const account = {
|
|
name: 'test-name',
|
|
username: 'user-name',
|
|
};
|
|
const config = {
|
|
accounts: {
|
|
default_display_name: 'USERNAME',
|
|
},
|
|
};
|
|
assert.equal(getDisplayName(config, account),
|
|
'user-name');
|
|
});
|
|
|
|
test('getDisplayName firstNameOnly', () => {
|
|
const account = {
|
|
name: 'firstname lastname',
|
|
};
|
|
assert.equal(getDisplayName(config, account, true), 'firstname');
|
|
});
|
|
|
|
test('getDisplayName prefer first name default', () => {
|
|
const account = {
|
|
name: 'firstname lastname',
|
|
};
|
|
const config = {
|
|
accounts: {
|
|
default_display_name: 'FIRST_NAME',
|
|
},
|
|
};
|
|
assert.equal(getDisplayName(config, account),
|
|
'firstname');
|
|
});
|
|
|
|
test('getDisplayName ignore leading whitespace for first name', () => {
|
|
const account = {
|
|
name: ' firstname lastname',
|
|
};
|
|
const config = {
|
|
accounts: {
|
|
default_display_name: 'FIRST_NAME',
|
|
},
|
|
};
|
|
assert.equal(getDisplayName(config, account),
|
|
'firstname');
|
|
});
|
|
|
|
test('getDisplayName full name default', () => {
|
|
const account = {
|
|
name: 'firstname lastname',
|
|
};
|
|
const config = {
|
|
accounts: {
|
|
default_display_name: 'FULL_NAME',
|
|
},
|
|
};
|
|
assert.equal(getDisplayName(config, account),
|
|
'firstname lastname');
|
|
});
|
|
|
|
test('getDisplayName name only', () => {
|
|
const account = {
|
|
name: 'test-name',
|
|
};
|
|
assert.deepEqual(getUserName(config, account),
|
|
'test-name');
|
|
});
|
|
|
|
test('getUserName username only', () => {
|
|
const account = {
|
|
username: 'test-user',
|
|
};
|
|
assert.deepEqual(getUserName(config, account),
|
|
'test-user');
|
|
});
|
|
|
|
test('getUserName email only', () => {
|
|
const account = {
|
|
email: 'test-user@test-url.com',
|
|
};
|
|
assert.deepEqual(getUserName(config, account),
|
|
'test-user@test-url.com');
|
|
});
|
|
|
|
test('getUserName returns not Anonymous Coward as the anon name', () => {
|
|
assert.deepEqual(getUserName(config, null),
|
|
'Anonymous');
|
|
});
|
|
|
|
test('getUserName for the config returning the anon name', () => {
|
|
const config = {
|
|
user: {
|
|
anonymous_coward_name: 'Test Anon',
|
|
},
|
|
};
|
|
assert.deepEqual(getUserName(config, null),
|
|
'Test Anon');
|
|
});
|
|
|
|
test('getAccountDisplayName - account with name only', () => {
|
|
assert.equal(
|
|
getAccountDisplayName(config,
|
|
{name: 'Some user name'}),
|
|
'Some user name');
|
|
});
|
|
|
|
test('getAccountDisplayName - account with email only', () => {
|
|
assert.equal(
|
|
getAccountDisplayName(config,
|
|
{email: 'my@example.com'}),
|
|
'my@example.com <my@example.com>');
|
|
});
|
|
|
|
test('getAccountDisplayName - account with name and status', () => {
|
|
assert.equal(
|
|
getAccountDisplayName(config, {
|
|
name: 'Some name',
|
|
status: 'OOO',
|
|
}),
|
|
'Some name (OOO)');
|
|
});
|
|
|
|
test('getAccountDisplayName - account with name and email', () => {
|
|
assert.equal(
|
|
getAccountDisplayName(config, {
|
|
name: 'Some name',
|
|
email: 'my@example.com',
|
|
}),
|
|
'Some name <my@example.com>');
|
|
});
|
|
|
|
test('getAccountDisplayName - account with name, email and status', () => {
|
|
assert.equal(
|
|
getAccountDisplayName(config, {
|
|
name: 'Some name',
|
|
email: 'my@example.com',
|
|
status: 'OOO',
|
|
}),
|
|
'Some name <my@example.com> (OOO)');
|
|
});
|
|
|
|
test('getGroupDisplayName', () => {
|
|
assert.equal(
|
|
getGroupDisplayName({name: 'Some user name'}),
|
|
'Some user name (group)');
|
|
});
|
|
|
|
test('_accountEmail', () => {
|
|
assert.equal(
|
|
_testOnly_accountEmail('email@gerritreview.com'),
|
|
'<email@gerritreview.com>');
|
|
assert.equal(_testOnly_accountEmail(undefined), '');
|
|
});
|
|
});
|
|
|