using JdeScoping.ExcelIO.Tests.Fixtures; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using Shouldly; using Xunit; namespace JdeScoping.ExcelIO.Tests.Integration; public class MisInfoSheetTests : IClassFixture { private readonly XSSFWorkbook _workbook; private readonly ISheet _sheet; private readonly List _headers; public MisInfoSheetTests(WithMisDataFixture fixture) { _workbook = fixture.Workbook; _sheet = _workbook.GetSheet("MIS Info")!; _headers = ExcelTestHelpers.GetHeadersFromSheet(_sheet); } [Fact] public void SheetCount_IsFour() { _workbook.NumberOfSheets.ShouldBe(4); } [Fact] public void MisInfoSheet_Exists() { _workbook.GetSheet("MIS Info").ShouldNotBeNull(); } [Fact] public void ColumnCount_Is19() { _headers.Count.ShouldBe(19); } [Fact] public void ColumnHeaders_MatchExpected() { _headers.ShouldContain("Item Number"); _headers.ShouldContain("MIS Job Step Sequence Number"); _headers.ShouldContain("MIS Number"); _headers.ShouldContain("MIS Revision"); _headers.ShouldContain("Item Description"); _headers.ShouldContain("MIS Release Status"); _headers.ShouldContain("MIS Release Date"); _headers.ShouldContain("Branch Code"); _headers.ShouldContain("Job Step Sequence Number"); _headers.ShouldContain("Matched Sequence Number"); _headers.ShouldContain("Matched to F3112Z1?"); _headers.ShouldContain("Matched to F3003?"); _headers.ShouldContain("Function Operation Description"); _headers.ShouldContain("Char Number"); _headers.ShouldContain("Test Description"); _headers.ShouldContain("Sampling Type"); _headers.ShouldContain("Sampling Value"); _headers.ShouldContain("Tools & Gauges"); _headers.ShouldContain("Work Instructions"); } [Fact] public void ColumnOrder_MatchesSpec() { _headers[0].ShouldBe("Item Number"); _headers[1].ShouldBe("MIS Job Step Sequence Number"); _headers[2].ShouldBe("MIS Number"); _headers[3].ShouldBe("MIS Revision"); _headers[4].ShouldBe("Item Description"); _headers[5].ShouldBe("MIS Release Status"); _headers[6].ShouldBe("MIS Release Date"); _headers[7].ShouldBe("Branch Code"); _headers[8].ShouldBe("Job Step Sequence Number"); _headers[9].ShouldBe("Matched Sequence Number"); _headers[10].ShouldBe("Matched to F3112Z1?"); _headers[11].ShouldBe("Matched to F3003?"); _headers[12].ShouldBe("Function Operation Description"); _headers[13].ShouldBe("Char Number"); _headers[14].ShouldBe("Test Description"); _headers[15].ShouldBe("Sampling Type"); _headers[16].ShouldBe("Sampling Value"); _headers[17].ShouldBe("Tools & Gauges"); _headers[18].ShouldBe("Work Instructions"); } [Fact] public void TableStyle_IsLight18() { var table = ExcelTestHelpers.GetFirstTable(_sheet); table.StyleName.ShouldBe("TableStyleLight18"); } [Fact] public void Protection_IsEnabled() { ((XSSFSheet)_sheet).IsSheetLocked.ShouldBeTrue(); } [Fact] public void DataRow_ContainsExpectedValues() { ExcelTestHelpers.GetCellText(_sheet, 2, 1).ShouldBe("ITEM-001"); ExcelTestHelpers.GetCellText(_sheet, 2, 3).ShouldBe("MIS-001"); } [Fact] public void TestDescriptionColumn_IsWrapped() { var colIndex = _headers.IndexOf("Test Description") + 1; ExcelTestHelpers.GetColumnWidthChars(_sheet, colIndex).ShouldBe(65); ExcelTestHelpers.GetCell(_sheet, 2, colIndex)!.CellStyle.WrapText.ShouldBeTrue(); } [Fact] public void ToolsGaugesColumn_IsWrapped() { var colIndex = _headers.IndexOf("Tools & Gauges") + 1; ExcelTestHelpers.GetColumnWidthChars(_sheet, colIndex).ShouldBe(65); ExcelTestHelpers.GetCell(_sheet, 2, colIndex)!.CellStyle.WrapText.ShouldBeTrue(); } [Fact] public void WorkInstructionsColumn_IsWrapped() { var colIndex = _headers.IndexOf("Work Instructions") + 1; ExcelTestHelpers.GetColumnWidthChars(_sheet, colIndex).ShouldBe(65); ExcelTestHelpers.GetCell(_sheet, 2, colIndex)!.CellStyle.WrapText.ShouldBeTrue(); } }