using MagicCarpetContracts.DataModels; using MagicCarpetContracts.Enums; using MagicCarpetContracts.Exceptions; using MagicCarpetContracts.Infrastructure.PostConfigurations; using MagicCarpetTests.Infrastructure; namespace MagicCarpetTests.DataModelTests; [TestFixture] internal class PostDataModelTests { [Test] public void IdIsNullOrEmptyTest() { var post = CreateDataModel(null, "name", PostType.TravelAgent, new PostConfiguration() { Rate = 10 }); Assert.That(() => post.Validate(StringLocalizerMockCreator.GetObject()), Throws.TypeOf()); post = CreateDataModel(string.Empty, "name", PostType.TravelAgent, new PostConfiguration() { Rate = 10 }); Assert.That(() => post.Validate(StringLocalizerMockCreator.GetObject()), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var post = CreateDataModel("id", "name", PostType.TravelAgent, new PostConfiguration() { Rate = 10 }); Assert.That(() => post.Validate(StringLocalizerMockCreator.GetObject()), Throws.TypeOf()); } [Test] public void PostNameIsEmptyTest() { var manufacturer = CreateDataModel(Guid.NewGuid().ToString(), null, PostType.TravelAgent, new PostConfiguration() { Rate = 10 }); Assert.That(() => manufacturer.Validate(StringLocalizerMockCreator.GetObject() ), Throws.TypeOf()); manufacturer = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, PostType.TravelAgent, new PostConfiguration() { Rate = 10 }); Assert.That(() => manufacturer.Validate(StringLocalizerMockCreator.GetObject()), Throws.TypeOf()); } [Test] public void PostTypeIsNoneTest() { var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.None, new PostConfiguration() { Rate = 10 }); Assert.That(() => post.Validate(StringLocalizerMockCreator.GetObject()), Throws.TypeOf()); } [Test] public void ConfigurationModelIsNullTest() { var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.TravelAgent, null); Assert.That(() => post.Validate(StringLocalizerMockCreator.GetObject()), Throws.TypeOf()); } [Test] public void RateIsLessOrZeroTest() { var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.TravelAgent, new PostConfiguration() { Rate = 0 }); Assert.That(() => post.Validate(StringLocalizerMockCreator.GetObject()), Throws.TypeOf()); post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.TravelAgent, new PostConfiguration() { Rate = -10 }); Assert.That(() => post.Validate(StringLocalizerMockCreator.GetObject()), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var postId = Guid.NewGuid().ToString(); var postName = "name"; var postType = PostType.Manager; var configuration = new PostConfiguration() { Rate = 10 }; var post = CreateDataModel(postId, postName, postType, configuration); Assert.That(() => post.Validate(StringLocalizerMockCreator.GetObject()), Throws.Nothing); Assert.Multiple(() => { Assert.That(post.Id, Is.EqualTo(postId)); Assert.That(post.PostName, Is.EqualTo(postName)); Assert.That(post.PostType, Is.EqualTo(postType)); Assert.That(post.ConfigurationModel.Rate, Is.EqualTo(configuration.Rate)); Assert.That(post.ConfigurationModel.CultureName, Is.Not.Empty); }); } private static PostDataModel CreateDataModel(string? id, string? postName, PostType postType, PostConfiguration configuration) => new(id, postName, postType, configuration); }