using MagicCarpetContracts.DataModels; using MagicCarpetContracts.Exceptions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MagicCarpetTests.DataModelTests; [TestFixture] internal class SalaryDataModelTests { [Test] public void EmployeeIdIsEmptyTest() { 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 EmployeeIdIsNotGuidTest() { var salary = CreateDataModel("employeeId", DateTime.Now, 10); Assert.That(() => salary.Validate(), Throws.TypeOf()); } [Test] public void SalaryIsLessOrZeroTest() { 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 enployeeSalary = 10; var salary = CreateDataModel(employeeId, salaryDate, enployeeSalary); 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(enployeeSalary)); }); } private static SalaryDataModel CreateDataModel(string? employeeId, DateTime salaryDate, double employeeSalary) => new(employeeId, salaryDate, employeeSalary); }