using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using TheButcherShopContracts.DataModels; using TheButcherShopContracts.Exceptions; namespace ButcherShopTests.DataModelTests; [TestFixture] internal class WorkerDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var worker = CreateDataModel(null, "fio", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); worker = CreateDataModel(string.Empty, "fio", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var worker = CreateDataModel("id", "fio", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); } [Test] public void FIOIsNullOrEmptyTest() { var worker = CreateDataModel(Guid.NewGuid().ToString(), null, "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); worker = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); } [Test] public void PhoneNumberIsNullOrEmptyTest() { var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", null, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => buyer.Validate(), Throws.TypeOf()); buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", string.Empty, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void PhoneNumberIsIncorrectTest() { var buyer = CreateDataModel(Guid.NewGuid().ToString(), "fio", "777", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => buyer.Validate(), Throws.TypeOf()); } [Test] public void PostIdIsNullOrEmptyTest() { var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", "number", null, DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", "number", string.Empty, DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); } [Test] public void PostIdIsNotGuidTest() { var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", "number", "postId", DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); } [Test] public void BirthDateIsNotCorrectTest() { var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(1), DateTime.Now, false); Assert.That(() => worker.Validate(), Throws.TypeOf()); } [Test] public void BirthDateAndEmploymentDateIsNotCorrectTest() { var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-18).AddDays(-1), false); Assert.That(() => worker.Validate(), Throws.TypeOf()); worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-16), false); Assert.That(() => worker.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var workerId = Guid.NewGuid().ToString(); var fio = "fio"; var phoneNumber = "+7-777-777-77-77"; var postId = Guid.NewGuid().ToString(); var birthDate = DateTime.Now.AddYears(-16).AddDays(-1); var employmentDate = DateTime.Now; var isDelete = false; var worker = CreateDataModel(workerId, fio, phoneNumber, postId, birthDate, employmentDate, isDelete); Assert.That(() => worker.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(worker.Id, Is.EqualTo(workerId)); Assert.That(worker.FIO, Is.EqualTo(fio)); Assert.That(worker.PhoneNumber, Is.EqualTo(phoneNumber)); Assert.That(worker.PostId, Is.EqualTo(postId)); Assert.That(worker.BirthDate, Is.EqualTo(birthDate)); Assert.That(worker.EmploymentDate, Is.EqualTo(employmentDate)); Assert.That(worker.IsDeleted, Is.EqualTo(isDelete)); }); } private static WorkerDataModel CreateDataModel(string? id, string? fio, string? phoneNumber, string? postId, DateTime birthDate, DateTime employmentDate, bool isDeleted) => new(id, fio, phoneNumber, postId, birthDate, employmentDate, isDeleted); }