Files
Pibd-21_Semin_D.A._SmallSof…/SmallSoftwareProject/SmallSoftwareTests/DataModelsTests/RequestDataModelTests.cs
2025-03-12 22:39:58 +04:00

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)];
}