using static AyCode.Core.Tests.Serialization.AcSerializerModels; namespace AyCode.Core.Tests.Serialization; /// /// Helper methods for creating test data in serializer tests. /// public static class AcSerializerTestHelper { public static List CreateLongPropertyNameItems(int count) { return Enumerable.Range(0, count).Select(i => new TestClassWithLongPropertyNames { FirstProperty = $"Value1_{i}", SecondProperty = $"Value2_{i}", ThirdProperty = $"Value3_{i}", FourthProperty = $"Value4_{i}" }).ToList(); } public static List CreateMixedStringItems(int count) { return Enumerable.Range(0, count).Select(i => new TestClassWithMixedStrings { Id = i, ShortName = $"A{i % 3}", LongName = $"LongName_{i % 5}", Description = $"Description_value_{i % 7}", Tag = i % 2 == 0 ? "AB" : "XY" }).ToList(); } public static TestNestedStructure CreateNestedStructure(int level1Count, int level2Count) { return new TestNestedStructure { RootName = "RootObject", Level1Items = Enumerable.Range(0, level1Count).Select(i => new TestLevel1 { Level1Name = $"Level1_{i}", Level2Items = Enumerable.Range(0, level2Count).Select(j => new TestLevel2 { Level2Name = $"Level2_{i}_{j}", Value = $"Value_{i * level2Count + j}" }).ToList() }).ToList() }; } public static List CreateRepeatedValueItems(int count) { return Enumerable.Range(0, count).Select(i => new TestClassWithRepeatedValues { Id = i, Status = i % 3 == 0 ? "Pending" : i % 3 == 1 ? "Processing" : "Completed", Category = i % 5 == 0 ? "CategoryA" : i % 5 == 1 ? "CategoryB" : "CategoryC", Priority = i % 2 == 0 ? "High" : "Low_Priority_Value" }).ToList(); } public static List CreateNameValueItems(int uniqueCount, int reuseCount) { var items = new List(); for (int i = 0; i < uniqueCount; i++) { items.Add(new TestClassWithNameValue { Name = $"UniqueName_{i:D4}", Value = $"UniqueValue_{i:D4}" }); } for (int i = 0; i < reuseCount; i++) { items.Add(new TestClassWithNameValue { Name = $"UniqueName_{i % 10:D4}", Value = $"UniqueValue_{(i + 10) % uniqueCount:D4}" }); } return items; } public static List CreateNullableStringItems(int count) { return Enumerable.Range(0, count).Select(i => new TestClassWithNullableStrings { Id = i, RequiredName = $"Required_{i:D3}", OptionalName = i % 3 == 0 ? null : i % 3 == 1 ? "" : $"Optional_{i:D3}", Description = i % 2 == 0 ? $"Description_{i % 5:D3}" : null }).ToList(); } public static List CreateCustomerLikeItems(int count) { return Enumerable.Range(0, count).Select(i => new TestCustomerLikeDto { Id = i, FirstName = $"FirstName_{i % 10}", LastName = $"LastName_{i % 8}", Email = $"user{i}@example.com", Company = $"Company_{i % 5}", Department = i % 3 == 0 ? "Sales" : i % 3 == 1 ? "Engineering" : "Marketing", Role = i % 4 == 0 ? "Admin" : i % 4 == 1 ? "User" : i % 4 == 2 ? "Manager" : "Guest", Status = i % 2 == 0 ? "Active" : "Inactive", Attributes = [ new() { Key = "DateOfReceipt", Value = $"{i % 28 + 1}/24/2025 00:27:00" }, new() { Key = "Priority", Value = (i % 5).ToString() }, new() { Key = "CustomField1", Value = $"CustomValue_{i % 7}" }, new() { Key = "CustomField2", Value = i % 2 == 0 ? "Yes" : "No_Value" } ] }).ToList(); } public static List CreateHighReuseItems(int count) { return Enumerable.Range(0, count).Select(i => new TestHighReuseDto { Id = i, CategoryCode = $"CAT_{i % 10:D2}", StatusCode = $"STATUS_{i % 5:D2}", TypeCode = $"TYPE_{i % 3:D2}", PriorityCode = i % 2 == 0 ? "PRIORITY_HIGH" : "PRIORITY_LOW", UniqueField = $"UNIQUE_{i:D4}" }).ToList(); } public static List CreateNullablePropertyItems(int count) { return Enumerable.Range(1, count).Select(i => new TestClassWithNullableProperties { Id = i, NullableInt = i % 3 == 0 ? null : i * 10, NullableDouble = i % 2 == 0 ? null : i * 1.5, NullableDateTime = i % 4 == 0 ? null : DateTime.UtcNow.AddDays(-i), NullableGuid = i % 5 == 0 ? null : Guid.NewGuid() }).ToList(); } public static TestStockTaking CreateStockTaking(int itemCount = 2, int palletCount = 2) { return new TestStockTaking { Id = 1, StartDateTime = DateTime.UtcNow, IsClosed = false, Creator = 100, Created = DateTime.UtcNow.AddHours(-2), Modified = DateTime.UtcNow, StockTakingItems = Enumerable.Range(1, itemCount).Select(i => new TestStockTakingItem { Id = i * 10, StockTakingId = 1, ProductId = 500 + i, IsMeasured = i % 2 == 0, OriginalStockQuantity = 50 * i, MeasuredStockQuantity = 48 * i, Created = DateTime.UtcNow.AddHours(-i), Modified = DateTime.UtcNow, StockTakingItemPallets = Enumerable.Range(1, palletCount).Select(p => new TestStockTakingItemPallet { Id = i * 100 + p, StockTakingItemId = i * 10, TrayQuantity = p + 2, TareWeight = p * 0.5, PalletWeight = p * 10.0, GrossWeight = p * 50.0, IsMeasured = p % 2 == 0, CreatorId = p % 2 == 0 ? 100 : null, ModifierId = p % 2 == 1 ? 200 : null, Created = DateTime.UtcNow, Modified = DateTime.UtcNow }).ToList() }).ToList() }; } public static List CreateStockTakingList(int count, int itemsPerStock = 1, int palletsPerItem = 1) { return Enumerable.Range(1, count).Select(s => new TestStockTaking { Id = s, StartDateTime = DateTime.UtcNow.AddDays(-s), IsClosed = s % 2 == 0, Creator = s, Created = DateTime.UtcNow.AddDays(-s), Modified = DateTime.UtcNow, StockTakingItems = Enumerable.Range(1, itemsPerStock).Select(i => new TestStockTakingItem { Id = s * 100 + i, StockTakingId = s, ProductId = 1000 * s + i, IsMeasured = i % 2 == 0, OriginalStockQuantity = 10 * i, MeasuredStockQuantity = 10 * i, Created = DateTime.UtcNow, Modified = DateTime.UtcNow, StockTakingItemPallets = Enumerable.Range(1, palletsPerItem).Select(p => new TestStockTakingItemPallet { Id = s * 1000 + i * 100 + p, StockTakingItemId = s * 100 + i, CreatorId = p % 2 == 0 ? s * 10 : null, ModifierId = p % 2 == 1 ? s * 20 : null, TrayQuantity = p, TareWeight = p * 1.0, PalletWeight = p * 10.0, GrossWeight = p * 50.0, IsMeasured = p % 2 == 0, Created = DateTime.UtcNow, Modified = DateTime.UtcNow }).ToList() }).ToList() }).ToList(); } public static List CreateDateTimeEntities(int count) { return Enumerable.Range(1, count).Select(i => new TestEntityWithDateTimeAndInt { Id = i, IntValue = i * 10, Created = DateTime.UtcNow.AddDays(-i), Modified = DateTime.UtcNow.AddHours(-i), StatusCode = i % 5, Name = $"Entity_{i}" }).ToList(); } public static List CreateParentWithDateTimeItems(int parentCount, int itemsPerParent) { return Enumerable.Range(1, parentCount).Select(p => new TestParentWithDateTimeItemCollection { Id = p, Name = $"Parent_{p}", Created = DateTime.UtcNow.AddDays(-p * 10), Items = Enumerable.Range(1, itemsPerParent).Select(i => new TestEntityWithDateTimeAndInt { Id = p * 100 + i, IntValue = i * 10, Created = DateTime.UtcNow.AddDays(-i), Modified = DateTime.UtcNow.AddHours(-i), StatusCode = i % 3, Name = $"Parent{p}_Item_{i}" }).ToList() }).ToList(); } }