diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketBusinessLogic/Implementation/ComplitedWorkBusinessLogicContract.cs b/TwoFromTheCasketContracts/TwoFromTheCasketBusinessLogic/Implementation/ComplitedWorkBusinessLogicContract.cs index 1dbbad1..56f5c81 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketBusinessLogic/Implementation/ComplitedWorkBusinessLogicContract.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketBusinessLogic/Implementation/ComplitedWorkBusinessLogicContract.cs @@ -190,9 +190,8 @@ internal class ComplitedWorkBusinessLogicContract(IComplitedWorkStorageContract throw new ValidationException("Completed work must have at least one assigned worker."); } - if (!warehouseStorageContract.CheckWorks(complitedWorkDataModel)) + if (!warehouseStorageContract.ReserveWorksForComplitedWork(complitedWorkDataModel)) { - logger.LogError("Not enough works for ComplitedWorks."); throw new ValidationException("Not enough works for ComplitedWorks."); } diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/DataModels/WarehouseDataModel.cs b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/DataModels/WarehouseDataModel.cs index caa57f9..d4cbe1e 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/DataModels/WarehouseDataModel.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/DataModels/WarehouseDataModel.cs @@ -4,13 +4,23 @@ using TwoFromTheCasketContracts.Infastructure; namespace TwoFromTheCasketContracts.DataModels; -public class WarehouseDataModel(string id, string name, string location, - List workWarehouseDataModels) : IValidation +public class WarehouseDataModel : IValidation { - public string Id { get; private set; } = id; - public string Name { get; private set; } = name; - public string Location { get; private set; } = location; - public List WorkWarehouseDataModels { get; private set; } = workWarehouseDataModels; + public string Id { get; private set; } + public string Name { get; private set; } + public string Location { get; private set; } + public List WorkWarehouseDataModels { get; private set; } + + public WarehouseDataModel(string id, string name, string location, + List workWarehouseDataModels) + { + Id = id; + Name = name; + Location = location; + WorkWarehouseDataModels = workWarehouseDataModels; + } + + public WarehouseDataModel() { } public void Validate() { diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/StorageContracts/IWarehouseStorageContract.cs b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/StorageContracts/IWarehouseStorageContract.cs index fa0f8ef..21f6eec 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/StorageContracts/IWarehouseStorageContract.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/StorageContracts/IWarehouseStorageContract.cs @@ -15,6 +15,5 @@ public interface IWarehouseStorageContract void AddElement(WarehouseDataModel warehouseDataModel); void UpdElement(WarehouseDataModel warehouseDataModel); void DelElement(string id); - bool CheckWorks(ComplitedWorkDataModel workDataModel); - void ReserveWorksForComplitedWork(ComplitedWorkDataModel workDataModel); + bool ReserveWorksForComplitedWork(ComplitedWorkDataModel workDataModel); } diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/StorageContracts/IWorkerComplitedWorkStorageContract.cs b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/StorageContracts/IWorkerComplitedWorkStorageContract.cs new file mode 100644 index 0000000..a39ea53 --- /dev/null +++ b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/StorageContracts/IWorkerComplitedWorkStorageContract.cs @@ -0,0 +1,10 @@ +using TwoFromTheCasketContracts.DataModels; +namespace TwoFromTheCasketContracts.StorageContracts; +public interface IWorkerComplitedWorkStorageContract +{ + List GetList(string? workerId = null, string? complitedWorkId = null); + WorkerComplitedWorkDataModel? GetElementById(string id); + void AddElement(WorkerComplitedWorkDataModel workerComplitedWorkDataModel); + void UpdElement(WorkerComplitedWorkDataModel workerComplitedWorkDataModel); + void DelElement(string id); +} diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/ComplitedWorkStorageContract.cs b/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/ComplitedWorkStorageContract.cs index c490437..bf82e60 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/ComplitedWorkStorageContract.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/ComplitedWorkStorageContract.cs @@ -84,16 +84,32 @@ public class ComplitedWorkStorageContract : IComplitedWorkStorageContract { try { - if (!_warehouseStorage.CheckWorks(complitedWorkDataModel)) + if (complitedWorkDataModel.Workers == null || complitedWorkDataModel.Workers.Count == 0) { - throw new ElementNotFoundException("Not enough work available in warehouses."); + throw new ValidationException("The value in the Workers must include workers"); } - _warehouseStorage.ReserveWorksForComplitedWork(complitedWorkDataModel); + if (!_dbContext.Rooms.Any(x => x.Id == complitedWorkDataModel.RoomId)) + { + throw new ElementNotFoundException($"Room with ID {complitedWorkDataModel.RoomId} not found."); + } + + try + { + _warehouseStorage.ReserveWorksForComplitedWork(complitedWorkDataModel); + } + catch (Exception ex) + { + throw new StorageException(ex); + } _dbContext.ComplitedWorks.Add(_mapper.Map(complitedWorkDataModel)); _dbContext.SaveChanges(); } + catch (ValidationException) + { + throw; + } catch (ElementNotFoundException) { _dbContext.ChangeTracker.Clear(); diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/SupplyStorageContract.cs b/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/SupplyStorageContract.cs index bbb5616..fa62c70 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/SupplyStorageContract.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/SupplyStorageContract.cs @@ -19,9 +19,14 @@ public class SupplyStorageContract : ISupplyStorageContract var config = new MapperConfiguration(cfg => { - cfg.CreateMap(); - cfg.CreateMap(); + cfg.CreateMap() + .ForMember(dest => dest.Works, opt => opt.Ignore()); + + cfg.CreateMap() + .ForMember(dest => dest.Works, opt => opt.Ignore()); + cfg.CreateMap(); + cfg.CreateMap(); }); _mapper = new Mapper(config); @@ -70,8 +75,11 @@ public class SupplyStorageContract : ISupplyStorageContract { try { - var entity = _mapper.Map(supplyDataModel); - _dbContext.Supplies.Add(entity); + var supplyEntity = _mapper.Map(supplyDataModel); + _dbContext.Supplies.Add(supplyEntity); + _dbContext.SaveChanges(); + _dbContext.ChangeTracker.Clear(); + foreach (var ws in supplyDataModel.Works) { @@ -116,6 +124,7 @@ public class SupplyStorageContract : ISupplyStorageContract } } + public void DelElement(string id) { try diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/WarehouseStorageContract.cs b/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/WarehouseStorageContract.cs index 42df727..7c1909e 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/WarehouseStorageContract.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketDatabase/Implementations/WarehouseStorageContract.cs @@ -20,6 +20,7 @@ namespace TwoFromTheCasketDatabase.Implementations { cfg.CreateMap(); cfg.CreateMap(); + }); _mapper = new Mapper(conf); } @@ -137,48 +138,20 @@ namespace TwoFromTheCasketDatabase.Implementations } } - public bool CheckWorks(ComplitedWorkDataModel workDataModel) + public bool ReserveWorksForComplitedWork(ComplitedWorkDataModel workDataModel) { + using var transaction = _dbContext.Database.BeginTransaction(); + try { var requiredWork = _dbContext.Works .FirstOrDefault(w => w.Id == workDataModel.WorkId) ?? throw new ElementNotFoundException(workDataModel.WorkId); - - var availableWorkQuantities = _dbContext.WorkWarehouses - .Where(ww => ww.WorkId == requiredWork.Id) - .ToList(); - - var totalAvailable = availableWorkQuantities.Sum(ww => ww.Quantity); - - return totalAvailable > 0; - } - catch (ElementNotFoundException) - { - _dbContext.ChangeTracker.Clear(); - throw; - } - catch (Exception ex) - { - _dbContext.ChangeTracker.Clear(); - throw new StorageException(ex); - } - } - - public void ReserveWorksForComplitedWork(ComplitedWorkDataModel workDataModel) - { - try - { - var requiredWork = _dbContext.Works - .FirstOrDefault(w => w.Id == workDataModel.WorkId) - ?? throw new ElementNotFoundException(workDataModel.WorkId); - + int requiredQuantity = 2; var workStocks = _dbContext.WorkWarehouses .Where(ww => ww.WorkId == requiredWork.Id) .OrderByDescending(ww => ww.Quantity) - .ToList(); - - int requiredQuantity = 1; + .ToList(); foreach (var stock in workStocks) { @@ -190,24 +163,27 @@ namespace TwoFromTheCasketDatabase.Implementations } if (requiredQuantity > 0) - { throw new ElementNotFoundException("Not enough work"); - } _dbContext.SaveChanges(); + transaction.Commit(); + return true; } catch (ElementNotFoundException) { + transaction.Rollback(); _dbContext.ChangeTracker.Clear(); throw; } catch (Exception ex) { + transaction.Rollback(); _dbContext.ChangeTracker.Clear(); throw new StorageException(ex); } } + } } diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/BusinessLogicsContractsTests/ComplitedWorkBusinessLogicContractTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/BusinessLogicsContractsTests/ComplitedWorkBusinessLogicContractTests.cs index 3dfe60d..37cbf3a 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketTests/BusinessLogicsContractsTests/ComplitedWorkBusinessLogicContractTests.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/BusinessLogicsContractsTests/ComplitedWorkBusinessLogicContractTests.cs @@ -447,7 +447,7 @@ namespace TwoFromTheCasketTests.BusinessLogicsContractsTests { var flag = false; var record = new ComplitedWorkDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), new List()); - _warehouseStorageMock.Setup(x => x.CheckWorks(It.IsAny())).Returns(true); + _warehouseStorageMock.Setup(x => x.ReserveWorksForComplitedWork(It.IsAny())).Returns(true); _complitedWorkStorageMock.Setup(x => x.AddElement(It.IsAny())) .Callback((ComplitedWorkDataModel x) => @@ -466,7 +466,7 @@ namespace TwoFromTheCasketTests.BusinessLogicsContractsTests { _complitedWorkStorageMock.Setup(x => x.AddElement(It.IsAny())) .Throws(new ElementExistsException("Data", "Data")); - _warehouseStorageMock.Setup(x => x.CheckWorks(It.IsAny())).Returns(true); + _warehouseStorageMock.Setup(x => x.ReserveWorksForComplitedWork(It.IsAny())).Returns(true); Assert.That(() => _complitedWorkBusinessLogicContract.InsertComplitedWork(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), new List())), Throws.TypeOf()); @@ -489,7 +489,7 @@ namespace TwoFromTheCasketTests.BusinessLogicsContractsTests { _complitedWorkStorageMock.Setup(x => x.AddElement(It.IsAny())) .Throws(new StorageException(new InvalidOperationException())); - _warehouseStorageMock.Setup(x => x.CheckWorks(It.IsAny())).Returns(true); + _warehouseStorageMock.Setup(x => x.ReserveWorksForComplitedWork(It.IsAny())).Returns(true); Assert.That(() => _complitedWorkBusinessLogicContract.InsertComplitedWork( new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), new List())), @@ -501,13 +501,13 @@ namespace TwoFromTheCasketTests.BusinessLogicsContractsTests [Test] public void InsertComplitedWork_NotEnoughWorks_ThrowException_Test() { - _warehouseStorageMock.Setup(x => x.CheckWorks(It.IsAny())).Returns(false); + _warehouseStorageMock.Setup(x => x.ReserveWorksForComplitedWork(It.IsAny())).Returns(false); Assert.That(() => _complitedWorkBusinessLogicContract.InsertComplitedWork( new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), new List())), Throws.TypeOf()); - _warehouseStorageMock.Verify(x => x.CheckWorks(It.IsAny()), Times.Once); + _warehouseStorageMock.Verify(x => x.ReserveWorksForComplitedWork(It.IsAny()), Times.Once); } [Test] diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/Infrastructure/ConfigurationDatabaseTest.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/Infrastructure/ConfigurationDatabaseTest.cs index de54d2e..fac8a4c 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketTests/Infrastructure/ConfigurationDatabaseTest.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/Infrastructure/ConfigurationDatabaseTest.cs @@ -9,5 +9,5 @@ namespace TwoFromTheCasketTests.Infrastructure; public class ConfigurationDatabaseTest : IConfigurationDatabase { - public string ConnectionString => "Host=localhost;Port=5432;Database=TwoFromTheCasketDb;Username=postgres;Password=1234"; + public string ConnectionString => "Host=localhost;Port=5432;Database=TwoFromTheCasketDbHard2;Username=postgres;Password=1234"; } \ No newline at end of file diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/ComplitedWorkStorageContractTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/ComplitedWorkStorageContractTests.cs index 537c0e0..3f5d166 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/ComplitedWorkStorageContractTests.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/ComplitedWorkStorageContractTests.cs @@ -15,16 +15,18 @@ namespace TwoFromTheCasketTests.StorageContracts; public class ComplitedWorkStorageContractTests : BaseStorageContractTest { private ComplitedWorkStorageContract _complitedWorkStorageContract; - private Mock _warehouseStorageMock; + private WarehouseStorageContract _warehouseStorage; [SetUp] public void SetUp() { - _warehouseStorageMock = new Mock(); + _warehouseStorage = new WarehouseStorageContract( + TwoFromTheCasketDb + ); _complitedWorkStorageContract = new ComplitedWorkStorageContract( TwoFromTheCasketDb, - _warehouseStorageMock.Object + _warehouseStorage ); } @@ -70,6 +72,12 @@ public class ComplitedWorkStorageContractTests : BaseStorageContractTest var roomId = InsertRoomToDatabase(Guid.NewGuid().ToString()).Id; var workId = InsertWorkToDatabase(Guid.NewGuid().ToString()).Id; + var warehouse1 = InsertWarehouseToDatabase(); + var warehouse2 = InsertWarehouseToDatabase(); + + InsertSupplyToDatabase(workId, warehouse1.Id, 3); + InsertSupplyToDatabase(workId, warehouse2.Id, 2); + var complitedWorkDataModel = new ComplitedWorkDataModel( Guid.NewGuid().ToString(), workId, @@ -90,8 +98,8 @@ public class ComplitedWorkStorageContractTests : BaseStorageContractTest var warehouse1 = InsertWarehouseToDatabase(); var warehouse2 = InsertWarehouseToDatabase(); - InsertWorkToWarehouse(warehouse1.Id, workId, 2); - InsertWorkToWarehouse(warehouse2.Id, workId, 3); + InsertSupplyToDatabase(workId, warehouse1.Id, 2); + InsertSupplyToDatabase(workId, warehouse2.Id, 3); var complitedWorkDataModel = CreateComplitedWorkDataModel(Guid.NewGuid().ToString(), workId); @@ -102,7 +110,7 @@ public class ComplitedWorkStorageContractTests : BaseStorageContractTest var remainingWork1 = GetWorkQuantityFromWarehouse(warehouse1.Id, workId); var remainingWork2 = GetWorkQuantityFromWarehouse(warehouse2.Id, workId); - Assert.That(remainingWork1 + remainingWork2, Is.EqualTo(4)); + Assert.That(remainingWork1 + remainingWork2, Is.EqualTo(3)); } [Test] @@ -112,12 +120,28 @@ public class ComplitedWorkStorageContractTests : BaseStorageContractTest InsertWorkToDatabase(workId); var warehouse = InsertWarehouseToDatabase(); - InsertWorkToWarehouse(warehouse.Id, workId, 0); + InsertSupplyToDatabase(workId, warehouse.Id, 0); var complitedWorkDataModel = CreateComplitedWorkDataModel(Guid.NewGuid().ToString(), workId); Assert.That(() => _complitedWorkStorageContract.AddElement(complitedWorkDataModel), - Throws.TypeOf().With.Message.Contains("Not enough work available")); + Throws.TypeOf()); + } + + [Test] + public void Try_AddElement_WhenOneELementNotEnoughWorkAvailable_Test() + { + var workId = Guid.NewGuid().ToString(); + InsertWorkToDatabase(workId); + + var warehouse = InsertWarehouseToDatabase(); + InsertSupplyToDatabase(workId, warehouse.Id, 0); + InsertSupplyToDatabase(workId, warehouse.Id, 1); + + var complitedWorkDataModel = CreateComplitedWorkDataModel(Guid.NewGuid().ToString(), workId); + + Assert.That(() => _complitedWorkStorageContract.AddElement(complitedWorkDataModel), + Throws.TypeOf()); } @@ -212,7 +236,7 @@ public class ComplitedWorkStorageContractTests : BaseStorageContractTest private static void AssertElement(ComplitedWork? actual, ComplitedWorkDataModel expected) { - Assert.That(actual, Is.Not.Null, "ComplitedWork не найден в базе после добавления"); // ✅ Проверка перед сравнением + Assert.That(actual, Is.Not.Null, "ComplitedWork не найден в базе после добавления"); Assert.Multiple(() => { @@ -261,7 +285,7 @@ public class ComplitedWorkStorageContractTests : BaseStorageContractTest private Worker InsertWorkerToDatabase(string id, string fio = "Иванов И.И.") { - var phonenumber = $"+791012345{new Random().Next(10, 99)}"; + var phonenumber = $"+79101234{new Random().Next(100, 999)}"; var worker = new Worker { Id = id, @@ -312,6 +336,23 @@ public class ComplitedWorkStorageContractTests : BaseStorageContractTest .FirstOrDefault(); } + private void InsertSupplyToDatabase(string workId, string warehouseId, double quantity) + { + var supplyId = Guid.NewGuid().ToString(); + + var supply = new SupplyDataModel( + supplyId, + warehouseId, + DateTime.UtcNow, + new List + { + new WorkSupplyDataModel(workId, supplyId, quantity) + }); + + new SupplyStorageContract(TwoFromTheCasketDb).AddElement(supply); + } + + private TwoFromTheCasketDatabase.Models.Specialization InsertSpecializationToDatabase(string id, string name = null, double salary = 50000) { name ??= $"Повар , {new Random().Next(1, 1000)}"; diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/SupplyStorageContractTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/SupplyStorageContractTests.cs index 44accf0..9cfac79 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/SupplyStorageContractTests.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/SupplyStorageContractTests.cs @@ -23,7 +23,7 @@ public class SupplyStorageContractTests : BaseStorageContractTest { TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"WorkSupplyies\" CASCADE;"); TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"Supplies\" CASCADE;"); - TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"Work_Warehouses\" CASCADE;"); + TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"WorkWarehouses\" CASCADE;"); TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"Warehouses\" CASCADE;"); TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"Works\" CASCADE;"); } @@ -210,6 +210,7 @@ public class SupplyStorageContractTests : BaseStorageContractTest private SupplyDataModel CreateSupplyDataModel(string warehouseId) { var workId = InsertWork().Id; + return new SupplyDataModel( Guid.NewGuid().ToString(), warehouseId, diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/WarehouseStorageContract.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/WarehouseStorageContract.cs index 6f0a9e1..83d4308 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/WarehouseStorageContract.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/WarehouseStorageContract.cs @@ -2,6 +2,7 @@ using NUnit.Framework; using TwoFromTheCasketContracts.DataModels; using TwoFromTheCasketContracts.Exceptions; +using TwoFromTheCasketContracts.StorageContracts; using TwoFromTheCasketDatabase.Implementations; using TwoFromTheCasketDatabase.Models; @@ -21,7 +22,7 @@ public class WarehouseStorageContractTests : BaseStorageContractTest [TearDown] public void TearDown() { - TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"Work_Warehouses\" CASCADE;"); + TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"WorkWarehouses\" CASCADE;"); TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"Warehouses\" CASCADE;"); TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"Works\" CASCADE;"); TwoFromTheCasketDb.Database.ExecuteSqlRaw("TRUNCATE \"ComplitedWorks\" CASCADE;"); @@ -143,7 +144,7 @@ public class WarehouseStorageContractTests : BaseStorageContractTest var complitedWork = CreateComplitedWork(workId); - var checkResult = _warehouseStorageContract.CheckWorks(complitedWork); + var checkResult = _warehouseStorageContract.ReserveWorksForComplitedWork(complitedWork); Assert.That(checkResult, Is.True); } @@ -157,9 +158,9 @@ public class WarehouseStorageContractTests : BaseStorageContractTest InsertWorkToWarehouse(warehouse.Id, workId, 0); var complitedWork = CreateComplitedWork(workId); - var checkResult = _warehouseStorageContract.CheckWorks(complitedWork); - Assert.That(checkResult, Is.False); + Assert.That(() => _warehouseStorageContract.ReserveWorksForComplitedWork(complitedWork), + Throws.TypeOf()); } @@ -182,7 +183,7 @@ public class WarehouseStorageContractTests : BaseStorageContractTest .Where(x => x.WorkId == workId) .Sum(x => x.Quantity); - Assert.That(total, Is.EqualTo(4)); + Assert.That(total, Is.EqualTo(3)); } [Test] @@ -196,7 +197,7 @@ public class WarehouseStorageContractTests : BaseStorageContractTest var complitedWork = CreateComplitedWork(workId); Assert.That(() => _warehouseStorageContract.ReserveWorksForComplitedWork(complitedWork), - Throws.TypeOf().With.Message.Contains("Not enough work available")); + Throws.TypeOf()); } private Warehouse InsertWarehouseToDatabase(string name, string location) { diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/WorkerStorageContractTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/WorkerStorageContractTests.cs index bd62204..c0b159b 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/WorkerStorageContractTests.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/StorageContracts/WorkerStorageContractTests.cs @@ -173,9 +173,9 @@ public class WorkerStorageContractTests : BaseStorageContractTest private Worker InsertWorkerToDatabase(string id, string specializationId = null, string fio = "Иванов И.И.", string phoneNumber = "+79101234567", DateTime? dateBirthday = null) { - specializationId = InsertSpecializationToDatabase(Guid.NewGuid().ToString()).Id; // ✅ Создаем специализацию перед работником + specializationId = InsertSpecializationToDatabase(Guid.NewGuid().ToString()).Id; - var phonenumber = $"+791012345{new Random().Next(10, 99)}"; + var phonenumber = $"+791012345{new Random().Next(100, 999)}"; var worker = new Worker {