From 2be4f22773a16b77e1199eae5846573c230090b9 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 19 Jul 2025 11:51:33 +0100 Subject: [PATCH] Added tests for `FindAndReturnChildrenAsItems` --- UnitTests/Tests/Extensions/ItemTests.cs | 162 ++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 UnitTests/Tests/Extensions/ItemTests.cs diff --git a/UnitTests/Tests/Extensions/ItemTests.cs b/UnitTests/Tests/Extensions/ItemTests.cs new file mode 100644 index 00000000..7c333b60 --- /dev/null +++ b/UnitTests/Tests/Extensions/ItemTests.cs @@ -0,0 +1,162 @@ +using SPTarkov.Server.Core.Extensions; +using SPTarkov.Server.Core.Models.Common; +using SPTarkov.Server.Core.Models.Eft.Common.Tables; + +namespace UnitTests.Tests.Extensions +{ + [TestClass] + public class ItemTests + { + [TestInitialize] + public void Initialize() { } + + [TestMethod] + public void FindAndReturnChildrenAsItems_one_child_mods_only() + { + var testData = new List(); + var rootItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMOBOX_127X33_COPPER_20RND, + }; + var childItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_127X33_COPPER, + ParentId = rootItem.Id, + }; + testData.Add(rootItem); + testData.Add(childItem); + + var result = testData.FindAndReturnChildrenAsItems(rootItem.Id, true); + + Assert.AreEqual(result[1].Id, childItem.Id); + } + + [TestMethod] + public void FindAndReturnChildrenAsItems_mods_only_one_inventory_item() + { + var testData = new List(); + var rootItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMOBOX_127X33_COPPER_20RND, + }; + var childItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_127X33_COPPER, + ParentId = rootItem.Id, + Location = 1, + }; + var childItem2 = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_26X75_GREEN, + ParentId = rootItem.Id, + }; + testData.Add(rootItem); + testData.Add(childItem); + testData.Add(childItem2); + + var result = testData.FindAndReturnChildrenAsItems(rootItem.Id, true); + + Assert.AreEqual(result[1].Id, childItem2.Id); + Assert.AreEqual(result.Count, 2); + } + + [TestMethod] + public void FindAndReturnChildrenAsItems_mods_and_inventory_item() + { + var testData = new List(); + var rootItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMOBOX_127X33_COPPER_20RND, + }; + var childItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_127X33_COPPER, + ParentId = rootItem.Id, + Location = 1, + }; + var childItem2 = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_26X75_GREEN, + ParentId = rootItem.Id, + }; + testData.Add(rootItem); + testData.Add(childItem); + testData.Add(childItem2); + + var result = testData.FindAndReturnChildrenAsItems(rootItem.Id, false); + + Assert.AreEqual(result[1].Id, childItem.Id); + Assert.AreEqual(result.Count, 3); + } + + [TestMethod] + public void FindAndReturnChildrenAsItems_mod_with_child() + { + var testData = new List(); + var rootItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMOBOX_127X33_COPPER_20RND, + }; + var childItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_127X33_COPPER, + ParentId = rootItem.Id, + }; + var childOfChild = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_26X75_GREEN, + ParentId = childItem.Id, + }; + testData.Add(rootItem); + testData.Add(childItem); + testData.Add(childOfChild); + + var result = testData.FindAndReturnChildrenAsItems(rootItem.Id, true); + + Assert.AreEqual(result[1].Id, childItem.Id); + Assert.AreEqual(result.Count, 3); + } + + [TestMethod] + public void FindAndReturnChildrenAsItems_no_matching_children() + { + var testData = new List(); + var rootItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMOBOX_127X33_COPPER_20RND, + }; + var childItem = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_127X33_COPPER, + ParentId = new MongoId(), + }; + var childOfChild = new Item + { + Id = new MongoId(), + Template = ItemTpl.AMMO_26X75_GREEN, + ParentId = childItem.Id, + }; + testData.Add(rootItem); + testData.Add(childItem); + testData.Add(childOfChild); + + var result = testData.FindAndReturnChildrenAsItems(rootItem.Id, true); + + Assert.AreEqual(result[0].Id, rootItem.Id); + Assert.AreEqual(result.Count, 1); + } + } +}