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