aboutsummaryrefslogtreecommitdiff
path: root/RhSolutions.Tests/CanReadProducts.cs
blob: 84de589f8f436f6b679718158599ac205dd578a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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()
    {
        Environment.SetEnvironmentVariable("ISTESTING", "true");
        _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);
    }
}