using MagicCarpetContracts.DataModels; using MagicCarpetContracts.Enums; 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 SuppliesDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var model = CreateDataModel(null, TourType.Beach, DateTime.Now, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); model = CreateDataModel(string.Empty, TourType.Beach, DateTime.Now, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var model = CreateDataModel("id", TourType.Beach, DateTime.Now, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void TypeIsNoneTest() { var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, 0, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, DateTime.Now, -1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void ToursIsNullOrEmptyTest() { var sale = CreateDataModel(Guid.NewGuid().ToString(), TourType.Beach, DateTime.Now, 1, null); Assert.That(() => sale.Validate(), Throws.TypeOf()); sale = CreateDataModel(Guid.NewGuid().ToString(), TourType.Beach, DateTime.Now, 1, []); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var id = Guid.NewGuid().ToString(); var type = TourType.Beach; var date = DateTime.Now; var count = 1; var tours = CreateSubDataModel(); var model = CreateDataModel(id, type, date, count, tours); Assert.DoesNotThrow(() => model.Validate()); Assert.Multiple(() => { Assert.That(model.Id, Is.EqualTo(id)); Assert.That(model.Type, Is.EqualTo(type)); Assert.That(model.ProductuionDate, Is.EqualTo(date)); Assert.That(model.Count, Is.EqualTo(count)); Assert.That(model.Tours, Is.EqualTo(tours)); }); } private static SuppliesDataModel CreateDataModel(string? id, TourType type, DateTime date, int count, List tours) => new(id, type, date, count, tours); private static List CreateSubDataModel() => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)]; }