Skip to content

Commit 19125bb

Browse files
committed
Transition views to use username instead of login (deploy 5)
1 parent 49124ba commit 19125bb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+136
-83
lines changed

app/components/owners-list.hbs

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
<li local-class="{{if (eq owner.kind "team") "team"}}">
88
<LinkTo
99
@route={{owner.kind}}
10-
@model={{owner.login}}
10+
@model={{owner.username}}
1111
local-class="link"
12-
data-test-owner-link={{owner.login}}
12+
data-test-owner-link={{owner.username}}
1313
>
1414
<UserAvatar @user={{owner}} @size="medium-small" local-class="avatar" aria-hidden="true" />
15-
<span local-class="name {{unless this.showDetailedList "hidden-name"}}">{{or owner.display_name owner.name owner.login}}</span>
15+
<span local-class="name {{unless this.showDetailedList "hidden-name"}}">{{or owner.display_name owner.name owner.username}}</span>
1616
</LinkTo>
1717
</li>
1818
{{/each}}

app/components/pending-owner-invite-row.hbs

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
</div>
2020
<div>
2121
Invited by:
22-
<LinkTo @route="user" @model={{@invite.inviter.login}} data-test-inviter-link>
23-
{{@invite.inviter.login}}
22+
<LinkTo @route="user" @model={{@invite.inviter.username}} data-test-inviter-link>
23+
{{@invite.inviter.username}}
2424
</LinkTo>
2525
</div>
2626
<div local-class="date-column" data-test-date>

