using TheCyclopsContracts.DataModels; using TheCyclopsContracts.Exceptions; namespace TheCyclopsTests.DataModelsTests; [TestFixture] internal class EmployeeDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var employee = CreateDataModel(null, "fio", "mail@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(null, "fio", "mail@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var employee = CreateDataModel("id", "fio", "mail@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void FIOIsNullOrEmptyTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), null, "mail@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "mail@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void EmailIsNullOrEmptyTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "fio", null, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(Guid.NewGuid().ToString(), "fio", string.Empty, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void EmailIsIncorrectTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "fio", "mail@mail", 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(), "fio", "mail@mail.com", null, DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); employee = CreateDataModel(Guid.NewGuid().ToString(), "fio", "mail@mail.com", 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(), "fio", "mail@mail.com", "postId", DateTime.Now.AddYears(-18), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void BirthDateIsNotCorrectTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "fio", "mail@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(1), DateTime.Now, false); Assert.That(() => employee.Validate(), Throws.TypeOf()); } [Test] public void BirthDateAndEmploymentDateIsNotCorrectTest() { var employee = CreateDataModel(Guid.NewGuid().ToString(), "fio", "mail@mail.com", 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(), "fio", "mail@mail.com", 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 fio = "fio"; var email = "mail@mail.com"; var postId = Guid.NewGuid().ToString(); var birthDate = DateTime.Now.AddYears(-16).AddDays(-1); var employmentDate = DateTime.Now; var isDeleted = false; var employee = CreateDataModel(employeeId, fio, email, postId, birthDate, employmentDate, isDeleted); Assert.That(() => employee.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(employee.Id, Is.EqualTo(employeeId)); Assert.That(employee.FIO, Is.EqualTo(fio)); Assert.That(employee.Email, Is.EqualTo(email)); Assert.That(employee.PostId, Is.EqualTo(postId)); Assert.That(employee.BirthDate, Is.EqualTo(birthDate)); Assert.That(employee.EmploymentDate, Is.EqualTo(employmentDate)); Assert.That(employee.IsDeleted, Is.EqualTo(isDeleted)); }); } private static EmployeeDataModel CreateDataModel(string? id, string? fio, string? email, string? postId, DateTime birthDate, DateTime employmentDate, bool isDeleted) => new(id, fio, email, postId, birthDate, employmentDate, isDeleted); }