using TheCyclopsContracts.DataModels; using TheCyclopsContracts.Exceptions; namespace TheCyclopsTests.DataModelsTests; [TestFixture] internal class SalaryDataModelTests { [Test] public void WorkerIdIsEmptyTest() { var salary = CreateDataModel(null, DateTime.Now, 10); Assert.That(() => salary.Validate(), Throws.TypeOf()); salary = CreateDataModel(string.Empty, DateTime.Now, 10); Assert.That(() => salary.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNotGuidTest() { var salary = CreateDataModel("employeeId", DateTime.Now, 10); Assert.That(() => salary.Validate(), Throws.TypeOf()); } [Test] public void PriceIsLessOrZeroTest() { var salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, 0); Assert.That(() => salary.Validate(), Throws.TypeOf()); salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, -10); Assert.That(() => salary.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var employeeId = Guid.NewGuid().ToString(); var salaryDate = DateTime.Now.AddDays(-3).AddMinutes(-5); var employeeSalary = 10; var salary = CreateDataModel(employeeId, salaryDate, employeeSalary); Assert.That(() => salary.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(salary.EmployeeId, Is.EqualTo(employeeId)); Assert.That(salary.SalaryDate, Is.EqualTo(salaryDate)); Assert.That(salary.Salary, Is.EqualTo(employeeSalary)); }); } private static SalaryDataModel CreateDataModel(string? employeeId, DateTime salaryDate, double workerSalary) => new(employeeId, salaryDate, workerSalary); }