Skip to content

Commit 6b1b5e7

Browse files
authored
Merge pull request #11927 from Turbo87/tooltip-whitespace
settings/tokens: Fix scope list formatting
2 parents 06e6eef + 2abd070 commit 6b1b5e7

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

app/components/tooltip.gjs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,12 @@ export default class Tooltip extends Component {
6464
return () => cleanup();
6565
});
6666

67+
// The `{{~@x~}}` is used for whitespace control to ensure we don't insert a leading whitespace element
6768
<template>
69+
{{~@x~}}
6870
<span class='anchor' {{this.onInsertAnchor this}} />
6971

70-
{{#if this.visible}}
72+
{{~#if this.visible}}
7173
{{#in-element this.containerElement}}
7274
<div class='tooltip' ...attributes {{this.attachTooltip this side=@side}}>
7375
{{#if (has-block)}}
@@ -77,6 +79,6 @@ export default class Tooltip extends Component {
7779
{{/if}}
7880
</div>
7981
{{/in-element}}
80-
{{/if}}
82+
{{/if~}}
8183
</template>
8284
}

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,29 @@ test.describe('/settings/tokens', { tag: '@routes' }, () => {
2828
await expect(tokens[1].locator('[data-test-name]')).toHaveText('token-1');
2929
await expect(tokens[1].locator('[data-test-token]')).toHaveCount(0);
3030
});
31+
32+
test('scope formatting', async ({ page, msw }) => {
33+
let user = msw.db.user.create({
34+
login: 'johnnydee',
35+
name: 'John Doe',
36+
37+
avatar: 'https://avatars2.githubusercontent.com/u/1234567?v=4',
38+
});
39+
40+
await msw.authenticateAs(user);
41+
42+
msw.db.apiToken.create({
43+
user,
44+
endpointScopes: ['publish-new', 'publish-update', 'yank'],
45+
crateScopes: ['serde', 'serde-*', 'serde_*'],
46+
});
47+
48+
await page.goto('/settings/tokens');
49+
await expect(page).toHaveURL('/settings/tokens');
50+
await expect(page.locator('[data-test-api-token]')).toHaveCount(1);
51+
await expect(page.locator('[data-test-endpoint-scopes]')).toHaveText(
52+
'Scopes: publish-new, publish-update, and yank',
53+
);
54+
await expect(page.locator('[data-test-crate-scopes]')).toHaveText('Crates: serde, serde-*, and serde_*');
55+
});
3156
});

tests/routes/settings/tokens/index-test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,20 @@ module('/settings/tokens', function (hooks) {
4141
assert.dom('[data-test-name]', tokens[1]).hasText('token-1');
4242
assert.dom('[data-test-token]', tokens[1]).doesNotExist();
4343
});
44+
45+
test('scope formatting', async function (assert) {
46+
let { user } = prepare(this);
47+
48+
this.db.apiToken.create({
49+
user,
50+
endpointScopes: ['publish-new', 'publish-update', 'yank'],
51+
crateScopes: ['serde', 'serde-*', 'serde_*'],
52+
});
53+
54+
await visit('/settings/tokens');
55+
assert.strictEqual(currentURL(), '/settings/tokens');
56+
assert.dom('[data-test-api-token]').exists({ count: 1 });
57+
assert.dom('[data-test-endpoint-scopes]').hasText('Scopes: publish-new, publish-update, and yank');
58+
assert.dom('[data-test-crate-scopes]').hasText('Crates: serde, serde-*, and serde_*');
59+
});
4460
});

0 commit comments

Comments
 (0)