ATProto social network
Something went wrong. Try again.
1.8 kB · 57 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import { describe, it, expect } from 'vitest';import { render, screen } from '@testing-library/svelte';import LinkBlock from './LinkBlock.svelte';import type { LinkBlock as LinkBlockType } from '$lib/types/content-blocks';
describe('LinkBlock', () => { it('renders a link with href', () => { const block: LinkBlockType = { $type: 'at.riven.block.link', uri: 'https://example.com/page' }; render(LinkBlock, { props: { block } }); const el = screen.getByTestId('link-block'); expect(el.tagName).toBe('A'); expect(el).toHaveAttribute('href', 'https://example.com/page'); });
it('opens in new tab', () => { const block: LinkBlockType = { $type: 'at.riven.block.link', uri: 'https://example.com' }; render(LinkBlock, { props: { block } }); const el = screen.getByTestId('link-block'); expect(el).toHaveAttribute('target', '_blank'); expect(el).toHaveAttribute('rel', expect.stringContaining('noopener')); });
it('displays title when provided', () => { const block: LinkBlockType = { $type: 'at.riven.block.link', uri: 'https://example.com', title: 'Example Page' }; render(LinkBlock, { props: { block } }); expect(screen.getByText('Example Page')).toBeTruthy(); });
it('displays description when provided', () => { const block: LinkBlockType = { $type: 'at.riven.block.link', uri: 'https://example.com', description: 'A great website' }; render(LinkBlock, { props: { block } }); expect(screen.getByText('A great website')).toBeTruthy(); });
it('extracts domain from URI', () => { const block: LinkBlockType = { $type: 'at.riven.block.link', uri: 'https://www.example.com/page/123' }; render(LinkBlock, { props: { block } }); expect(screen.getByText('example.com')).toBeTruthy(); });});