using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using HamContract.DataModels; namespace HamTests.DataModelsTest; [TestFixture] internal class EmployeeDataModelTest { [TestFixture] internal class WorkerDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var employee = CreateDataModel(null, "name", "phone", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(string.Empty, "name", "phone", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var employee = CreateDataModel("id", "name", "phone", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void NameIsNullOrEmptyTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "name", null, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(Guid.NewGuid().ToString(), "name", string.Empty, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void PhoneIsNullOrEmptyTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), null, "phone", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "phone", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void PhoneIsIncorrectTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "name", "777", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void PostIdIsNullOrEmptyTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "name", "number", null, DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(Guid.NewGuid().ToString(), "name", "number", string.Empty, DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void PostIdIsNotGuidTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "name", "number", "postId", DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void BirthDateIsNotCorrectTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "name", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18).AddDays(1), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void BirthDateAndEmploymentDateIsNotCorrectTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "name", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-18).AddDays(-1), false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(Guid.NewGuid().ToString(), "name", "number", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-16), false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var employeeId = Guid.NewGuid().ToString(); var name = "name"; var phone = "+7-777-777-77-77"; var postId = Guid.NewGuid().ToString(); var dateofbirth = DateTime.Now.AddYears(-18).AddDays(-1); var employmentDate = DateTime.Now; var isDelete = false; var employee = CreateDataModel(employeeId, name, phone, postId, dateofbirth, employmentDate, isDelete); Assert.That(() => employee.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(employee.Id, Is.EqualTo(employeeId)); Assert.That(employee.Name, Is.EqualTo(name)); Assert.That(employee.Phone, Is.EqualTo(phone)); Assert.That(employee.PostId, Is.EqualTo(postId)); Assert.That(employee.Dateofbirth, Is.EqualTo(dateofbirth)); Assert.That(employee.EmploymentDate, Is.EqualTo(employmentDate)); Assert.That(employee.IsDeleted, Is.EqualTo(isDelete)); }); } private static EmployeeDataModel CreateDataModel(string? id, string? name, string? phone, string? postId, DateTime dateofbirth, DateTime employmentDate, bool isDeleted) => new(id, name, phone, postId, dateofbirth, employmentDate, isDeleted); } }