using Microsoft.Extensions.DependencyInjection; using RhSolutions.AddIn; namespace RhSolutions.Tests; [ExcelTestSettings(OutOfProcess = true)] public class CanReadProducts : IDisposable { private RhSolutionsAddIn _addIn; private IReader _reader; private Workbook _testWorkbook; public CanReadProducts() { _addIn = new(); _testWorkbook = Util.Application.Workbooks.Add(); _addIn.AutoOpen(); _reader = new ExcelReader(Util.Application, RhSolutionsAddIn.Configuration); } [ExcelFact] public void CanReadRange() { Worksheet worksheet = _testWorkbook.Sheets[1]; worksheet.Range["A1"].Value = "11600011001"; worksheet.Range["A2"].Value = "11600011001"; worksheet.Range["A3"].Value = "160002-001"; worksheet.Range["A4"].Value = "Fuzz"; worksheet.Range["B1"].Value = 10; worksheet.Range["B2"].Value = 10; worksheet.Range["B3"].Value = 5; worksheet.Range["B5"].Value = 1000_000; worksheet.Range["A6"].Value = "111111-111"; worksheet.Range["B6"].Value = 100; Range testRange = worksheet.Range["A1:B6"]; var products = _reader.ReadProducts(testRange); Assert.NotNull(products); Assert.NotEmpty(products); Assert.Equal("11600011001", products.First().Key.ProductSku?.ToString()); Assert.Equal(20.0, products.First().Value); Assert.Equal(125.0, products.Sum(p => p.Value)); Assert.Equal(3, products.Count()); } [ExcelFact(Workbook = @"..\..\..\TestWorkbooks\TestSpecification.xlsx")] public void CanReadWorkbook() { Worksheet worksheet = Util.Workbook.Worksheets[1]; var result = _reader.ReadProducts(new[] { worksheet }); Assert.NotNull(result); Assert.NotEmpty(result); Assert.Equal("TestSpecification", result.First().Item1); var products = result.First().Item2; Assert.Equal(46, products.Count()); Assert.Equal(29266, products.Sum(p => p.Value)); } public void Dispose() { _addIn.AutoClose(); Util.Application.ActiveWindow.Close(SaveChanges: false); } }