76 lines
2.7 KiB
C#
76 lines
2.7 KiB
C#
using WildPlumContracts.DataModels;
|
|
using WildPlumContracts.Exceptions;
|
|
|
|
namespace WildPlumTests.DataModelTests;
|
|
|
|
[TestFixture]
|
|
public class SalaryDataModelTests
|
|
{
|
|
[Test]
|
|
public void Validate_ThrowsException_WhenIdIsNullOrEmpty()
|
|
{
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(() => CreateDataModel(null!, Guid.NewGuid().ToString(), 5000, DateTime.UtcNow).Validate(),
|
|
Throws.TypeOf<ValidationException>());
|
|
Assert.That(() => CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 5000, DateTime.UtcNow).Validate(),
|
|
Throws.TypeOf<ValidationException>());
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void Validate_ThrowsException_WhenIdIsNotGuid()
|
|
{
|
|
Assert.That(() => CreateDataModel("invalid-guid", Guid.NewGuid().ToString(), 5000, DateTime.UtcNow).Validate(),
|
|
Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void Validate_ThrowsException_WhenWorkerIdIsNullOrEmpty()
|
|
{
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), null!, 5000, DateTime.UtcNow).Validate(),
|
|
Throws.TypeOf<ValidationException>());
|
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 5000, DateTime.UtcNow).Validate(),
|
|
Throws.TypeOf<ValidationException>());
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void Validate_ThrowsException_WhenWorkerIdIsNotGuid()
|
|
{
|
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), "invalid-guid", 5000, DateTime.UtcNow).Validate(),
|
|
Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void Validate_ThrowsException_WhenAmountIsNonPositive()
|
|
{
|
|
Assert.That(() => CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, DateTime.UtcNow).Validate(),
|
|
Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void AllFieldsAreCorrectTest()
|
|
{
|
|
var id = Guid.NewGuid().ToString();
|
|
var workerId = Guid.NewGuid().ToString();
|
|
var amount = 5000;
|
|
var salaryDate = DateTime.UtcNow;
|
|
|
|
var salaryData = CreateDataModel(id, workerId, amount, salaryDate);
|
|
|
|
Assert.That(() => salaryData.Validate(), Throws.Nothing);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(salaryData.Id, Is.EqualTo(id));
|
|
Assert.That(salaryData.WorkerId, Is.EqualTo(workerId));
|
|
Assert.That(salaryData.Amount, Is.EqualTo(amount));
|
|
Assert.That(salaryData.SalaryDate, Is.EqualTo(salaryDate).Within(TimeSpan.FromSeconds(1)));
|
|
});
|
|
}
|
|
|
|
private static SalaryDataModel CreateDataModel(string id, string workerId, decimal amount, DateTime date) =>
|
|
new(id, workerId, amount, date);
|
|
} |