<?php
namespace Tests\Unit\Excel;
use PHPUnit\Framework\TestCase;
use YouHuJun\Tool\App\Facades\V1\Excel\ExcelFacade;
use YouHuJun\Tool\App\Exceptions\CommonException;
class ExcelFacadeWriteTest extends TestCase
{
private $columns;
private $data;
private $title;
private $saveDirectory;
private $expectedFilename;
protected function setUp(): void
{
parent::setUp();
$this->columns = [['姓名', '年龄', '城市']];
$this->data = [['张三', 25, '北京'], ['李四', 30, '上海']];
$this->title = '测试导出文件';
$tempDir = sys_get_temp_dir();
$this->saveDirectory = $tempDir . DIRECTORY_SEPARATOR . 'excel_tests_write';
$this->expectedFilename = rtrim($this->saveDirectory, '/\\') . DIRECTORY_SEPARATOR . $this->title . '.xlsx';
if (file_exists($this->expectedFilename)) {
unlink($this->expectedFilename);
}
if (is_dir($this->saveDirectory)) {
rmdir($this->saveDirectory);
}
}
protected function tearDown(): void
{
parent::tearDown();
if (file_exists($this->expectedFilename)) {
unlink($this->expectedFilename);
}
if (is_dir($this->saveDirectory)) {
rmdir($this->saveDirectory);
}
}
public function testExportExcelDataSavesFile()
{
ExcelFacade::exportExcelData($this->columns, $this->data, $this->title, $this->saveDirectory);
$this->assertFileExists($this->expectedFilename, 'Excel 文件未能成功保存到指定目录。');
}
public function testExportExcelDataThrowsExceptionWithInvalidData()
{
$columns = [[]];
$data = [['张三', 25, '北京']];
$title = '测试异常';
$this->expectException(CommonException::class);
$this->expectExceptionMessage('Excel export failed: Column headers or data is empty.');
ExcelFacade::exportExcelData($columns, $data, $title);
}
}