final lab1

This commit is contained in:
user 2025-02-17 16:55:47 +04:00
parent 9be273db7b
commit 36af9a9fa1
3 changed files with 85 additions and 2 deletions

View File

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RomashkiContracts.Exceptions;
using RomashkiContracts.Extensions;
using RomashkiContracts.Infrastructure;
namespace RomashkiContract.DataModels;
public class DiscountDataModel(string buyerId, DateTime discountDate, double discountSize) : IValidation
{
public string BuyerId{ get; private set; } = buyerId;
public DateTime DiscountDate { get; private set; } = discountDate;
public double DiscountSize { get; private set; } = discountSize;
public void Validate()
{
if (BuyerId.IsEmpty())
throw new ValidationException("Field BuyerId is empty");
if (!BuyerId.IsGuid())
throw new ValidationException("The value in the field BuyerId is not a unique identifier");
if (discountSize < 0)
throw new ValidationException("Field DiscountSize is less than or equal to 0");
if (discountSize > 100)
throw new ValidationException("Field DiscountSize is more than 100");
}
}

View File

@ -9,8 +9,8 @@ namespace RomashkiContracts.Enums;
public enum ProductType
{
None = 0,
HomemadeFlowers = 1,
BeautifulFlowers = 2,
HomeFlower = 1,
Flower = 2,
Accessory = 3
}

View File

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RomashkiContract.DataModels;
using RomashkiContracts.Exceptions;
namespace RomashkiTests;
internal class DiscountDataModelTests
{
[Test]
public void BuyerIdIsEmptyTest()
{
var discount = CreateDataModel(null, DateTime.Now, 10);
Assert.That(() => discount.Validate(), Throws.TypeOf<ValidationException>());
discount = CreateDataModel(string.Empty, DateTime.Now, 10);
Assert.That(() => discount.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void BuyerIdIsNotGuidTest()
{
var discount = CreateDataModel("buyerId", DateTime.Now, 10);
Assert.That(() => discount.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void DiscountIsLessOrMoreTest()
{
var discount = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, -1);
Assert.That(() => discount.Validate(), Throws.TypeOf<ValidationException>());
discount = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, 101);
Assert.That(() => discount.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void AllFieldsIsCorrectTest()
{
var buyerId = Guid.NewGuid().ToString();
var discountDate = DateTime.Now.AddDays(-3).AddMinutes(-5);
var discountSize = 10;
var discount = CreateDataModel(buyerId, discountDate, discountSize);
Assert.That(() => discount.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(discount.BuyerId, Is.EqualTo(buyerId));
Assert.That(discount.DiscountDate, Is.EqualTo(discountDate));
Assert.That(discount.DiscountSize, Is.EqualTo(discountSize));
});
}
private static DiscountDataModel CreateDataModel(string? buyerId, DateTime discountDate, double discountSize) =>
new(buyerId, discountDate, discountSize);
}