fix(ui): keep the count in a partial badge that can act
A control is named after what activating it does, so an actionable badge said "Request album X" — and `partial` is actionable, because an album you hold nine of twelve tracks of has three left to ask for. That made the one state the ring exists for the one state whose name did not mention it. The argument the `partial` branch already carries does not stop applying because the badge became clickable: a ring says "some" to a sighted user and nothing to anyone else. The name is now the action and the count.
This commit is contained in:
@@ -77,3 +77,30 @@ describe('the library status badge', () => {
|
||||
expect(name).toContain('Glass Harbour');
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* A partly-held album is the one state that is *actionable and
|
||||
* counted*: there are tracks left to ask for, so the badge is a button
|
||||
* — and a control is named after what activating it does, which is how
|
||||
* the count came to be dropped from exactly the state the ring exists
|
||||
* for. Both, or the ring says "some" to an eye and nothing to anyone
|
||||
* else.
|
||||
*/
|
||||
describe('a partial badge that can act', () => {
|
||||
it('names the action and keeps the count', async () => {
|
||||
const el = await fixture('library-status-indicator', {
|
||||
status: 'partial',
|
||||
owned: 9,
|
||||
expected: 12,
|
||||
entityType: 'album',
|
||||
label: 'Glass Harbour',
|
||||
requestMbid: 'rg-1',
|
||||
});
|
||||
|
||||
const name = shadow(el, '.badge')?.getAttribute('aria-label') ?? '';
|
||||
|
||||
expect(shadow(el, 'button.badge')).not.toBeNull();
|
||||
expect(name).toContain('Request the rest of');
|
||||
expect(name).toContain('9 of 12');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user