using MagicCarpetContracts.DataModels; using MagicCarpetContracts.Exceptions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MagicCarpetTests.DataModelTests; [TestFixture] internal class SaleTourDataModelTests { [Test] public void SaleIdIsNullOrEmptyTest() { var saleTour = CreateDataModel(null, Guid.NewGuid().ToString(), 10); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); saleTour = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void SaleIdIsNotGuidTest() { var saleTour = CreateDataModel("saleId", Guid.NewGuid().ToString(), 10); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void CocktailIdIsNullOrEmptyTest() { var saleTour = CreateDataModel(Guid.NewGuid().ToString(), null, 10); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); saleTour = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void ProductIdIsNotGuidTest() { var saleTour = CreateDataModel(Guid.NewGuid().ToString(), "productId", 10); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { var saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var saleId = Guid.NewGuid().ToString(); var tourId = Guid.NewGuid().ToString(); var count = 10; var saleCocktail = CreateDataModel(saleId, tourId, count); Assert.That(() => saleCocktail.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(saleCocktail.SaleId, Is.EqualTo(saleId)); Assert.That(saleCocktail.TourId, Is.EqualTo(tourId)); Assert.That(saleCocktail.Count, Is.EqualTo(count)); }); } private static SaleTourDataModel CreateDataModel(string? saleId, string? tourId, int count) => new(saleId, tourId, count); }