using TwoFromTheCaseContracts.DataModels; using TwoFromTheCaseContracts.Exceptions; namespace TwoFromTheCaseTests.DataModelsTests; [TestFixture] class CustomerDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var customer = CreateDataModel(null, "name", "number"); Assert.That(() => customer.Validate(), Throws.TypeOf()); customer = CreateDataModel(string.Empty, "name", "number"); Assert.That(() => customer.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var customer = CreateDataModel("id", "name", "number"); Assert.That(() => customer.Validate(), Throws.TypeOf()); } [Test] public void FIOIsNullOrEmptyTest() { var customer = CreateDataModel(Guid.NewGuid().ToString(), null, "number"); Assert.That(() => customer.Validate(), Throws.TypeOf()); customer = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "number"); Assert.That(() => customer.Validate(), Throws.TypeOf()); } [Test] public void PhoneNumberIsNullOrEmptyTest() { var customer = CreateDataModel(Guid.NewGuid().ToString(), "name", null); Assert.That(() => customer.Validate(), Throws.TypeOf()); customer = CreateDataModel(Guid.NewGuid().ToString(), "name", string.Empty); Assert.That(() => customer.Validate(), Throws.TypeOf()); } [Test] public void PhoneNumberIsIncorrectTest() { var customer = CreateDataModel(Guid.NewGuid().ToString(), "name", "777"); Assert.That(() => customer.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var customerId = Guid.NewGuid().ToString(); var name = "Name"; var phoneNumber = "+77777777777"; var customer = CreateDataModel(customerId, name, phoneNumber); Assert.That(() => customer.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(customer.Id, Is.EqualTo(customerId)); Assert.That(customer.Name, Is.EqualTo(name)); Assert.That(customer.PhoneNumber, Is.EqualTo(phoneNumber)); }); } private static CustomerDataModel CreateDataModel(string? id, string? name, string? phoneNumber) => new(id, name, phoneNumber); }