59 lines
1.9 KiB
C#

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<ValidationException>());
storage = CreateDataModel(string.Empty, "123", CreateSubDataModel());
Assert.That(() => storage.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void IdIsNotGuidTest()
{
var storage = CreateDataModel("id", "123", CreateSubDataModel());
Assert.That(() => storage.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void ComponentsIsNullOrEmptyTest()
{
var storage = CreateDataModel(Guid.NewGuid().ToString(), "123", null);
Assert.That(() => storage.Validate(), Throws.TypeOf<ValidationException>());
storage = CreateDataModel(Guid.NewGuid().ToString(), "123", []);
Assert.That(() => storage.Validate(), Throws.TypeOf<ValidationException>());
}
[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<StorageComponentDataModel> components) =>
new(id, address, components);
private static List<StorageComponentDataModel> CreateSubDataModel()
=> [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10)];
}