91 lines
3.6 KiB
C#
Raw Normal View History

2025-02-07 00:54:41 +04:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TheButcherShopContracts.DataModels;
using TheButcherShopContracts.Exceptions;
namespace ButcherShopTests.DataModelTests;
[TestFixture]
internal class SaleDataModelTests
{
[Test]
public void IdIsNullOrEmptyTest()
{
2025-02-07 12:26:42 +03:00
var sale = CreateDataModel(null, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel());
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
2025-02-07 12:26:42 +03:00
sale = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel());
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void IdIsNotGuidTest()
{
2025-02-07 12:26:42 +03:00
var sale = CreateDataModel("id", Guid.NewGuid().ToString(), 10, false, CreateSubDataModel());
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(),Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkerIdIsNullOrEmptyTest()
{
2025-02-07 12:26:42 +03:00
var sale = CreateDataModel(Guid.NewGuid().ToString(), null, 10, false, CreateSubDataModel());
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
2025-02-07 12:26:42 +03:00
sale = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 10, false, CreateSubDataModel());
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkerIdIsNotGuidTest()
{
2025-02-07 12:26:42 +03:00
var sale = CreateDataModel(Guid.NewGuid().ToString(), "workerId", 10, false, CreateSubDataModel());
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void SumIsLessOrZeroTest()
{
2025-02-07 12:26:42 +03:00
var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, false, CreateSubDataModel());
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
2025-02-07 12:26:42 +03:00
sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, false, CreateSubDataModel());
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void ProductsIsNullOrEmptyTest()
{
2025-02-07 12:26:42 +03:00
var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, null);
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
2025-02-07 12:26:42 +03:00
sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []);
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void AllFieldsIsCorrectTest()
{
var saleId = Guid.NewGuid().ToString();
var workerId = Guid.NewGuid().ToString();
var sum = 10;
var isCancel = true;
var products = CreateSubDataModel();
2025-02-07 12:26:42 +03:00
var sale = CreateDataModel(saleId, workerId, sum, isCancel, products);
2025-02-07 00:54:41 +04:00
Assert.That(() => sale.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(sale.Id, Is.EqualTo(saleId));
Assert.That(sale.WorkerId, Is.EqualTo(workerId));
Assert.That(sale.Sum, Is.EqualTo(sum));
Assert.That(sale.IsCancel, Is.EqualTo(isCancel));
Assert.That(sale.Products, Is.EquivalentTo(products));
});
}
2025-02-07 12:26:42 +03:00
private static SaleDataModel CreateDataModel(string? id, string? workerId,double sum, bool isCancel, List<SaleProductDataModel>? products)
=>new(id, workerId, sum, isCancel, products);
2025-02-07 00:54:41 +04:00
private static List<SaleProductDataModel> CreateSubDataModel()
=> [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)];
}