using TheCyclopsContracts.DataModels; using TheCyclopsContracts.Exceptions; namespace TheCyclopsTests.DataModelsTests; [TestFixture] internal class SupplyDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var supply = CreateDataModel(null, DateTime.UtcNow, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); supply = CreateDataModel(string.Empty, DateTime.UtcNow, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var supply = CreateDataModel("id", DateTime.UtcNow, CreateSubDataModel()); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void ComponentsIsNullOrEmptyTest() { var supply = CreateDataModel(Guid.NewGuid().ToString(), DateTime.UtcNow, null); Assert.That(() => supply.Validate(), Throws.TypeOf()); supply = CreateDataModel(Guid.NewGuid().ToString(), DateTime.UtcNow, []); Assert.That(() => supply.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var supplyId = Guid.NewGuid().ToString(); var components = CreateSubDataModel(); var supply = CreateDataModel(supplyId, DateTime.UtcNow, components); Assert.That(() => supply.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(supply.Id, Is.EqualTo(supplyId)); Assert.That(supply.Components, Is.EquivalentTo(components)); }); } private static SupplyDataModel CreateDataModel(string id, DateTime date, List components) => new(id, date, components); private static List CreateSubDataModel() => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10)]; }