using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using RomashkiContracts.DataModels; using RomashkiContracts.Enums; using RomashkiContracts.Exceptions; namespace RomashkiTests { [TestFixture] internal class SaleDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var sale = CreateDataModel(null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); sale = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var sale = CreateDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNullOrEmptyTest() { var sale = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); sale = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNotGuidTest() { var sale = CreateDataModel(Guid.NewGuid().ToString(), "workerId", Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void BuyerIdIsNotGuidTest() { var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "buyerId", 10, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void SumIsLessOrZeroTest() { var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, DiscountType.OnSale, 10, false, CreateSubDataModel()); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void ProductsIsNullOrEmptyTest() { var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, null); Assert.That(() => sale.Validate(), Throws.TypeOf()); sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, []); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var saleId = Guid.NewGuid().ToString(); var workerId = Guid.NewGuid().ToString(); var buyerId = Guid.NewGuid().ToString(); var sum = 10; var discountType = DiscountType.Certificate; var discount = 1; var isCancel = true; var products = CreateSubDataModel(); var sale = CreateDataModel(saleId, workerId, buyerId, sum, discountType, discount, isCancel, products); 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.BuyerId, Is.EqualTo(buyerId)); Assert.That(sale.Sum, Is.EqualTo(sum)); Assert.That(sale.DiscountType, Is.EqualTo(discountType)); Assert.That(sale.Discount, Is.EqualTo(discount)); Assert.That(sale.IsCancel, Is.EqualTo(isCancel)); Assert.That(sale.Products, Is.EquivalentTo(products)); }); } private static SaleDataModel CreateDataModel(string? id, string? workerId,string? buyerId, double sum, DiscountType discountType, double discount, bool isCancel, List? products) => new(id, workerId, buyerId, sum, discountType, discount, isCancel, products); private static List CreateSubDataModel() => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)]; } }