using SmallSoftwareContracts.DataModels; using SmallSoftwareContracts.Exceptions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SmallSoftwareTests.DataModelsTests; [TestFixture] internal class SupplyDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var supply = CreateDataModel(null, Guid.NewGuid().ToString(), DateTime.UtcNow, new List()); Assert.That(() => supply.Validate(), Throws.TypeOf()); supply = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), DateTime.UtcNow, new List()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var supply = CreateDataModel("invalid-id", Guid.NewGuid().ToString(), DateTime.UtcNow, new List()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void StorageIdIsNullOrEmptyTest() { var supply = CreateDataModel(Guid.NewGuid().ToString(), null, DateTime.UtcNow, new List()); Assert.That(() => supply.Validate(), Throws.TypeOf()); supply = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, DateTime.UtcNow, new List()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void StorageIdIsNotGuidTest() { var supply = CreateDataModel(Guid.NewGuid().ToString(), "invalid-storage-id", DateTime.UtcNow, new List()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void SupplyIngredientsIsEmptyTest() { var supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, new List()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsAreCorrectTest() { var supplyId = Guid.NewGuid().ToString(); var storageId = Guid.NewGuid().ToString(); var supplyDate = DateTime.UtcNow; var supplySoftwarees = new List { new SupplySoftwareDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10) }; var supply = CreateDataModel(supplyId, storageId, supplyDate, supplySoftwarees); Assert.That(() => supply.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(supply.Id, Is.EqualTo(supplyId)); Assert.That(supply.StorageId, Is.EqualTo(storageId)); Assert.That(supply.SupplyDate, Is.EqualTo(supplyDate)); Assert.That(supply.Softwares, Is.EqualTo(supplySoftwarees)); }); } private static SupplyDataModel CreateDataModel(string? id, string? storageId, DateTime supplyDate, List supplySoftwarees) { return new SupplyDataModel(id, storageId, supplyDate, supplySoftwarees); } }