From ec2eea318468e4b6d91f0cf6c10c894cbf5f82b2 Mon Sep 17 00:00:00 2001 From: xom9kxom9k Date: Fri, 14 Feb 2025 13:11:44 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataModels/AgencyDataModel.cs | 5 ++- .../DataModels/SuppliesDataModel.cs | 5 ++- .../DataModelTests/AgencyDataModelTests.cs | 31 +++++++++++++------ .../DataModelTests/SuppliesDataModelTests.cs | 30 ++++++++++++------ 4 files changed, 51 insertions(+), 20 deletions(-) diff --git a/MagicCarpetProject/MagicCarpetContracts/DataModels/AgencyDataModel.cs b/MagicCarpetProject/MagicCarpetContracts/DataModels/AgencyDataModel.cs index fd17d9e..ca84381 100644 --- a/MagicCarpetProject/MagicCarpetContracts/DataModels/AgencyDataModel.cs +++ b/MagicCarpetProject/MagicCarpetContracts/DataModels/AgencyDataModel.cs @@ -10,11 +10,12 @@ using System.Threading.Tasks; namespace MagicCarpetContracts.DataModels; -public class AgencyDataModel(string id, TourType tourType, int count) : IValidation +public class AgencyDataModel(string id, TourType tourType, int count, List tours) : IValidation { public string Id { get; private set; } = id; public TourType Type { get; private set; } = tourType; public int Count { get; private set; } = count; + public List Tours { get; private set; } = tours; public void Validate() { @@ -26,5 +27,7 @@ public class AgencyDataModel(string id, TourType tourType, int count) : IValidat throw new ValidationException("Field Type is empty"); if (Count <= 0) throw new ValidationException("Field Count is less than or equal to 0"); + if ((Tours?.Count ?? 0) == 0) + throw new ValidationException("The sale must include tours"); } } diff --git a/MagicCarpetProject/MagicCarpetContracts/DataModels/SuppliesDataModel.cs b/MagicCarpetProject/MagicCarpetContracts/DataModels/SuppliesDataModel.cs index 823941d..871e505 100644 --- a/MagicCarpetProject/MagicCarpetContracts/DataModels/SuppliesDataModel.cs +++ b/MagicCarpetProject/MagicCarpetContracts/DataModels/SuppliesDataModel.cs @@ -11,12 +11,13 @@ using static System.Runtime.InteropServices.JavaScript.JSType; namespace MagicCarpetContracts.DataModels; -public class SuppliesDataModel(string id, TourType tourType, DateTime date, int count) : IValidation +public class SuppliesDataModel(string id, TourType tourType, DateTime date, int count, List tours) : IValidation { public string Id { get; private set; } = id; public TourType Type { get; private set; } = tourType; public DateTime ProductuionDate { get; private set; } = date; public int Count { get; private set; } = count; + public List Tours { get; private set; } = tours; public void Validate() { @@ -28,5 +29,7 @@ public class SuppliesDataModel(string id, TourType tourType, DateTime date, int throw new ValidationException("Field Type is empty"); if (Count <= 0) throw new ValidationException("Field Count is less than or equal to 0"); + if ((Tours?.Count ?? 0) == 0) + throw new ValidationException("The sale must include tours"); } } diff --git a/MagicCarpetProject/MagicCarpetTests/DataModelTests/AgencyDataModelTests.cs b/MagicCarpetProject/MagicCarpetTests/DataModelTests/AgencyDataModelTests.cs index 4c67e10..ac7dd8b 100644 --- a/MagicCarpetProject/MagicCarpetTests/DataModelTests/AgencyDataModelTests.cs +++ b/MagicCarpetProject/MagicCarpetTests/DataModelTests/AgencyDataModelTests.cs @@ -15,35 +15,44 @@ internal class AgencyDataModelTests [Test] public void IdIsNullOrEmptyTest() { - var model = CreateDataModel(null, TourType.Beach, 1); + var model = CreateDataModel(null, TourType.Beach, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); - model = CreateDataModel(string.Empty, TourType.Beach, 1); + model = CreateDataModel(string.Empty, TourType.Beach, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { - var model = CreateDataModel("id", TourType.Beach, 1); + var model = CreateDataModel("id", TourType.Beach, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void TypeIsNoneTest() { - var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, 1); + var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { - var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, 0); + var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, 0, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); - model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, -1); + model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, -1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } + [Test] + public void ToursIsNullOrEmptyTest() + { + var sale = CreateDataModel(Guid.NewGuid().ToString(), TourType.Beach, 1, null); + Assert.That(() => sale.Validate(), Throws.TypeOf()); + + sale = CreateDataModel(Guid.NewGuid().ToString(), TourType.Beach, 1, []); + Assert.That(() => sale.Validate(), Throws.TypeOf()); + } [Test] public void AllFieldsIsCorrectTest() @@ -51,16 +60,20 @@ internal class AgencyDataModelTests var id = Guid.NewGuid().ToString(); var type = TourType.Beach; var count = 1; - var model = CreateDataModel(id, type, count); + var tours = CreateSubDataModel(); + var model = CreateDataModel(id, type, count, tours); Assert.DoesNotThrow(() => model.Validate()); Assert.Multiple(() => { Assert.That(model.Id, Is.EqualTo(id)); Assert.That(model.Type, Is.EqualTo(type)); Assert.That(model.Count, Is.EqualTo(count)); + Assert.That(model.Tours, Is.EqualTo(tours)); }); } - private static AgencyDataModel CreateDataModel(string? id, TourType type, int count) - => new AgencyDataModel(id, type, count); + private static AgencyDataModel CreateDataModel(string? id, TourType type, int count, List tours) + => new AgencyDataModel(id, type, count, tours); + private static List CreateSubDataModel() + => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)]; } diff --git a/MagicCarpetProject/MagicCarpetTests/DataModelTests/SuppliesDataModelTests.cs b/MagicCarpetProject/MagicCarpetTests/DataModelTests/SuppliesDataModelTests.cs index d52b2f6..30a071a 100644 --- a/MagicCarpetProject/MagicCarpetTests/DataModelTests/SuppliesDataModelTests.cs +++ b/MagicCarpetProject/MagicCarpetTests/DataModelTests/SuppliesDataModelTests.cs @@ -15,35 +15,43 @@ internal class SuppliesDataModelTests [Test] public void IdIsNullOrEmptyTest() { - var model = CreateDataModel(null, TourType.Beach, DateTime.Now, 1); + var model = CreateDataModel(null, TourType.Beach, DateTime.Now, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); - model = CreateDataModel(string.Empty, TourType.Beach, DateTime.Now, 1); + model = CreateDataModel(string.Empty, TourType.Beach, DateTime.Now, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { - var model = CreateDataModel("id", TourType.Beach, DateTime.Now, 1); + var model = CreateDataModel("id", TourType.Beach, DateTime.Now, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void TypeIsNoneTest() { - var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, 1); + var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { - var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, 0); + var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, 0, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); - model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, -1); + model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, -1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } + [Test] + public void ToursIsNullOrEmptyTest() + { + var sale = CreateDataModel(Guid.NewGuid().ToString(), TourType.Beach, DateTime.Now, 1, null); + Assert.That(() => sale.Validate(), Throws.TypeOf()); + sale = CreateDataModel(Guid.NewGuid().ToString(), TourType.Beach, DateTime.Now, 1, []); + Assert.That(() => sale.Validate(), Throws.TypeOf()); + } [Test] public void AllFieldsIsCorrectTest() @@ -52,7 +60,8 @@ internal class SuppliesDataModelTests var type = TourType.Beach; var date = DateTime.Now; var count = 1; - var model = CreateDataModel(id, type, date, count); + var tours = CreateSubDataModel(); + var model = CreateDataModel(id, type, date, count, tours); Assert.DoesNotThrow(() => model.Validate()); Assert.Multiple(() => { @@ -60,9 +69,12 @@ internal class SuppliesDataModelTests Assert.That(model.Type, Is.EqualTo(type)); Assert.That(model.ProductuionDate, Is.EqualTo(date)); Assert.That(model.Count, Is.EqualTo(count)); + Assert.That(model.Tours, Is.EqualTo(tours)); }); } - private static SuppliesDataModel CreateDataModel(string? id, TourType type, DateTime date, int count) - => new(id, type, date, count); + private static SuppliesDataModel CreateDataModel(string? id, TourType type, DateTime date, int count, List tours) + => new(id, type, date, count, tours); + private static List CreateSubDataModel() + => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)]; }