using SquirrelBarContracts.DataModels; using System.ComponentModel.DataAnnotations; namespace SquirrelBarTests.DataModelsTests; [TestFixture] internal class BuyerDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var model = CreateDataModel(null, "Иванов И.И.", DateTime.Now.AddYears(-20), "number", 10, 15); Assert.That(() => model.Validate(), Throws.TypeOf()); model = CreateDataModel(string.Empty, "Иванов И.И.", DateTime.Now.AddYears(-20), "number", 10, 15); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var model = CreateDataModel("not a guid", "Иванов И.И.", DateTime.Now.AddYears(-20), "number", 10, 15); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void FioIsNullOrEmptyTest() { var model = CreateDataModel(Guid.NewGuid().ToString(), null, DateTime.Now.AddYears(-20), "number", 10, 15); Assert.That(() => model.Validate(), Throws.TypeOf()); model = CreateDataModel(Guid.NewGuid().ToString(), string.Empty,DateTime.Now.AddYears(-20), "number", 10, 15); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void FioIsNotCorrectTest() { var model = CreateDataModel(Guid.NewGuid().ToString(), "Иванов", DateTime.Now.AddYears(-20), "number", 10, 15); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void PhoneNumberIsNullOrEmptyTest() { var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", DateTime.Now.AddYears(-20), null, 10, 15); Assert.That(() => buyer.Validate(), Throws.TypeOf()); buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", DateTime.Now.AddYears(-20), string.Empty, 10, 15); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void PhoneNumberIsIncorrectTest() { var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", DateTime.Now.AddYears(-20), "7777", 10, 15); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void BirthDateIsFutureTest() { var model = CreateDataModel(Guid.NewGuid().ToString(), "fio", DateTime.Now.AddYears(-14).AddDays(1),"number", 10, 15); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var id = Guid.NewGuid().ToString(); var fio = "Иванов И.И."; var birthDate = DateTime.Now.AddYears(-20); var phoneNumber = "+7-777-777-77-77"; var drinksBought = 2; var discountSize = 11; var model = CreateDataModel(id, fio, birthDate, phoneNumber, drinksBought, discountSize); Assert.That(() => model.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(model.Id, Is.EqualTo(id)); Assert.That(model.FIO, Is.EqualTo(fio)); Assert.That(model.BirthDate, Is.EqualTo(birthDate)); Assert.That(model.PhoneNumber, Is.EqualTo(phoneNumber)); Assert.That(model.DrinksBought, Is.EqualTo(drinksBought)); Assert.That(model.DiscountSize, Is.EqualTo(discountSize)); }); } private static BuyerDataModel CreateDataModel(string? id, string? fio, DateTime birthDate, string? phoneNumber, int drinksBought, double discountSize) => new(id, fio, birthDate, phoneNumber, drinksBought, discountSize); }