diff --git a/src/Mindee/Parsing/ShippingContainer/ShippingContainerV1Prediction.cs b/src/Mindee/Parsing/ShippingContainer/ShippingContainerV1Prediction.cs new file mode 100644 index 00000000..cb48bc26 --- /dev/null +++ b/src/Mindee/Parsing/ShippingContainer/ShippingContainerV1Prediction.cs @@ -0,0 +1,46 @@ +using System.Text; +using System.Text.Json.Serialization; +using Mindee.Parsing.Common; + +namespace Mindee.Parsing.ShippingContainer +{ + /// + /// The shipping container model for the v1. + /// + [Endpoint("shipping_containers", "1")] + public sealed class ShippingContainerV1Prediction : PredictionBase + { + /// + /// ISO 6346 code for container owner prefix + equipment identifier. + /// + [JsonPropertyName("owner")] + public StringField Owner { get; set; } + + /// + /// ISO 6346 code for container serial number (6+1 digits). + /// + [JsonPropertyName("serial_number")] + public StringField SerialNumber { get; set; } + + /// + /// ISO 6346 code for container length, height and type. + /// + [JsonPropertyName("size_type")] + public StringField SizeType { get; set; } + + /// + /// A prettier reprensentation of the current model values. + /// + public override string ToString() + { + StringBuilder result = new StringBuilder("----- Shipping Container V1 -----\n"); + result.Append($"Owner: {Owner.Value}\n"); + result.Append($"Serial number: {SerialNumber.Value}\n"); + result.Append($"Size and type: {SizeType.Value}\n"); + + result.Append("----------------------\n"); + + return SummaryHelper.Clean(result.ToString()); + } + } +} diff --git a/tests/Mindee.UnitTests/Parsing/ShippingContainer/ShippingContainerV1Test.cs b/tests/Mindee.UnitTests/Parsing/ShippingContainer/ShippingContainerV1Test.cs new file mode 100644 index 00000000..93826f07 --- /dev/null +++ b/tests/Mindee.UnitTests/Parsing/ShippingContainer/ShippingContainerV1Test.cs @@ -0,0 +1,36 @@ +using Mindee.Parsing; +using Mindee.Parsing.ShippingContainer; + +namespace Mindee.UnitTests.Parsing.ShippingContainer +{ + [Trait("Category", "Shipping Container")] + public class ShippingContainerV1Test + { + [Fact] + public async Task Predict_CheckSummary() + { + var mindeeAPi = GetMindeeApiForCarteVitale(); + var prediction = await mindeeAPi.PredictAsync(ParsingTestBase.GetFakePredictParameter()); + + var expected = File.ReadAllText("Resources/shipping_container/response_v1/doc_to_string.txt"); + + Assert.Equal( + CleaningResult(expected), + prediction.Inference.Prediction.ToString()); + } + + private string CleaningResult(string expectedSummary) + { + var indexFilename = expectedSummary.IndexOf("Filename"); + var indexFilenameEOL = expectedSummary.IndexOf("\n", indexFilename); + string cleanedSummary = expectedSummary.Remove(indexFilename, indexFilenameEOL - indexFilename + 1); + + return cleanedSummary; + } + + private MindeeApi GetMindeeApiForCarteVitale(string fileName = "Resources/shipping_container/response_v1/complete.json") + { + return ParsingTestBase.GetMindeeApi(fileName); + } + } +} diff --git a/tests/resources b/tests/resources index b1f50651..064cd8cf 160000 --- a/tests/resources +++ b/tests/resources @@ -1 +1 @@ -Subproject commit b1f506519ab10714cc19223457697fd09099a467 +Subproject commit 064cd8cf849aa2743aba3f41958516dd0e571bbc