From 39dada6bca7fc457599dd081e00f51b36f650fd3 Mon Sep 17 00:00:00 2001 From: xom9k Date: Mon, 17 Mar 2025 18:56:45 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B1=D0=B5=D0=B7=D0=BD=D0=B5=D1=81=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3=D0=B8=D0=BA=D0=B8=20=D0=BF=D1=80=D0=B8=20=D0=BD?= =?UTF-8?q?=D0=B5=D1=85=D0=B2=D0=B0=D1=82=D0=BA=D0=B5=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B4=D1=83=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SaleBusinessLogicContract.cs | 7 +++- .../TourBusinessLogicContract.cs | 13 +------- .../IAgencyStorageContract.cs | 2 +- .../SaleBusinessLogicContractTests.cs | 24 +++++++++++++- .../TourBusinessLogicContractTests.cs | 32 +------------------ 5 files changed, 32 insertions(+), 46 deletions(-) diff --git a/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/SaleBusinessLogicContract.cs b/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/SaleBusinessLogicContract.cs index b78fe87..e01e8c1 100644 --- a/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/SaleBusinessLogicContract.cs +++ b/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/SaleBusinessLogicContract.cs @@ -13,10 +13,11 @@ using System.Threading.Tasks; namespace MagicCarpetBusinessLogic.Implementations; -internal class SaleBusinessLogicContract(ISaleStorageContract saleStorageContract, ILogger logger) : ISaleBusinessLogicContract +internal class SaleBusinessLogicContract(ISaleStorageContract saleStorageContract, IAgencyStorageContract agencyStorageContract, ILogger logger) : ISaleBusinessLogicContract { private readonly ILogger _logger = logger; private readonly ISaleStorageContract _saleStorageContract = saleStorageContract; + private readonly IAgencyStorageContract _agencyStorageContract = agencyStorageContract; public List GetAllSalesByPeriod(DateTime fromDate, DateTime toDate) { @@ -101,6 +102,10 @@ internal class SaleBusinessLogicContract(ISaleStorageContract saleStorageContrac _logger.LogInformation("New data: {json}", JsonSerializer.Serialize(saleDataModel)); ArgumentNullException.ThrowIfNull(saleDataModel); saleDataModel.Validate(); + if (!_agencyStorageContract.CheckComponents(saleDataModel)) + { + throw new InsufficientException("Dont have tour in agency"); + } _saleStorageContract.AddElement(saleDataModel); } diff --git a/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/TourBusinessLogicContract.cs b/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/TourBusinessLogicContract.cs index 54c3cfc..57d95ee 100644 --- a/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/TourBusinessLogicContract.cs +++ b/MagicCarpetProject/MagicCarpetBusinessLogic/Implementations/TourBusinessLogicContract.cs @@ -13,11 +13,10 @@ using System.Threading.Tasks; namespace MagicCarpetBusinessLogic.Implementations; -internal class TourBusinessLogicContract(ITourStorageContract tourStorageContract, IAgencyStorageContract agencyStorageContract,ILogger logger) : ITourBusinessLogicContract +internal class TourBusinessLogicContract(ITourStorageContract tourStorageContract, ILogger logger) : ITourBusinessLogicContract { private readonly ILogger _logger = logger; private readonly ITourStorageContract _tourStorageContract = tourStorageContract; - private readonly IAgencyStorageContract _agencyStorageContract = agencyStorageContract; public List GetAllTours() { _logger.LogInformation("GetAllTours"); @@ -57,11 +56,6 @@ internal class TourBusinessLogicContract(ITourStorageContract tourStorageContrac _logger.LogInformation("New data: {json}", JsonSerializer.Serialize(tourDataModel)); ArgumentNullException.ThrowIfNull(tourDataModel); tourDataModel.Validate(); - if (!_agencyStorageContract.CheckComponents(tourDataModel)) - { - throw new InsufficientException("Dont have tour in agency"); - } - _tourStorageContract.AddElement(tourDataModel); } public void UpdateTour(TourDataModel tourDataModel) @@ -69,11 +63,6 @@ internal class TourBusinessLogicContract(ITourStorageContract tourStorageContrac _logger.LogInformation("Update data: {json}", JsonSerializer.Serialize(tourDataModel)); ArgumentNullException.ThrowIfNull(tourDataModel); tourDataModel.Validate(); - if (!_agencyStorageContract.CheckComponents(tourDataModel)) - { - throw new InsufficientException("Dont have tour in agency"); - } - _tourStorageContract.UpdElement(tourDataModel); } public void DeleteTour(string id) diff --git a/MagicCarpetProject/MagicCarpetContracts/StoragesContracts/IAgencyStorageContract.cs b/MagicCarpetProject/MagicCarpetContracts/StoragesContracts/IAgencyStorageContract.cs index bc65b3e..c2c7691 100644 --- a/MagicCarpetProject/MagicCarpetContracts/StoragesContracts/IAgencyStorageContract.cs +++ b/MagicCarpetProject/MagicCarpetContracts/StoragesContracts/IAgencyStorageContract.cs @@ -14,5 +14,5 @@ public interface IAgencyStorageContract void AddElement(AgencyDataModel agencyDataModel); void UpdElement(AgencyDataModel agencyDataModel); void DelElement(string id); - bool CheckComponents(TourDataModel tourDataModel); + bool CheckComponents(SaleDataModel saleDataModel); } diff --git a/MagicCarpetProject/MagicCarpetTests/BusinessLogicContractsTests/SaleBusinessLogicContractTests.cs b/MagicCarpetProject/MagicCarpetTests/BusinessLogicContractsTests/SaleBusinessLogicContractTests.cs index 67aa757..dceb341 100644 --- a/MagicCarpetProject/MagicCarpetTests/BusinessLogicContractsTests/SaleBusinessLogicContractTests.cs +++ b/MagicCarpetProject/MagicCarpetTests/BusinessLogicContractsTests/SaleBusinessLogicContractTests.cs @@ -18,18 +18,22 @@ internal class SaleBusinessLogicContractTests { private SaleBusinessLogicContract _saleBusinessLogicContract; private Mock _saleStorageContract; + private Mock _agencyStorageContract; [OneTimeSetUp] public void OneTimeSetUp() { _saleStorageContract = new Mock(); - _saleBusinessLogicContract = new SaleBusinessLogicContract(_saleStorageContract.Object, new Mock().Object); + _agencyStorageContract = new Mock(); + _saleBusinessLogicContract = new SaleBusinessLogicContract(_saleStorageContract.Object, + _agencyStorageContract.Object, new Mock().Object); } [TearDown] public void TearDown() { _saleStorageContract.Reset(); + _agencyStorageContract.Reset(); } [Test] @@ -396,6 +400,7 @@ internal class SaleBusinessLogicContractTests var flag = false; var record = new SaleDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.None, 10, false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]); + _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(true); _saleStorageContract.Setup(x => x.AddElement(It.IsAny())) .Callback((SaleDataModel x) => { @@ -409,6 +414,7 @@ internal class SaleBusinessLogicContractTests //Act _saleBusinessLogicContract.InsertSale(record); //Assert + _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _saleStorageContract.Verify(x => x.AddElement(It.IsAny()), Times.Once); Assert.That(flag); } @@ -417,11 +423,13 @@ internal class SaleBusinessLogicContractTests public void InsertSale_RecordWithExistsData_ThrowException_Test() { //Arrange + _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(true); _saleStorageContract.Setup(x => x.AddElement(It.IsAny())).Throws(new ElementExistsException("Data", "Data")); //Act&Assert Assert.That(() => _saleBusinessLogicContract.InsertSale(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.None, 10, false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf()); _saleStorageContract.Verify(x => x.AddElement(It.IsAny()), Times.Once); + _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); } [Test] @@ -444,13 +452,27 @@ internal class SaleBusinessLogicContractTests public void InsertSale_StorageThrowError_ThrowException_Test() { //Arrange + _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(true); _saleStorageContract.Setup(x => x.AddElement(It.IsAny())).Throws(new StorageException(new InvalidOperationException())); //Act&Assert Assert.That(() => _saleBusinessLogicContract.InsertSale(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.None, 10, false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf()); + _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _saleStorageContract.Verify(x => x.AddElement(It.IsAny()), Times.Once); } + [Test] + public void InsertSale_InsufficientError_ThrowException_Test() + { + //Arrange + _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(false); + Assert.That(() => _saleBusinessLogicContract.InsertSale(new SaleDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), + Guid.NewGuid().ToString(), 10, DiscountType.None, 10, false, + [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf()); + //Act&Assert + _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); + } + [Test] public void CancelSale_CorrectRecord_Test() { diff --git a/MagicCarpetProject/MagicCarpetTests/BusinessLogicContractsTests/TourBusinessLogicContractTests.cs b/MagicCarpetProject/MagicCarpetTests/BusinessLogicContractsTests/TourBusinessLogicContractTests.cs index a5c5d6a..c02d853 100644 --- a/MagicCarpetProject/MagicCarpetTests/BusinessLogicContractsTests/TourBusinessLogicContractTests.cs +++ b/MagicCarpetProject/MagicCarpetTests/BusinessLogicContractsTests/TourBusinessLogicContractTests.cs @@ -18,22 +18,18 @@ namespace MagicCarpetTests.BusinessLogicContractsTests; internal class TourBusinessLogicContractTests { private TourBusinessLogicContract _tourBusinessLogicContract; - private Mock _agencyStorageContract; private Mock _tourStorageContract; [OneTimeSetUp] public void OneTimeSetUp() { _tourStorageContract = new Mock(); - _agencyStorageContract = new Mock(); - _tourBusinessLogicContract = new TourBusinessLogicContract(_tourStorageContract.Object, - _agencyStorageContract.Object, new Mock().Object); + _tourBusinessLogicContract = new TourBusinessLogicContract(_tourStorageContract.Object, new Mock().Object); } [SetUp] public void SetUp() { - _agencyStorageContract.Reset(); _tourStorageContract.Reset(); } @@ -270,12 +266,10 @@ internal class TourBusinessLogicContractTests public void InsertTour_RecordWithExistsData_ThrowException_Test() { //Arrange - _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(true); _tourStorageContract.Setup(x => x.AddElement(It.IsAny())).Throws(new ElementExistsException("Data", "Data")); //Act&Assert Assert.That(() => _tourBusinessLogicContract.InsertTour(new(Guid.NewGuid().ToString(), "name","country",10, TourType.Ski, [new TourSuppliesDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)], [new TourAgencyDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf()); - _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _tourStorageContract.Verify(x => x.AddElement(It.IsAny()), Times.Once); } @@ -299,11 +293,9 @@ internal class TourBusinessLogicContractTests public void InsertTour_StorageThrowError_ThrowException_Test() { //Arrange - _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(false); Assert.That(() => _tourBusinessLogicContract.InsertTour(new TourDataModel(Guid.NewGuid().ToString(), "name","country", 10, TourType.Ski, [new TourSuppliesDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)], [new TourAgencyDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf()); //Act&Assert - _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _tourStorageContract.Verify(x => x.UpdElement(It.IsAny()), Times.Never); } @@ -311,11 +303,9 @@ internal class TourBusinessLogicContractTests public void InsertFurniture_InsufficientError_ThrowException_Test() { //Arrange - _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(false); Assert.That(() => _tourBusinessLogicContract.InsertTour(new TourDataModel(Guid.NewGuid().ToString(), "name", "country", 10, TourType.Ski, [new TourSuppliesDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)], [new TourAgencyDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])),Throws.TypeOf()); //Act&Assert - _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _tourStorageContract.Verify(x => x.UpdElement(It.IsAny()), Times.Never); } @@ -326,7 +316,6 @@ internal class TourBusinessLogicContractTests var flag = false; var record = new TourDataModel(Guid.NewGuid().ToString(), "name", "country", 10, TourType.Ski, [new TourSuppliesDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)], [new TourAgencyDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]); - _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(true); _tourStorageContract.Setup(x => x.UpdElement(It.IsAny())) .Callback((TourDataModel x) => { @@ -336,7 +325,6 @@ internal class TourBusinessLogicContractTests //Act _tourBusinessLogicContract.UpdateTour(record); //Assert - _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _tourStorageContract.Verify(x => x.UpdElement(It.IsAny()), Times.Once); Assert.That(flag); } @@ -345,12 +333,10 @@ internal class TourBusinessLogicContractTests public void UpdateTour_RecordWithIncorrectData_ThrowException_Test() { //Arrange - _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(true); _tourStorageContract.Setup(x => x.UpdElement(It.IsAny())).Throws(new ElementNotFoundException("")); //Act&Assert Assert.That(() => _tourBusinessLogicContract.UpdateTour(new(Guid.NewGuid().ToString(), "name", "country", 10, TourType.Ski, [new TourSuppliesDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)], [new TourAgencyDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf()); - _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _tourStorageContract.Verify(x => x.UpdElement(It.IsAny()), Times.Once); } @@ -358,12 +344,10 @@ internal class TourBusinessLogicContractTests public void UpdateTour_RecordWithExistsData_ThrowException_Test() { //Arrange - _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(true); _tourStorageContract.Setup(x => x.UpdElement(It.IsAny())).Throws(new ElementExistsException("Data", "Data")); //Act&Assert Assert.That(() => _tourBusinessLogicContract.UpdateTour(new(Guid.NewGuid().ToString(), "name", "country", 10, TourType.Ski, [new TourSuppliesDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)], [new TourAgencyDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf ()); - _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _tourStorageContract.Verify(x => x.UpdElement(It.IsAny()), Times.Once); } @@ -388,27 +372,13 @@ internal class TourBusinessLogicContractTests public void UpdateTour_StorageThrowError_ThrowException_Test() { //Arrange - _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(true); _tourStorageContract.Setup(x => x.UpdElement(It.IsAny())).Throws(new StorageException(new InvalidOperationException())); //Act&Assert Assert.That(() => _tourBusinessLogicContract.UpdateTour(new(Guid.NewGuid().ToString(), "name", "country", 10, TourType.Ski, [new TourSuppliesDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)], [new TourAgencyDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf()); - _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); _tourStorageContract.Verify(x => x.UpdElement(It.IsAny()), Times.Once); } - [Test] - public void UpdateFurniture_InsufficientError_ThrowException_Test() - { - //Arrange - _agencyStorageContract.Setup(x => x.CheckComponents(It.IsAny())).Returns(false); - //Act&Assert - Assert.That(() => _tourBusinessLogicContract.UpdateTour(new(Guid.NewGuid().ToString(), "name", "country", 10, TourType.Ski, - [new TourSuppliesDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)], [new TourAgencyDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf()); - _agencyStorageContract.Verify(x => x.CheckComponents(It.IsAny()), Times.Once); - _tourStorageContract.Verify(x => x.UpdElement(It.IsAny()), Times.Never); - } - [Test] public void DeleteTour_CorrectRecord_Test() {