import { describe, expect, it } from 'vitest';

import { buildListPrintDocument, getListPrintTotalPages, validateListPrintPageRange } from '../helpers/listPrint';

describe('listPrint', () => {
  it('calculates at least one page', () => {
    expect(getListPrintTotalPages(0, 20)).toBe(1);
    expect(getListPrintTotalPages(46, 20)).toBe(3);
  });

  it('validates the selected page range', () => {
    expect(validateListPrintPageRange(1, 3, 3)).toBe('');
    expect(validateListPrintPageRange(0, 1, 3)).toContain('起始页');
    expect(validateListPrintPageRange(3, 2, 3)).toContain('结束页');
    expect(validateListPrintPageRange(1, 4, 3)).toContain('总页数 3');
  });

  it('builds escaped, paged print html', () => {
    const html = buildListPrintDocument({
      columns: [{ field: 'name', title: '样品名称' }],
      direction: 'landscape',
      pageSize: 20,
      pages: [{ pageNumber: 2, rows: [{ name: '<样品>' }] }],
      paperType: 'A3',
      title: '样品接收与检验台账',
      total: 46,
    });

    expect(html).toContain('@page { size: A3 landscape;');
    expect(html).toContain('第 2 页 / 共 3 页');
    expect(html).toContain('&lt;样品&gt;');
    expect(html).toContain('<td class="sequence-column">21</td>');
  });
});
