using SoftwareInstallationContracts.DataModels; using SoftwareInstallationContracts.Exceptions; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SoftwareInstallationTests.DataModelsTests; internal class SalaryDataModelTests { private SalaryDataModel salary; [Test] public void WorkerIdIsEmptyTest() { 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() { salary = CreateDataModel("workerId", DateTime.Now, 10); Assert.That(() => salary.Validate(), Throws.TypeOf()); } [Test] public void PriceIsLessOrZeroTest() { 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() { string workerId = Guid.NewGuid().ToString(); DateTime salaryDate = DateTime.Now.AddDays(-3).AddMinutes(-5); double workerSalary = 10; SalaryDataModel salary = CreateDataModel(workerId, salaryDate, workerSalary); Assert.That(() => salary.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(salary.WorkerId, Is.EqualTo(workerId)); Assert.That(salary.SalaryDate, Is.EqualTo(salaryDate)); Assert.That(salary.Salary, Is.EqualTo(workerSalary)); }); } private static SalaryDataModel CreateDataModel(string? workerId, DateTime salaryDate, double workerSalary) => new(workerId, salaryDate, workerSalary); }