91 lines
3.7 KiB
C#
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())];
|
|
}
|