File size: 1,639 Bytes
766d85d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// FE-COMP-JOURNALBODY-001 to FE-COMP-JOURNALBODY-005

import { describe, it, expect } from 'vitest';
import { render, screen } from '../../../tests/helpers/render';
import JournalBody from './JournalBody';

describe('JournalBody', () => {
  it('FE-COMP-JOURNALBODY-001: renders plain text content', () => {
    render(<JournalBody text="Hello traveller" />);
    expect(screen.getByText('Hello traveller')).toBeInTheDocument();
  });

  it('FE-COMP-JOURNALBODY-002: renders bold markdown as <strong>', () => {
    const { container } = render(<JournalBody text="This is **bold** text" />);
    const strong = container.querySelector('strong');
    expect(strong).toBeInTheDocument();
    expect(strong!.textContent).toBe('bold');
  });

  it('FE-COMP-JOURNALBODY-003: renders links with target _blank', () => {
    render(<JournalBody text="[Visit](https://example.com)" />);
    const link = screen.getByRole('link', { name: 'Visit' });
    expect(link).toHaveAttribute('href', 'https://example.com');
    expect(link).toHaveAttribute('target', '_blank');
    expect(link).toHaveAttribute('rel', 'noopener noreferrer');
  });

  it('FE-COMP-JOURNALBODY-004: renders headings with proper elements', () => {
    const { container } = render(<JournalBody text="## Section Title" />);
    const p = container.querySelector('p');
    expect(p).toBeInTheDocument();
    expect(p!.textContent).toBe('Section Title');
  });

  it('FE-COMP-JOURNALBODY-005: handles empty text without crashing', () => {
    const { container } = render(<JournalBody text="" />);
    expect(container.querySelector('.journal-body')).toBeInTheDocument();
  });
});