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 AgencyDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var model = CreateDataModel(null, TourType.Beach, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); model = CreateDataModel(string.Empty, TourType.Beach, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var model = CreateDataModel("id", TourType.Beach, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void TypeIsNoneTest() { var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, 1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { var model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, 0, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); model = CreateDataModel(Guid.NewGuid().ToString(), TourType.None, -1, CreateSubDataModel()); Assert.That(() => model.Validate(), Throws.TypeOf()); } [Test] public void ToursIsNullOrEmptyTest() { var sale = CreateDataModel(Guid.NewGuid().ToString(), TourType.Beach, 1, null); Assert.That(() => sale.Validate(), Throws.TypeOf()); sale = CreateDataModel(Guid.NewGuid().ToString(), TourType.Beach, 1, []); Assert.That(() => sale.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var id = Guid.NewGuid().ToString(); var type = TourType.Beach; var count = 1; var tours = CreateSubDataModel(); var model = CreateDataModel(id, type, 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.Count, Is.EqualTo(count)); Assert.That(model.Tours, Is.EqualTo(tours)); }); } private static AgencyDataModel CreateDataModel(string? id, TourType type, int count, List tours) => new AgencyDataModel(id, type, count, tours); private static List CreateSubDataModel() => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)]; }