Files
Joseph Doherty 1618b6664d refactor: remove unused CMS/JDE repositories and data sources
Remove legacy JDE and CMS direct-access code that is no longer used:
- Delete ICmsDataSource, IJdeDataSource interfaces
- Delete ISearchProcessor, IUpdateProcessor interfaces
- Delete IJdeRepository and ICmsRepository (all partials)
- Delete JdeRepository and CmsRepository implementations
- Delete JdeQueries and CmsQueries
- Delete JdeFileDataSource, JdeOracleDataSource
- Delete CmsFileDataSource, CmsOracleDataSource
- Remove unused methods from LotFinderRepository interfaces
- Delete associated unit tests (CmsRepositoryTests, JdeRepositoryTests)

All data sync now uses ETL pipelines via DataSync project.
2026-01-07 05:04:49 -05:00

280 lines
7.0 KiB
C#

using JdeScoping.Core.Models.SearchResults;
using Shouldly;
using Xunit;
namespace JdeScoping.DataAccess.Tests.Models;
/// <summary>
/// Unit tests for SearchResult InclusionReason property.
/// </summary>
public sealed class SearchResultTests
{
#region ManuallySpecified Priority Tests
[Fact]
public void InclusionReason_WhenManuallySpecified_ReturnsManuallySpecified()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = true,
Flagged = false,
Cardex = false,
PartsList = false,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("ManuallySpecified");
}
[Fact]
public void InclusionReason_ManuallySpecified_TakesPriorityOverFlagged()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = true,
Flagged = true,
Cardex = false,
PartsList = false,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("ManuallySpecified");
}
[Fact]
public void InclusionReason_ManuallySpecified_TakesPriorityOverCARDEX()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = true,
Flagged = false,
Cardex = true,
PartsList = false,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("ManuallySpecified");
}
[Fact]
public void InclusionReason_ManuallySpecified_TakesPriorityOverAllOtherFlags()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = true,
Flagged = true,
Cardex = true,
PartsList = true,
SplitOrder = true
};
// Act & Assert
result.InclusionReason.ShouldBe("ManuallySpecified");
}
#endregion
#region Flagged Tests
[Fact]
public void InclusionReason_WhenFlagged_ReturnsFlagged()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = false,
Flagged = true,
Cardex = false,
PartsList = false,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("Flagged");
}
[Fact]
public void InclusionReason_Flagged_TakesPriorityOverCARDEX()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = false,
Flagged = true,
Cardex = true,
PartsList = false,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("Flagged");
}
#endregion
#region CARDEX and PartsList Tests
[Fact]
public void InclusionReason_WhenCARDEXAndPartsList_ReturnsCombinedMessage()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = false,
Flagged = false,
Cardex = true,
PartsList = true,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("ComponentUsage (CARDEX + Parts List)");
}
[Fact]
public void InclusionReason_WhenOnlyCARDEX_ReturnsCARDEXMessage()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = false,
Flagged = false,
Cardex = true,
PartsList = false,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("ComponentUsage (CARDEX)");
}
[Fact]
public void InclusionReason_WhenOnlyPartsList_ReturnsPartsListMessage()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = false,
Flagged = false,
Cardex = false,
PartsList = true,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("ComponentUsage (Parts List)");
}
#endregion
#region SplitOrder Tests
[Fact]
public void InclusionReason_WhenSplitOrder_ReturnsSplitOrderMessage()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = false,
Flagged = false,
Cardex = false,
PartsList = false,
SplitOrder = true
};
// Act & Assert
result.InclusionReason.ShouldBe("Split order");
}
[Fact]
public void InclusionReason_CARDEXAndPartsList_TakePriorityOverSplitOrder()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = false,
Flagged = false,
Cardex = true,
PartsList = false,
SplitOrder = true
};
// Act & Assert
result.InclusionReason.ShouldBe("ComponentUsage (CARDEX)");
}
#endregion
#region Unknown Fallback Tests
[Fact]
public void InclusionReason_WhenNoFlagsSet_ReturnsUnknown()
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = false,
Flagged = false,
Cardex = false,
PartsList = false,
SplitOrder = false
};
// Act & Assert
result.InclusionReason.ShouldBe("UNKNOWN");
}
[Fact]
public void InclusionReason_DefaultRecord_ReturnsUnknown()
{
// Arrange
var result = new SearchResult();
// Act & Assert
result.InclusionReason.ShouldBe("UNKNOWN");
}
#endregion
#region Priority Order Verification
[Theory]
[InlineData(true, true, true, true, true, "ManuallySpecified")]
[InlineData(false, true, true, true, true, "Flagged")]
[InlineData(false, false, true, true, true, "ComponentUsage (CARDEX + Parts List)")]
[InlineData(false, false, true, false, true, "ComponentUsage (CARDEX)")]
[InlineData(false, false, false, true, true, "ComponentUsage (Parts List)")]
[InlineData(false, false, false, false, true, "Split order")]
[InlineData(false, false, false, false, false, "UNKNOWN")]
public void InclusionReason_FollowsCorrectPriorityOrder(
bool manuallySpecified,
bool flagged,
bool cardex,
bool partsList,
bool splitOrder,
string expectedReason)
{
// Arrange
var result = new SearchResult
{
ManuallySpecified = manuallySpecified,
Flagged = flagged,
Cardex = cardex,
PartsList = partsList,
SplitOrder = splitOrder
};
// Act & Assert
result.InclusionReason.ShouldBe(expectedReason);
}
#endregion
}