using SoftwareInstallationContracts.DataModels; using SoftwareInstallationContracts.Exceptions; namespace SoftwareInstallationTests.DataModelsTests; [TestFixture] internal class SupplyDataModelTests { private SupplyDataModel supply; [Test] public void IdIsEmptyTest() { supply = CreateDataModel(null, Guid.NewGuid().ToString(), DateTime.UtcNow, 10, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); supply = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), DateTime.UtcNow, 10, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { supply = CreateDataModel("Id", Guid.NewGuid().ToString(), DateTime.UtcNow, 10, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void CompanyIdIsEmptyTest() { supply = CreateDataModel(Guid.NewGuid().ToString(), null, DateTime.UtcNow, 10, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); supply = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, DateTime.UtcNow, 10, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void CompanyIdIsNotGuidTest() { supply = CreateDataModel(Guid.NewGuid().ToString(), "companyId", DateTime.UtcNow, 10, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, 0, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, -10, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void SoftwaresIsNullOrEmptyTest() { supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, 10, null); Assert.That(() => supply.Validate(), Throws.TypeOf()); supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, 10, []); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { string supplyId = Guid.NewGuid().ToString(); string companyId = Guid.NewGuid().ToString(); double totalCost = 10; DateTime dateTime = DateTime.UtcNow; List softwares = CreateSubDataModel(); supply = CreateDataModel(supplyId, companyId, dateTime, totalCost, softwares); Assert.That(() => supply.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(supply.Id, Is.EqualTo(supplyId)); Assert.That(supply.CompanyId, Is.EqualTo(companyId)); Assert.That(supply.TotalCost, Is.EqualTo(totalCost)); Assert.That(supply.SupplyDate, Is.EqualTo(dateTime)); Assert.That(supply.Softwares, Is.EquivalentTo(softwares)); }); } private static SupplyDataModel CreateDataModel(string? id, string? companyId, DateTime supplyDate, double totalCost, List softwares) => new(id, companyId, supplyDate, totalCost, softwares); private static List CreateSubDataModel() => [new (Guid.NewGuid().ToString(), 10, Guid.NewGuid().ToString(), Guid.NewGuid().ToString())]; }