using System.IO;
using System.Linq;
using FluentAssertions;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OfficeOpenXml;

namespace NetCoreTests;

[TestClass]
public class ExcelPackageTest
{
    [TestMethod]
    public void TestGetAsByteArray()
    {
        var package = new ExcelPackage(new FileInfo(GetTestWorkbookPath("Times.xlsx")));
        var data = package.GetAsByteArray();
        
        // Verify that we can reload
        var newPackage = new ExcelPackage(new MemoryStream(data, false));
        newPackage.Workbook.Worksheets.Count.Should().Be(1);
        var worksheet = newPackage.Workbook.Worksheets.First();
        worksheet.Name.Should().Be("Times_csv");
    }
    
    private static string GetTestWorkbookPath(string filename)
    {
        var assemblyPath = Path.GetDirectoryName(typeof(ExcelPackageTest).Assembly.Location)!;
        return Path.Combine(assemblyPath, "TestWorkbooks", filename);
    }
}