<?php

declare(strict_types=1);

use App\Services\Reports\Formatters\XlsxFormatter;
use PhpOffice\PhpSpreadsheet\IOFactory;

// F-CSV (wide): XLSX опаснее CSV — Excel вычисляет формулу из ведущего «=» без
// предупреждения. Опасные строки пишем как явный текст (TYPE_STRING),
// числа остаются числами.

it('пишет formula-строку как текст, число оставляет числом', function () {
    $content = (new XlsxFormatter)->format(
        ['Контакт', 'Сумма'],
        [['=1+1', 1500]],
    );

    $tmp = tempnam(sys_get_temp_dir(), 'xlsxguard').'.xlsx';
    file_put_contents($tmp, $content);
    $sheet = IOFactory::load($tmp)->getActiveSheet();

    // A2 — опасная строка: хранится как литеральный текст, НЕ как формула
    expect($sheet->getCell('A2')->getValue())->toBe('=1+1');
    expect($sheet->getCell('A2')->getDataType())->toBe('s');
    // B2 — число остаётся числом
    expect($sheet->getCell('B2')->getValue())->toBe(1500);

    @unlink($tmp);
});
