A curator on a person's page can now seed a timeline event from that person: a gated link to #781's /zeitstrahl/events/new?personId={id}, which prefills the person and returns to /persons/{id} on save. Hidden for a Reader. New i18n key person_add_event in de/en/es. Refs #842 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { describe, it, expect, afterEach } from 'vitest';
|
|
import { cleanup, render } from 'vitest-browser-svelte';
|
|
import PersonCard from './PersonCard.svelte';
|
|
|
|
afterEach(() => cleanup());
|
|
|
|
const PERSON_ID = '55555555-5555-5555-5555-555555555555';
|
|
|
|
const makePerson = (overrides = {}) => ({
|
|
id: PERSON_ID,
|
|
firstName: 'Karl',
|
|
lastName: 'Raddatz',
|
|
displayName: 'Karl Raddatz',
|
|
personType: 'PERSON',
|
|
...overrides
|
|
});
|
|
|
|
describe('PersonCard add-event affordance (#842)', () => {
|
|
it('shows an add-event link pre-seeded with the person to a curator (REQ-003)', () => {
|
|
render(PersonCard, { person: makePerson(), canWrite: true });
|
|
const add = document.querySelector(
|
|
'[data-testid="person-add-event"]'
|
|
) as HTMLAnchorElement | null;
|
|
expect(add).not.toBeNull();
|
|
expect(add?.getAttribute('href')).toBe(`/zeitstrahl/events/new?personId=${PERSON_ID}`);
|
|
});
|
|
|
|
it('renders no add-event link to a reader (REQ-004)', () => {
|
|
render(PersonCard, { person: makePerson(), canWrite: false });
|
|
expect(document.querySelector('[data-testid="person-add-event"]')).toBeNull();
|
|
});
|
|
});
|