Files
gerrit/polygerrit-ui/app/utils/display-name-util_test.js
Ben Rohlfs 669433fef1 Get rid of the "first names" experiment
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
2020-08-19 12:14:41 +02:00

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), '');
});
});