625fc3135a
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 10s
CI / integration (pull_request) Successful in 19s
CI / ui (pull_request) Successful in 1m9s
CI / conformance (pull_request) Successful in 9s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m41s
The offer is the legal document a purchase accepts, needed before real-money intake goes live. Convert the source PDF to an editable ui/legal/offer_ru.md and render it to a standalone static dist/offer/index.html at build (a vite emit-offer plugin using marked); the landing container serves it at /offer/, with a bare /offer redirecting in. Add a small centered "Публичная оферта" footer link on the landing (ru/en) and a CI probe asserting /offer/ serves the page rather than silently falling through to the landing shell.
24 lines
1.2 KiB
TypeScript
24 lines
1.2 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { renderOfferHtml } from './offer';
|
|
|
|
describe('renderOfferHtml', () => {
|
|
it('wraps rendered markdown in a standalone Russian HTML document', () => {
|
|
const html = renderOfferHtml('# Публичная оферта\n\nо заключении договора купли-продажи');
|
|
expect(html).toContain('<!doctype html>');
|
|
expect(html).toContain('lang="ru"');
|
|
expect(html).toContain('<title>Публичная оферта — Эрудит</title>');
|
|
// The markdown heading is rendered, not left as literal source.
|
|
expect(html).toContain('<h1>Публичная оферта</h1>');
|
|
expect(html).not.toContain('# Публичная оферта');
|
|
// A back link to the landing root is always present.
|
|
expect(html).toContain('href="/"');
|
|
});
|
|
|
|
it('renders headings, bold clause numbers and lists', () => {
|
|
const html = renderOfferHtml('## 2. Предмет\n\n**2.1.** Текст пункта.\n\n- первый\n- второй');
|
|
expect(html).toContain('<h2>2. Предмет</h2>');
|
|
expect(html).toContain('<strong>2.1.</strong>');
|
|
expect(html).toContain('<li>первый</li>');
|
|
});
|
|
});
|