using SoftwareInstallationContracts.DataModels; using SoftwareInstallationContracts.Exceptions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SoftwareInstallationTests.DataModelsTests; internal class WarehouseDataModelTests { private WarehouseDataModel warehouse; [Test] public void IdIsEmptyTest() { warehouse = CreateDataModel(null, 10, 20, DateTime.Now); Assert.That(() => warehouse.Validate(), Throws.TypeOf()); warehouse = CreateDataModel(string.Empty, 10, 20, DateTime.Now); Assert.That(() => warehouse.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { warehouse = CreateDataModel("id", 10, 20, DateTime.Now); Assert.That(() => warehouse.Validate(), Throws.TypeOf()); } [Test] public void MinCountIsLessOrZeroTest() { warehouse = CreateDataModel(Guid.NewGuid().ToString(), 0, 10, DateTime.Now); Assert.That(() => warehouse.Validate(), Throws.TypeOf()); warehouse = CreateDataModel(Guid.NewGuid().ToString(), -10, 10, DateTime.Now); Assert.That(() => warehouse.Validate(), Throws.TypeOf()); } [Test] public void CurrentCountIsLessOrZeroTest() { warehouse = CreateDataModel(Guid.NewGuid().ToString(), 10, 0, DateTime.Now); Assert.That(() => warehouse.Validate(), Throws.TypeOf()); warehouse = CreateDataModel(Guid.NewGuid().ToString(), 10, -10, DateTime.Now); Assert.That(() => warehouse.Validate(), Throws.TypeOf()); } [Test] public void CurrentCountIsLessThanMinCount() { warehouse = CreateDataModel(Guid.NewGuid().ToString(), 10, 0, DateTime.Now); Assert.That(() => warehouse.Validate(), Throws.TypeOf()); } public void AllFieldsIsCorrectTest() { string warehouseId = Guid.NewGuid().ToString(); int minCount = 10; int currentCount = 10; DateTime date = DateTime.UtcNow; WarehouseDataModel warehouse = CreateDataModel(warehouseId, minCount, currentCount, date); Assert.That(() => warehouse.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(warehouse.Id, Is.EqualTo(warehouseId)); Assert.That(warehouse.MinCount, Is.EqualTo(minCount)); Assert.That(warehouse.CurrentCount, Is.EqualTo(currentCount)); Assert.That(warehouse.ChangeDate, Is.EqualTo(date)); }); } private static WarehouseDataModel CreateDataModel(string? id, int minCount, int currentCount, DateTime date) => new(id, minCount, currentCount, date); }