From 24107caa75085d2ba34498d8d7a1e604d77df9ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D1=81=D0=B5=D0=BD=D0=B8=D1=8F?= Date: Fri, 7 Feb 2025 23:50:56 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=201=20-=20=D0=A3=D1=81=D0=BB=D0=BE=D0=B6=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataModels/ProductOnStorageDataModel.cs | 33 +++++++++ .../DataModels/ProductsInSupplyDataModel.cs | 32 +++++++++ .../DataModels/StorageDataModel.cs | 24 +++++++ .../DataModels/SupplyDataModel.cs | 33 +++++++++ .../ProductOnStorageDataModelTests.cs | 71 +++++++++++++++++++ .../ProductsInSupplyDataModelTests.cs | 70 ++++++++++++++++++ .../DataModelsTests/StorageDateModelTests.cs | 51 +++++++++++++ .../DataModelsTests/SupplyDataModelTests.cs | 60 ++++++++++++++++ 8 files changed, 374 insertions(+) create mode 100644 NorthBridge/NorthBridgeContract/DataModels/ProductOnStorageDataModel.cs create mode 100644 NorthBridge/NorthBridgeContract/DataModels/ProductsInSupplyDataModel.cs create mode 100644 NorthBridge/NorthBridgeContract/DataModels/StorageDataModel.cs create mode 100644 NorthBridge/NorthBridgeContract/DataModels/SupplyDataModel.cs create mode 100644 NorthBridge/NorthBridgeTest/DataModelsTests/ProductOnStorageDataModelTests.cs create mode 100644 NorthBridge/NorthBridgeTest/DataModelsTests/ProductsInSupplyDataModelTests.cs create mode 100644 NorthBridge/NorthBridgeTest/DataModelsTests/StorageDateModelTests.cs create mode 100644 NorthBridge/NorthBridgeTest/DataModelsTests/SupplyDataModelTests.cs diff --git a/NorthBridge/NorthBridgeContract/DataModels/ProductOnStorageDataModel.cs b/NorthBridge/NorthBridgeContract/DataModels/ProductOnStorageDataModel.cs new file mode 100644 index 0000000..623dc80 --- /dev/null +++ b/NorthBridge/NorthBridgeContract/DataModels/ProductOnStorageDataModel.cs @@ -0,0 +1,33 @@ +using NorthBridgeContract.Exceptions; +using NorthBridgeContract.Extensions; +using NorthBridgeContract.Infrastructure; + +namespace NorthBridgeContract.DataModels +{ + public class ProductOnStorageDataModel(string storageId, string productId, int count) : IValidation + { + public string StorageId { get; private set; } = storageId; + + public string ProductId { get; private set; } = productId; + + public int Count { get; private set; } = count; + + public void Validate() + { + if (StorageId.IsEmpty()) + throw new ValidationException("Field StorageId is empty"); + + if (!StorageId.IsGuid()) + throw new ValidationException("The value in the field StorageId is not a unique identifier"); + + if (ProductId.IsEmpty()) + throw new ValidationException("Field ProductId is empty"); + + if (!ProductId.IsGuid()) + throw new ValidationException("The value in the field ProductId is not a unique identifier"); + + if (Count <= 0) + throw new ValidationException("Field Count is less than or equal to 0"); + } + } +} diff --git a/NorthBridge/NorthBridgeContract/DataModels/ProductsInSupplyDataModel.cs b/NorthBridge/NorthBridgeContract/DataModels/ProductsInSupplyDataModel.cs new file mode 100644 index 0000000..bbd30be --- /dev/null +++ b/NorthBridge/NorthBridgeContract/DataModels/ProductsInSupplyDataModel.cs @@ -0,0 +1,32 @@ +using NorthBridgeContract.Exceptions; +using NorthBridgeContract.Extensions; + +namespace NorthBridgeContract.DataModels +{ + public class ProductsInSupplyDataModel(string supplyId, string productId, int count) + { + public string SupplyId { get; private set; } = supplyId; + + public string ProductId { get; private set; } = productId; + + public int Count { get; private set; } = count; + + public void Validate() + { + if (SupplyId.IsEmpty()) + throw new ValidationException("Field SupplyId is empty"); + + if (!SupplyId.IsGuid()) + throw new ValidationException("The value in the field SupplyId is not a unique identifier"); + + if (ProductId.IsEmpty()) + throw new ValidationException("Field ProductId is empty"); + + if (!ProductId.IsGuid()) + throw new ValidationException("The value in the field ProductId is not a unique identifier"); + + if (Count <= 0) + throw new ValidationException("Field Count is less than or equal to 0"); + } + } +} diff --git a/NorthBridge/NorthBridgeContract/DataModels/StorageDataModel.cs b/NorthBridge/NorthBridgeContract/DataModels/StorageDataModel.cs new file mode 100644 index 0000000..a92b3f6 --- /dev/null +++ b/NorthBridge/NorthBridgeContract/DataModels/StorageDataModel.cs @@ -0,0 +1,24 @@ +using NorthBridgeContract.Exceptions; +using NorthBridgeContract.Extensions; +using NorthBridgeContract.Infrastructure; + +namespace NorthBridgeContract.DataModels +{ + public class StorageDataModel(string id, string address) : IValidation + { + public string Id { get; private set; } = id; + public string Address { get; private set; } = address; + + public void Validate() + { + if (Id.IsEmpty()) + throw new ValidationException("Field Id is empty"); + + if (!Id.IsGuid()) + throw new ValidationException("The value in the field Id is not a unique identifier"); + + if (Address.IsEmpty()) + throw new ValidationException("Field Address is empty"); + } + } +} diff --git a/NorthBridge/NorthBridgeContract/DataModels/SupplyDataModel.cs b/NorthBridge/NorthBridgeContract/DataModels/SupplyDataModel.cs new file mode 100644 index 0000000..2405b6b --- /dev/null +++ b/NorthBridge/NorthBridgeContract/DataModels/SupplyDataModel.cs @@ -0,0 +1,33 @@ +using NorthBridgeContract.Exceptions; +using NorthBridgeContract.Extensions; +using NorthBridgeContract.Infrastructure; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NorthBridgeContract.DataModels +{ + public class SupplyDataModel(string id, string storageId, DateTime date) : IValidation + { + public string Id { get; private set; } = id; + public string StorageId { get; private set; } = storageId; + public DateTime Date { get; private set; } = date; + + public void Validate() + { + if (StorageId.IsEmpty()) + throw new ValidationException("Field StorageId is empty"); + + if (!StorageId.IsGuid()) + throw new ValidationException("The value in the field StorageId is not a unique identifier"); + + if (Id.IsEmpty()) + throw new ValidationException("Field Id is empty"); + + if (!Id.IsGuid()) + throw new ValidationException("The value in the field Id is not a unique identifier"); + } + } +} diff --git a/NorthBridge/NorthBridgeTest/DataModelsTests/ProductOnStorageDataModelTests.cs b/NorthBridge/NorthBridgeTest/DataModelsTests/ProductOnStorageDataModelTests.cs new file mode 100644 index 0000000..f314bf0 --- /dev/null +++ b/NorthBridge/NorthBridgeTest/DataModelsTests/ProductOnStorageDataModelTests.cs @@ -0,0 +1,71 @@ +using NorthBridgeContract.DataModels; +using NorthBridgeContract.Exceptions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NorthBridgeTest.DataModelsTests +{ + [TestFixture] + internal class ProductOnStorageDataModelTests + { + [Test] + public void StorageIdIsNullOrEmptyTest() + { + var productStorage = new ProductOnStorageDataModel(null, Guid.NewGuid().ToString(), 1); + Assert.That(() => productStorage.Validate(), Throws.TypeOf()); + productStorage = new ProductOnStorageDataModel(string.Empty, Guid.NewGuid().ToString(), 1); + Assert.That(() => productStorage.Validate(), Throws.TypeOf()); + } + + [Test] + public void StorageIdIsNotGuidTest() + { + var productStorage = new ProductOnStorageDataModel("id", Guid.NewGuid().ToString(), 1); + Assert.That(() => productStorage.Validate(), Throws.TypeOf()); + } + + [Test] + public void ProductIdIsNullOrEmptyTest() + { + var productStorage = new ProductOnStorageDataModel(Guid.NewGuid().ToString(), null, 1); + Assert.That(() => productStorage.Validate(), Throws.TypeOf()); + productStorage = new ProductOnStorageDataModel(Guid.NewGuid().ToString(), string.Empty, 1); + Assert.That(() => productStorage.Validate(), Throws.TypeOf()); + } + + [Test] + public void ProductIdIsNotGuidTest() + { + var productStorage = new ProductOnStorageDataModel(Guid.NewGuid().ToString(), "id", 1); + Assert.That(() => productStorage.Validate(), Throws.TypeOf()); + } + + [Test] + public void CountIsLessThanOrEqualToZeroTest() + { + var productStorage = new ProductOnStorageDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0); + Assert.That(() => productStorage.Validate(), Throws.TypeOf()); + productStorage = new ProductOnStorageDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -1); + Assert.That(() => productStorage.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsAreCorrectTest() + { + var storageId = Guid.NewGuid().ToString(); + var productId = Guid.NewGuid().ToString(); + var count = 5; + var productStorage = new ProductOnStorageDataModel(storageId, productId, count); + Assert.That(() => productStorage.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(productStorage.StorageId, Is.EqualTo(storageId)); + Assert.That(productStorage.ProductId, Is.EqualTo(productId)); + Assert.That(productStorage.Count, Is.EqualTo(count)); + }); + } + } +} diff --git a/NorthBridge/NorthBridgeTest/DataModelsTests/ProductsInSupplyDataModelTests.cs b/NorthBridge/NorthBridgeTest/DataModelsTests/ProductsInSupplyDataModelTests.cs new file mode 100644 index 0000000..54448e3 --- /dev/null +++ b/NorthBridge/NorthBridgeTest/DataModelsTests/ProductsInSupplyDataModelTests.cs @@ -0,0 +1,70 @@ +using NorthBridgeContract.DataModels; +using NorthBridgeContract.Exceptions; + +namespace NorthBridgeTest.DataModelsTests +{ + [TestFixture] + internal class ProductsInSupplyDataModelTests + { + [Test] + public void SupplyIdIsNullOrEmptyTest() + { + var productSupply = CreateDataModel(null, Guid.NewGuid().ToString(), 1); + Assert.That(() => productSupply.Validate(), Throws.TypeOf()); + productSupply = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 1); + Assert.That(() => productSupply.Validate(), Throws.TypeOf()); + } + + [Test] + public void SupplyIdIsNotGuidTest() + { + var productSupply = CreateDataModel("id", Guid.NewGuid().ToString(), 1); + Assert.That(() => productSupply.Validate(), Throws.TypeOf()); + } + + [Test] + public void ProductIdIsNullOrEmptyTest() + { + var productSupply = CreateDataModel(Guid.NewGuid().ToString(), null, 1); + Assert.That(() => productSupply.Validate(), Throws.TypeOf()); + productSupply = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 1); + Assert.That(() => productSupply.Validate(), Throws.TypeOf()); + } + + [Test] + public void ProductIdIsNotGuidTest() + { + var productSupply = CreateDataModel(Guid.NewGuid().ToString(), "id", 1); + Assert.That(() => productSupply.Validate(), Throws.TypeOf()); + } + + [Test] + public void CountIsLessThanOrEqualToZeroTest() + { + var productSupply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0); + Assert.That(() => productSupply.Validate(), Throws.TypeOf()); + productSupply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -1); + Assert.That(() => productSupply.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsAreCorrectTest() + { + var supplyId = Guid.NewGuid().ToString(); + var productId = Guid.NewGuid().ToString(); + var count = 5; + var productSupply = CreateDataModel(supplyId, productId, count); + Assert.That(() => productSupply.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(productSupply.SupplyId, Is.EqualTo(supplyId)); + Assert.That(productSupply.ProductId, Is.EqualTo(productId)); + Assert.That(productSupply.Count, Is.EqualTo(count)); + }); + } + + private static ProductsInSupplyDataModel CreateDataModel(string? supplyId, string? productId, int count) => + new(supplyId, productId, count); + } + +} diff --git a/NorthBridge/NorthBridgeTest/DataModelsTests/StorageDateModelTests.cs b/NorthBridge/NorthBridgeTest/DataModelsTests/StorageDateModelTests.cs new file mode 100644 index 0000000..699bb79 --- /dev/null +++ b/NorthBridge/NorthBridgeTest/DataModelsTests/StorageDateModelTests.cs @@ -0,0 +1,51 @@ +using NorthBridgeContract.DataModels; +using NorthBridgeContract.Exceptions; + +namespace NorthBridgeTest.DataModelsTests +{ + [TestFixture] + internal class StorageDataModelTests + { + [Test] + public void IdIsNullOrEmptyTest() + { + var storage = CreateDataModel(null, "ул. Ленина, д. 10"); + Assert.That(() => storage.Validate(), Throws.TypeOf()); + storage = CreateDataModel(string.Empty, "ул. Ленина, д. 10"); + Assert.That(() => storage.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var storage = CreateDataModel("id", "ул. Ленина, д. 10"); + Assert.That(() => storage.Validate(), Throws.TypeOf()); + } + + [Test] + public void AddressIsNullOrEmptyTest() + { + var storage = CreateDataModel(Guid.NewGuid().ToString(), null); + Assert.That(() => storage.Validate(), Throws.TypeOf()); + storage = CreateDataModel(Guid.NewGuid().ToString(), string.Empty); + Assert.That(() => storage.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsAreCorrectTest() + { + var storageId = Guid.NewGuid().ToString(); + var address = "ул. Ленина, д. 10"; + var storage = CreateDataModel(storageId, address); + Assert.That(() => storage.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(storage.Id, Is.EqualTo(storageId)); + Assert.That(storage.Address, Is.EqualTo(address)); + }); + } + + private static StorageDataModel CreateDataModel(string? id, string? address) => + new(id, address); + } +} diff --git a/NorthBridge/NorthBridgeTest/DataModelsTests/SupplyDataModelTests.cs b/NorthBridge/NorthBridgeTest/DataModelsTests/SupplyDataModelTests.cs new file mode 100644 index 0000000..8442ab8 --- /dev/null +++ b/NorthBridge/NorthBridgeTest/DataModelsTests/SupplyDataModelTests.cs @@ -0,0 +1,60 @@ +using NorthBridgeContract.DataModels; +using NorthBridgeContract.Exceptions; + +namespace NorthBridgeTest.DataModelsTests +{ + [TestFixture] + internal class SupplyDataModelTests + { + [Test] + public void IdIsNullOrEmptyTest() + { + var supply = CreateDataModel(null, Guid.NewGuid().ToString(), DateTime.Now); + Assert.That(() => supply.Validate(), Throws.TypeOf()); + supply = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), DateTime.Now); + Assert.That(() => supply.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var supply = CreateDataModel("id", Guid.NewGuid().ToString(), DateTime.Now); + Assert.That(() => supply.Validate(), Throws.TypeOf()); + } + + [Test] + public void StorageIdIsNullOrEmptyTest() + { + var supply = CreateDataModel(Guid.NewGuid().ToString(), null, DateTime.Now); + Assert.That(() => supply.Validate(), Throws.TypeOf()); + supply = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, DateTime.Now); + Assert.That(() => supply.Validate(), Throws.TypeOf()); + } + + [Test] + public void StorageIdIsNotGuidTest() + { + var supply = CreateDataModel(Guid.NewGuid().ToString(), "id", DateTime.Now); + Assert.That(() => supply.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsAreCorrectTest() + { + var supplyId = Guid.NewGuid().ToString(); + var storageId = Guid.NewGuid().ToString(); + var date = DateTime.Now; + var supply = CreateDataModel(supplyId, storageId, date); + Assert.That(() => supply.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(supply.Id, Is.EqualTo(supplyId)); + Assert.That(supply.StorageId, Is.EqualTo(storageId)); + Assert.That(supply.Date, Is.EqualTo(date)); + }); + } + + private static SupplyDataModel CreateDataModel(string? id, string? storageId, DateTime date) => + new(id, storageId, date); + } +}