64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using TwoFromTheCasketContratcs.DataModels;
|
|
using TwoFromTheCasketContratcs.Exceptions;
|
|
|
|
namespace TwoFromTheCasketTest.DataModelsTest;
|
|
|
|
[TestFixture]
|
|
public class SalaryDataModellTests
|
|
{
|
|
[Test]
|
|
public void MasterIdIsNullOrEmptyTest()
|
|
{
|
|
var salary = CreateDataModel(string.Empty, DateTime.Now, 50000, 1000);
|
|
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void MasterIdIsNotGuidTest()
|
|
{
|
|
var salary = CreateDataModel("invalid-guid", DateTime.Now, 50000, 1000);
|
|
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void SalaryIsLessOrEqualToZeroTest()
|
|
{
|
|
var salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, 0, 1000);
|
|
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
|
|
|
|
salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, -1000, 1000);
|
|
Assert.That(() => salary.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void AllFieldsAreCorrectTest()
|
|
{
|
|
var masterId = Guid.NewGuid().ToString();
|
|
var salaryDate = DateTime.Now;
|
|
var masterSalary = 50000.0;
|
|
var prize = 1000.0;
|
|
|
|
var salary = CreateDataModel(masterId, salaryDate, masterSalary, prize);
|
|
|
|
Assert.That(() => salary.Validate(), Throws.Nothing);
|
|
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(salary.MasterId, Is.EqualTo(masterId));
|
|
Assert.That(salary.SalaryDate, Is.EqualTo(salaryDate));
|
|
Assert.That(salary.Salary, Is.EqualTo(masterSalary));
|
|
Assert.That(salary.Prize, Is.EqualTo(prize));
|
|
});
|
|
}
|
|
|
|
private static SalaryDataModel CreateDataModel(string masterId, DateTime salaryDate, double masterSalary, double prize)
|
|
{
|
|
return new SalaryDataModel(masterId, salaryDate, masterSalary, prize);
|
|
}
|
|
}
|