using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SoftwareInstallationContracts.DataModels; using SoftwareInstallationContracts.Exceptions; namespace SoftwareInstallationTests.DataModelsTests; [TestFixture] internal class SoftwareWarehouseDataModelTests { private SoftwareWarehouseDataModel softwareWarehouse; [Test] public void SoftwareIdIsNullOrEmptyTest() { softwareWarehouse = CreateDataModel(null, Guid.NewGuid().ToString(), 10, 20); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); softwareWarehouse = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, 20); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); } [Test] public void SoftwareIdIsNotGuidTest() { softwareWarehouse = CreateDataModel("softwareId", Guid.NewGuid().ToString(), 10, 20); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); } [Test] public void WarehouseIdIsNullOrEmptyTest() { softwareWarehouse = CreateDataModel(Guid.NewGuid().ToString(), null, 10, 20); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); softwareWarehouse = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 10, 20); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); } [Test] public void WarehouseIdIsNotGuidTest() { softwareWarehouse = CreateDataModel(Guid.NewGuid().ToString(), "warehouseId", 10, 20); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); } [Test] public void MinimalCountIsLessOrZeroTest() { softwareWarehouse = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, 20); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); softwareWarehouse = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, 20); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); } [Test] public void CurrentCountIsLessOrZeroTest() { softwareWarehouse = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, 0); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); softwareWarehouse = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, -10); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); } [Test] public void CurrentCountIsLessThanMinimal() { softwareWarehouse = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, 9); Assert.That(() => softwareWarehouse.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { string softwareId = Guid.NewGuid().ToString(); string warehouseId = Guid.NewGuid().ToString(); int minimalCount = 10; int currentCount = 20; softwareWarehouse = CreateDataModel(softwareId, warehouseId, minimalCount, currentCount); Assert.That(() => softwareWarehouse.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(softwareWarehouse.SoftwareId, Is.EqualTo(softwareId)); Assert.That(softwareWarehouse.WarehouseId, Is.EqualTo(warehouseId)); Assert.That(softwareWarehouse.MinimalCount, Is.EqualTo(minimalCount)); Assert.That(softwareWarehouse.CurrentCount, Is.EqualTo(currentCount)); }); } private static SoftwareWarehouseDataModel CreateDataModel(string? softwareId, string? warehouseId, int minimalCount, int currentCount) => new(softwareId, warehouseId, minimalCount, currentCount); }