using TwoFromTheCaseContracts.DataModels; using TwoFromTheCaseContracts.Enums; using TwoFromTheCaseContracts.Exceptions; namespace TwoFromTheCaseTests.DataModelsTests; [TestFixture] class PremisesDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var premises = CreateDataModel(null, PremisesType.Residential, Guid.NewGuid().ToString(), false); Assert.That(() => premises.Validate(), Throws.TypeOf()); premises = CreateDataModel(string.Empty, PremisesType.Residential, Guid.NewGuid().ToString(), false); Assert.That(() => premises.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var premises = CreateDataModel("id", PremisesType.Residential, Guid.NewGuid().ToString(), false); Assert.That(() => premises.Validate(), Throws.TypeOf()); } [Test] public void PremisesTypeIsNoneTest() { var premises = CreateDataModel(Guid.NewGuid().ToString(), PremisesType.None, Guid.NewGuid().ToString(), false); Assert.That(() => premises.Validate(), Throws.TypeOf()); } [Test] public void CustomerIdIsNullOrEmptyTest() { var premises = CreateDataModel(Guid.NewGuid().ToString(), PremisesType.Residential, null, false); Assert.That(() => premises.Validate(), Throws.TypeOf()); premises = CreateDataModel(Guid.NewGuid().ToString(), PremisesType.Residential, string.Empty, false); Assert.That(() => premises.Validate(), Throws.TypeOf()); } [Test] public void CustomerIdIsNotGuidTest() { var premises = CreateDataModel(Guid.NewGuid().ToString(), PremisesType.Residential, "customerId", false); Assert.That(() => premises.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var premisesId = Guid.NewGuid().ToString(); var premisesType = PremisesType.Residential; var premisesCustomerId = Guid.NewGuid().ToString(); var premisesIsDelete = false; var premises = CreateDataModel(premisesId, premisesType, premisesCustomerId, premisesIsDelete); Assert.That(() => premises.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(premises.Id, Is.EqualTo(premisesId)); Assert.That(premises.PremisesType, Is.EqualTo(premisesType)); Assert.That(premises.CustomerId, Is.EqualTo(premisesCustomerId)); Assert.That(premises.IsDeleted, Is.EqualTo(premisesIsDelete)); }); } private static PremisesDataModel CreateDataModel(string? id, PremisesType premisesType, string? customerId, bool isDeleted) => new(id, premisesType, customerId, isDeleted); }