using RomashkiContracts.DataModels; using RomashkiContracts.Exceptions; namespace RomashkiTests { [TestFixture] internal class BuyerDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var buyer = CreateDataModel(null, "fio", "email@123.qwe", 10, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); buyer = CreateDataModel(string.Empty, "fio", "email@123.qwe", 10, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var buyer = CreateDataModel("id", "fio", "email@123.qwe", 10, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void FIOIsNullOrEmptyTest() { var buyer = CreateDataModel(Guid.NewGuid().ToString(), null, "email@123.qwe", 10, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); buyer = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "email@123.qwe", 10, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void EmailIsNullOrEmptyTest() { var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", null, 10, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", string.Empty, 10, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void PhoneNumberIsIncorrectTest() { var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", "email", 10, 10); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var buyerId = Guid.NewGuid().ToString(); var fio = "Fio"; var email = "email@123.qwe"; var totalSpend = 10; var discountSize = 11; var buyer = CreateDataModel(buyerId, fio, email, totalSpend, discountSize); Assert.That(() => buyer.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(buyer.Id, Is.EqualTo(buyerId)); Assert.That(buyer.FIO, Is.EqualTo(fio)); Assert.That(buyer.Email, Is.EqualTo(email)); Assert.That(buyer.TotalSpend, Is.EqualTo(totalSpend)); Assert.That(buyer.DiscountSize, Is.EqualTo(discountSize)); }); } private static BuyerDataModel CreateDataModel(string? id, string? fio, string? email, float totalSpend, double discountSize) => new(id, fio, email, totalSpend, discountSize); } }