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, 1.1); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); saleTour = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, 1.1); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void SaleIdIsNotGuidTest() { var saleTour = CreateDataModel("saleId", Guid.NewGuid().ToString(), 10, 1.1); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void TourIdIsNullOrEmptyTest() { var saleTour = CreateDataModel(Guid.NewGuid().ToString(), null, 10, 1.1); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); saleTour = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, 1.1); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void TourIdIsNotGuidTest() { var saleTour = CreateDataModel(Guid.NewGuid().ToString(), "tourId", 10, 1.1); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { var saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, 1.1); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, 1.1); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); } [Test] public void PriceIsLessOrZeroTest() { var saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, 0); Assert.That(() => saleTour.Validate(), Throws.TypeOf()); saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, -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 price = 1.2; var saleTour = CreateDataModel(saleId, tourId, count, price); Assert.That(() => saleTour.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(saleTour.SaleId, Is.EqualTo(saleId)); Assert.That(saleTour.TourId, Is.EqualTo(tourId)); Assert.That(saleTour.Count, Is.EqualTo(count)); Assert.That(saleTour.Price, Is.EqualTo(price)); }); } private static SaleTourDataModel CreateDataModel(string? saleId, string? tourId, int count, double price) => new(saleId, tourId, count, price); }