app/components/user-avatar.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ export default class UserAvatar extends Component {
1313

1414
get alt() {
1515
return this.args.user.name === null
16-
? `(${this.args.user.login})`
17-
: `${this.args.user.name} (${this.args.user.login})`;
16+
? `(${this.args.user.username})`
17+
: `${this.args.user.name} (${this.args.user.username})`;
1818
}
1919

2020
get title() {

app/components/user-link.hbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<a href={{@user.url}} title={{@user.login}} ...attributes>{{yield}}</a>
1+
<a href={{@user.url}} title={{@user.username}} ...attributes>{{yield}}</a>

app/components/version-list/row.hbs

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@
4040
{{#if @version.published_by}}
4141
<span local-class="publisher">
4242
by
43-
<LinkTo @route="user" @model={{@version.published_by.login}}>
43+
<LinkTo @route="user" @model={{@version.published_by.username}}>
4444
<UserAvatar @user={{@version.published_by}} local-class="avatar" />
45-
{{or @version.published_by.name @version.published_by.login}}
45+
{{or @version.published_by.name @version.published_by.username}}
4646
</LinkTo>
4747
</span>
4848
{{/if}}

app/controllers/crate/settings.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@ export default class CrateSettingsController extends Controller {
3232

3333
removeOwnerTask = task(async owner => {
3434
try {
35-
await this.crate.removeOwner(owner.get('login'));
35+
await this.crate.removeOwner(owner.get('username'));
3636

3737
if (owner.kind === 'team') {
3838
this.notifications.success(`Team ${owner.get('display_name')} removed as crate owner`);
3939
let owner_team = await this.crate.owner_team;
4040
removeOwner(owner_team, owner);
4141
} else {
42-
this.notifications.success(`User ${owner.get('login')} removed as crate owner`);
42+
this.notifications.success(`User ${owner.get('username')} removed as crate owner`);
4343
let owner_user = await this.crate.owner_user;
4444
removeOwner(owner_user, owner);
4545
}
4646
} catch (error) {
47-
let subject = owner.kind === 'team' ? `team ${owner.get('display_name')}` : `user ${owner.get('login')}`;
47+
let subject = owner.kind === 'team' ? `team ${owner.get('display_name')}` : `user ${owner.get('username')}`;
4848
let message = `Failed to remove the ${subject} as crate owner`;
4949

5050
let detail = error.errors?.[0]?.detail;

app/models/team.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ export default class Team extends Model {
44
@attr email;
55
@attr name;
66
@attr login;
7+
@attr username;
78
@attr api_token;
89
@attr avatar;
910
@attr url;
1011
@attr kind;
1112

1213
get org_name() {
13-
let login = this.login;
14-
let login_split = login.split(':');
15-
return login_split[1];
14+
let username = this.username;
15+
let username_split = username.split(':');
16+
return username_split[1];
1617
}
1718

1819
get display_name() {

app/models/user.js

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default class User extends Model {
1313
@attr name;
1414
@attr is_admin;
1515
@attr login;
16+
@attr username;
1617
@attr avatar;
1718
@attr url;
1819
@attr kind;

app/services/session.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ export default class SessionService extends Service {
194194
}
195195

196196
let currentUser = this.store.push(this.store.normalize('user', response.user));
197-
debug(`User found: ${currentUser.login}`);
197+
debug(`User found: ${currentUser.username}`);
198198
let ownedCrates = response.owned_crates.map(c => this.store.push(this.store.normalize('owned-crate', c)));
199199

200200
let { id } = currentUser;

app/templates/crate/settings.hbs

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818

1919
<div local-class='list' data-test-owners>
2020
{{#each this.crate.owner_team as |team|}}
21-
<div local-class='row' data-test-owner-team={{team.login}}>
22-
<LinkTo @route={{team.kind}} @model={{team.login}}>
21+
<div local-class='row' data-test-owner-team={{team.username}}>
22+
<LinkTo @route={{team.kind}} @model={{team.username}}>
2323
<UserAvatar @user={{team}} @size="medium-small" />
2424
</LinkTo>
25-
<LinkTo @route={{team.kind}} @model={{team.login}}>
25+
<LinkTo @route={{team.kind}} @model={{team.username}}>
2626
{{team.display_name}}
2727
</LinkTo>
2828
<div local-class="email-column">
@@ -32,15 +32,15 @@
3232
</div>
3333
{{/each}}
3434
{{#each this.crate.owner_user as |user|}}
35-
<div local-class='row' data-test-owner-user={{user.login}}>
36-
<LinkTo @route={{user.kind}} @model={{user.login}}>
35+
<div local-class='row' data-test-owner-user={{user.username}}>
36+
<LinkTo @route={{user.kind}} @model={{user.username}}>
3737
<UserAvatar @user={{user}} @size="medium-small" />
3838
</LinkTo>
39-
<LinkTo @route={{user.kind}} @model={{user.login}}>
39+
<LinkTo @route={{user.kind}} @model={{user.username}}>
4040
{{#if user.name}}
4141
{{user.name}}
4242
{{else}}
43-
{{user.login}}
43+
{{user.username}}
4444
{{/if}}
4545
</LinkTo>
4646
<div local-class="email-column">

app/templates/settings/profile.hbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<dt>Name</dt>
1414
<dd>{{ this.model.user.name }}</dd>
1515
<dt>GitHub Account</dt>
16-
<dd>{{ this.model.user.login }}</dd>
16+
<dd>{{ this.model.user.username }}</dd>
1717
</dl>
1818
</div>
1919

app/templates/user.hbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<PageHeader local-class="header" data-test-heading>
22
<UserAvatar @user={{this.model.user}} @size="medium" data-test-avatar />
33
<h1 data-test-username>
4-
{{ this.model.user.login }}
4+
{{ this.model.user.username }}
55
</h1>
66
<UserLink @user={{this.model.user}} local-class="github-link" data-test-user-link>
77
{{svg-jar "github" alt="GitHub profile"}}

e2e/acceptance/api-token.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ test.describe('Acceptance | api-tokens', { tag: '@acceptance' }, () => {
55
test.beforeEach(async ({ msw }) => {
66
let user = msw.db.user.create({
77
login: 'johnnydee',
8+
username: 'johnnydee',
89
name: 'John Doe',
910
1011
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',

e2e/acceptance/crate.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
213213
test.skip('crates can be yanked by owner', async ({ page, msw }) => {
214214
loadFixtures(msw.db);
215215

216-
let user = msw.db.user.findFirst({ where: { login: { equals: 'thehydroimpulse' } } });
216+
let user = msw.db.user.findFirst({ where: { username: { equals: 'thehydroimpulse' } } });
217217
await msw.authenticateAs(user);
218218

219219
await page.goto('/crates/nanomsg/0.5.0');
@@ -241,7 +241,7 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
241241
test('navigating to the owners page when not an owner', async ({ page, msw }) => {
242242
loadFixtures(msw.db);
243243

244-
let user = msw.db.user.findFirst({ where: { login: { equals: 'iain8' } } });
244+
let user = msw.db.user.findFirst({ where: { username: { equals: 'iain8' } } });
245245
await msw.authenticateAs(user);
246246

247247
await page.goto('/crates/nanomsg');
@@ -252,7 +252,7 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
252252
test('navigating to the settings page', async ({ page, msw }) => {
253253
loadFixtures(msw.db);
254254

255-
let user = msw.db.user.findFirst({ where: { login: { equals: 'thehydroimpulse' } } });
255+
let user = msw.db.user.findFirst({ where: { username: { equals: 'thehydroimpulse' } } });
256256
await msw.authenticateAs(user);
257257

258258
await page.goto('/crates/nanomsg');

e2e/acceptance/dashboard.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ test.describe('Acceptance | Dashboard', { tag: '@acceptance' }, () => {
1212
test('shows the dashboard when logged in', async ({ page, msw, percy }) => {
1313
let user = msw.db.user.create({
1414
login: 'johnnydee',
15+
username: 'johnnydee',
1516
name: 'John Doe',
1617
1718
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',

e2e/acceptance/login.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ test.describe('Acceptance | Login', { tag: '@acceptance' }, () => {
2828
user: {
2929
id: 42,
3030
login: 'johnnydee',
31+
username: 'johnnydee',
3132
name: 'John Doe',
3233
3334
avatar: 'https://avatars2.githubusercontent.com/u/12345?v=4',

e2e/acceptance/settings/add-owner.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ test.describe('Acceptance | Settings | Add Owner', { tag: '@acceptance' }, () =>
2929
await page.click('[data-test-save-button]');
3030

3131
await expect(page.locator('[data-test-notification-message="error"]')).toHaveText(
32-
'Error sending invite: could not find user with login `spookyghostboo`',
32+
'Error sending invite: could not find user with username `spookyghostboo`',
3333
);
3434
await expect(page.locator('[data-test-owners] [data-test-owner-team]')).toHaveCount(2);
3535
await expect(page.locator('[data-test-owners] [data-test-owner-user]')).toHaveCount(2);

e2e/acceptance/settings/remove-owner.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ test.describe('Acceptance | Settings | Remove Owner', { tag: '@acceptance' }, ()
3737
await msw.worker.use(http.delete('/api/v1/crates/nanomsg/owners', () => error));
3838

3939
await page.goto(`/crates/${crate.name}/settings`);
40-
await page.click(`[data-test-owner-user="${user2.login}"] [data-test-remove-owner-button]`);
40+
await page.click(`[data-test-owner-user="${user2.username}"] [data-test-remove-owner-button]`);
4141

4242
await expect(page.locator('[data-test-notification-message="error"]')).toHaveText(
43-
`Failed to remove the user ${user2.login} as crate owner: nope`,
43+
`Failed to remove the user ${user2.username} as crate owner: nope`,
4444
);
4545
await expect(page.locator('[data-test-owner-user]')).toHaveCount(2);
4646
});
@@ -62,7 +62,7 @@ test.describe('Acceptance | Settings | Remove Owner', { tag: '@acceptance' }, ()
6262
await msw.worker.use(http.delete('/api/v1/crates/nanomsg/owners', () => error));
6363

6464
await page.goto(`/crates/${crate.name}/settings`);
65-
await page.click(`[data-test-owner-team="${team1.login}"] [data-test-remove-owner-button]`);
65+
await page.click(`[data-test-owner-team="${team1.username}"] [data-test-remove-owner-button]`);
6666

6767
await expect(page.locator('[data-test-notification-message="error"]')).toHaveText(
6868
`Failed to remove the team ${team1.org}/${team1.name} as crate owner: nope`,

e2e/acceptance/sudo.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
55
async function prepare(msw, { isAdmin = false } = {}) {
66
let user = msw.db.user.create({
77
login: 'johnnydee',
8+
username: 'johnnydee',
89
name: 'John Doe',
910
1011
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',

e2e/routes/settings/tokens/index.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ test.describe('/settings/tokens', { tag: '@routes' }, () => {
44
test('reloads all tokens from the server', async ({ page, msw }) => {
55
let user = msw.db.user.create({
66
login: 'johnnydee',
7+
username: 'johnnydee',
78
name: 'John Doe',
89
910
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',

e2e/routes/settings/tokens/new.spec.ts

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ test.describe('/settings/tokens/new', { tag: '@routes' }, () => {
66
async function prepare(msw) {
77
let user = msw.db.user.create({
88
login: 'johnnydee',
9+
username: 'johnnydee',
910
name: 'John Doe',
1011
1112
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',

packages/crates-io-msw/fixtures/teams.js

+2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ export default [
33
avatar: 'https://avatars.githubusercontent.com/u/565790?v=3',
44
id: 1,
55
login: 'github:org:thehydroimpulse',
6+
username: 'github:org:thehydroimpulse',
67
name: 'thehydroimpulseteam',
78
url: 'https://github.com/org_test',
89
},
910
{
1011
avatar: 'https://avatars.githubusercontent.com/u/9447137?v=3',
1112
id: 303,
1213
login: 'github:org:blabaere',
14+
username: 'github:org:blabaere',
1315
name: 'Team Benoît Labaere',
1416
url: 'https://github.com/blabaere',
1517
},

packages/crates-io-msw/fixtures/users.js

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export default [
44
email: null,
55
id: 303,
66
login: 'blabaere',
7+
username: 'blabaere',
78
name: 'Benoît Labaere',
89
url: 'https://github.com/blabaere',
910
},
@@ -12,6 +13,7 @@ export default [
1213
1314
id: 2,
1415
login: 'thehydroimpulse',
16+
username: 'thehydroimpulse',
1517
name: 'Daniel Fagnan',
1618
url: 'https://github.com/thehydroimpulse',
1719
},
@@ -20,6 +22,7 @@ export default [
2022
2123
id: 10_982,
2224
login: 'iain8',
25+
username: 'iain8',
2326
name: 'Iain Buchanan',
2427
url: 'https://github.com/iain8',
2528
},

packages/crates-io-msw/handlers/crates/add-owners.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,25 @@ export default http.put('/api/v1/crates/:name/owners', async ({ request, params
2020
let users = [];
2121
let teams = [];
2222
let msgs = [];
23-
for (let login of body.owners) {
24-
if (login.includes(':')) {
25-
let team = db.team.findFirst({ where: { login: { equals: login } } });
23+
for (let username of body.owners) {
24+
if (username.includes(':')) {
25+
let team = db.team.findFirst({ where: { username: { equals: username } } });
2626
if (!team) {
27-
let errorMessage = `could not find team with login \`${login}\``;
27+
let errorMessage = `could not find team with username \`${username}\``;
2828
return HttpResponse.json({ errors: [{ detail: errorMessage }] }, { status: 404 });
2929
}
3030

3131
teams.push(team);
32-
msgs.push(`team ${login} has been added as an owner of crate ${crate.name}`);
32+
msgs.push(`team ${username} has been added as an owner of crate ${crate.name}`);
3333
} else {
34-
let user = db.user.findFirst({ where: { login: { equals: login } } });
34+
let user = db.user.findFirst({ where: { username: { equals: username } } });
3535
if (!user) {
36-
let errorMessage = `could not find user with login \`${login}\``;
36+
let errorMessage = `could not find user with username \`${username}\``;
3737
return HttpResponse.json({ errors: [{ detail: errorMessage }] }, { status: 404 });
3838
}
3939

4040
users.push(user);
41-
msgs.push(`user ${login} has been invited to be an owner of crate ${crate.name}`);
41+
msgs.push(`user ${username} has been invited to be an owner of crate ${crate.name}`);
4242
}
4343
}
4444

packages/crates-io-msw/handlers/crates/add-owners.test.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ test('can add new owner', async function () {
3030

3131
let user2 = db.user.create();
3232

33-
let body = JSON.stringify({ owners: [user2.login] });
33+
let body = JSON.stringify({ owners: [user2.username] });
3434
let response = await fetch('/api/v1/crates/foo/owners', { method: 'PUT', body });
3535
assert.strictEqual(response.status, 200);
3636
assert.deepEqual(await response.json(), {
@@ -57,7 +57,7 @@ test('can add team owner', async function () {
5757

5858
let team = db.team.create();
5959

60-
let body = JSON.stringify({ owners: [team.login] });
60+
let body = JSON.stringify({ owners: [team.username] });
6161
let response = await fetch('/api/v1/crates/foo/owners', { method: 'PUT', body });
6262
assert.strictEqual(response.status, 200);
6363
assert.deepEqual(await response.json(), {
@@ -87,7 +87,7 @@ test('can add multiple owners', async function () {
8787
let user2 = db.user.create();
8888
let user3 = db.user.create();
8989

90-
let body = JSON.stringify({ owners: [user2.login, team.login, user3.login] });
90+
let body = JSON.stringify({ owners: [user2.username, team.username, user3.username] });
9191
let response = await fetch('/api/v1/crates/foo/owners', { method: 'PUT', body });
9292
assert.strictEqual(response.status, 200);
9393
assert.deepEqual(await response.json(), {

packages/crates-io-msw/handlers/crates/remove-owners.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ export default http.delete('/api/v1/crates/:name/owners', async ({ request, para
1919

2020
for (let owner of body.owners) {
2121
let ownership = db.crateOwnership.findFirst({
22-
where: owner.includes(':') ? { team: { login: { equals: owner } } } : { user: { login: { equals: owner } } },
22+
where: owner.includes(':')
23+
? { team: { username: { equals: owner } } }
24+
: { user: { username: { equals: owner } } },
2325
});
2426
if (!ownership) return notFound();
2527
db.crateOwnership.delete({ where: { id: { equals: ownership.id } } });

0 commit comments

Comments
 (0)