Compare commits

...

4 Commits

Author SHA1 Message Date
Sergey Chebotar
aca468c015 Add Workbook read tests 2023-05-16 18:05:35 +03:00
Sergey Chebotar
ade18e5e40 Extend missing product information on table fill 2023-05-16 18:02:32 +03:00
Sergey Chebotar
b06df453d2 Fix null reference exception on empty measure field. 2023-05-16 17:59:45 +03:00
Sergey Chebotar
786a5bfe26 Fix empty ProductLines field exception on writing 2023-05-16 17:04:30 +03:00
6 changed files with 19 additions and 17 deletions

View File

@ -60,7 +60,10 @@ public class ExcelReader : IReader, IDisposable
continue;
}
Product product = new(currentSku);
Product product = new(currentSku)
{
Name = $"Распознанный артикул"
};
if (readResult.ContainsKey(product))
{
@ -110,7 +113,7 @@ public class ExcelReader : IReader, IDisposable
object name = worksheet.Cells[row, NameCell.Column].Value2;
object sku = worksheet.Cells[row, SkuCell.Column].Value2;
object measure = worksheet.Cells[row, MeasureCell.Column].Value2;
var productMeasure = measure.ToString() switch
var productMeasure = measure?.ToString() switch
{
"м" => Measure.M,
"шт" => Measure.P,

View File

@ -167,6 +167,7 @@ public class ExcelWriter : IWriter, IDisposable
int skuColumn = _skuCell.Column;
int groupColumn = _programLineCell.Column;
int nameColumn = _nameCell.Column;
Product product = positionAmount.Key;
int row = worksheetCells[worksheetRows.Count, skuColumn]
.End[XlDirection.xlUp]
@ -182,18 +183,13 @@ public class ExcelWriter : IWriter, IDisposable
previous.Copy(current);
current.ClearContents();
worksheetCells[row, groupColumn].Value2 = positionAmount.Key.ProductLines.First();
worksheetCells[row, nameColumn].Value2 = positionAmount.Key.Name;
worksheetCells[row, groupColumn].Value2 = product.ProductLines.FirstOrDefault() ?? string.Empty;
worksheetCells[row, nameColumn].Value2 = $"{product.Name} не найден ({product.ProductSku})";
worksheetCells[row, skuColumn].Value2 = "???";
if (_oldSkuCell != null)
{
worksheetCells[row, skuColumn].Value2 = "Не найден";
worksheetCells[row, _oldSkuCell.Column].Value2 = positionAmount.Key.ProductSku;
}
else
{
worksheetCells[row, skuColumn].Value2 = positionAmount.Key.ProductSku;
worksheetCells[row, _oldSkuCell.Column].Value2 = product.ProductSku;
}
foreach (int column in columns)

View File

@ -45,14 +45,17 @@ public class CanReadProducts : IDisposable
Assert.Equal(3, products.Count());
}
[ExcelFact(Workbook = @"TestWorkbooks\Specifications\HeatingFloor.xlsx")]
[ExcelFact(Workbook = @"TestWorkbooks\TestSpecificaion.xlsx")]
public void CanReadWorkbook()
{
Worksheet worksheet = Util.Workbook.Worksheets[1];
var products = _reader.ReadProducts(new[] { worksheet });
Assert.NotNull(products);
Assert.NotEmpty(products);
var result = _reader.ReadProducts(new[] { worksheet });
Assert.NotNull(result);
Assert.NotEmpty(result);
Assert.Equal("TestSpecificaion", result.First().Item1);
var products = result.First().Item2;
Assert.Equal(46, products.Count());
Assert.Equal(29266, products.Sum(p => p.Value));
}
public void Dispose()

View File

@ -27,7 +27,7 @@
<None Update="TestWorkbooks\ExcelTableTest.xlsx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="TestWorkbooks\Specifications\HeatingFloor.xlsx">
<None Update="TestWorkbooks\TestSpecificaion.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

Binary file not shown.