2025-02-13 14:18:53 +04:00

91 lines
3.7 KiB
C#

using TwoFromTheCaseContracts.DataModels;
using TwoFromTheCaseContracts.Exceptions;
namespace TwoFromTheCaseTests.DataModelsTests;
[TestFixture]
class WorkDataModelTests
{
[Test]
public void IdIsNullOrEmptyTest()
{
var work = CreateDataModel(null, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
work = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void IdIsNotGuidTest()
{
var work = CreateDataModel("id", Guid.NewGuid().ToString(), 10, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkerIdIsNullOrEmptyTest()
{
var work = CreateDataModel(Guid.NewGuid().ToString(), null, 10, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
work = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 10, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkerIdIsNotGuidTest()
{
var work = CreateDataModel(Guid.NewGuid().ToString(), "workerId", 10, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void PremisesIdIsNotGuidTest()
{
var work = CreateDataModel(Guid.NewGuid().ToString(), "premisesId", 10, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void PriceIsLessOrZeroTest()
{
var work = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
work = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, false, CreateSubDataModel());
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkersIsNullOrEmptyTest()
{
var work = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, null);
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
work = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []);
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void AllFieldsIsCorrectTest()
{
var workId = Guid.NewGuid().ToString();
var premisesId = Guid.NewGuid().ToString();
var price = 10;
var isCancel = true;
var workers = CreateSubDataModel();
var work = CreateDataModel(workId, premisesId, price, isCancel, workers);
Assert.That(() => work.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(work.Id, Is.EqualTo(workId));
Assert.That(work.PremisesId, Is.EqualTo(premisesId));
Assert.That(work.Price, Is.EqualTo(price));
Assert.That(work.IsCancel, Is.EqualTo(isCancel));
Assert.That(work.Workers, Is.EquivalentTo(workers));
});
}
private static WorkDataModel CreateDataModel(string? id, string? premisesId, double price, bool isCancel, List<WorkerWorkDataModel>? workers) =>
new(id, premisesId, price, isCancel, workers);
private static List<WorkerWorkDataModel> CreateSubDataModel()
=> [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString())];
}