105 lines
4.5 KiB
C#
105 lines
4.5 KiB
C#
using SmallSoftwareContracts.DataModels;
|
|
using SmallSoftwareContracts.Exceptions;
|
|
|
|
namespace SmallSoftwareTests.DataModelsTests;
|
|
|
|
[TestFixture]
|
|
internal class RequestDataModelTests
|
|
{
|
|
[Test]
|
|
public void IdIsNullOrEmptyTest()
|
|
{
|
|
var request = CreateDataModel(null, Guid.NewGuid().ToString(), "test@example.com", 10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
|
|
request = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), "test@example.com", 10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void IdIsNotGuidTest()
|
|
{
|
|
var request = CreateDataModel("id", Guid.NewGuid().ToString(), "test@example.com", 10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void WorkerIdIsNullOrEmptyTest()
|
|
{
|
|
var request = CreateDataModel(Guid.NewGuid().ToString(), null, "test@example.com", 10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
|
|
request = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, "test@example.com", 10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void WorkerIdIsNotGuidTest()
|
|
{
|
|
var request = CreateDataModel(Guid.NewGuid().ToString(), "workerId", "test@example.com", 10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void EmailIsInvalidTest()
|
|
{
|
|
var request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "invalid_email", 10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
|
|
request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "", 10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void SumIsLessOrZeroTest()
|
|
{
|
|
var request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 0, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
|
|
request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", -10, false, CreateSubDataModel());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void SoftwaresIsNullOrEmptyTest()
|
|
{
|
|
var request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10, false, null);
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
|
|
request = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10, false, new List<InstallationRequestDataModel>());
|
|
Assert.That(() => request.Validate(), Throws.TypeOf<ValidationException>());
|
|
}
|
|
|
|
[Test]
|
|
public void AllFieldsAreCorrectTest()
|
|
{
|
|
var requestId = Guid.NewGuid().ToString();
|
|
var workerId = Guid.NewGuid().ToString();
|
|
var email = "test@example.com";
|
|
var sum = 10;
|
|
var isCancel = true;
|
|
var softwares = CreateSubDataModel();
|
|
|
|
var request = CreateDataModel(requestId, workerId, email, sum, isCancel, softwares);
|
|
|
|
Assert.That(() => request.Validate(), Throws.Nothing);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(request.Id, Is.EqualTo(requestId));
|
|
Assert.That(request.WorkerId, Is.EqualTo(workerId));
|
|
Assert.That(request.Email, Is.EqualTo(email));
|
|
Assert.That(request.Sum, Is.EqualTo(sum));
|
|
Assert.That(request.IsCancel, Is.EqualTo(isCancel));
|
|
Assert.That(request.Softwares, Is.EquivalentTo(softwares));
|
|
});
|
|
}
|
|
|
|
private static RequestDataModel CreateDataModel(string? id, string? workerId, string email, double sum, bool isCancel, List<InstallationRequestDataModel>? softwares) =>
|
|
new(id, workerId, email, sum, isCancel, softwares);
|
|
|
|
private static List<InstallationRequestDataModel> CreateSubDataModel() =>
|
|
[new InstallationRequestDataModel(Guid.NewGuid().ToString(), "SoftwareName", 1, 10)];
|
|
}
|
|
|
|
|