예제 #1
0
        public async Task CreateNews_WhenAllParametersAreValid()
        {
            var dabataseName = nameof(CreateNews_WhenAllParametersAreValid);

            var options = NewsTestUtils.GetOptions(dabataseName);

            var mappingProviderMock = new Mock <IMappingProvider>();

            DateTime createdOn = DateTime.Now;
            string   newsTitle = "Spider-Man Far From Home soon in cinemas";
            string   text      = " Spider-Man: Far From Home will be released in theaters on July 5, 2019";
            string   imageUrl  = "anyimage.jpg";

            using (var arrangeContext = new MovieManagementContext(options))
            {
                var sut = new NewsService(arrangeContext, mappingProviderMock.Object);


                await sut.CreateNewsAsync(createdOn, newsTitle, text, imageUrl);

                arrangeContext.SaveChanges();
            }

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                Assert.IsTrue(actAndAssertContext.News.Count() == 1);
                Assert.IsTrue(actAndAssertContext.News.Any(m => m.Title == newsTitle));
            }
        }
        public async Task EditNewsText_WithCorrectInformation()
        {
            var dabataseName = nameof(Throw_WhenNews_DoesNotExists);

            var options = NewsTestUtils.GetOptions(dabataseName);

            NewsTestUtils.FillContextWithNews(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            string newsTitle = "Spider-Man Far From Home soon in cinemas";

            string changedNewsText = "Spider-Man tickets have already been sold out due to huge interest";

            var newsViewModel = new NewsViewModel()
            {
                Text = changedNewsText
            };

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var sut = new NewsService(actAndAssertContext, mappingProviderMock.Object);

                await sut.EditNewsTextAsync(newsTitle, newsViewModel);

                Assert.IsTrue(await actAndAssertContext.News.AnyAsync(m => m.Text == changedNewsText));
            }
        }
        public async Task Throw_WhenNews_DoesNotExists()
        {
            var dabataseName = nameof(Throw_WhenNews_DoesNotExists);

            var options = NewsTestUtils.GetOptions(dabataseName);

            NewsTestUtils.FillContextWithNews(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new NewsService(actAndAssertContext, mappingProviderMock.Object);
                string newsTitle = "Michael Jordan received an Oscar for Creed II";

                await Assert.ThrowsExceptionAsync <EntityInvalidException>(
                    async() => await sut.GetNewsByNameAsync(newsTitle));
            }
        }
        public async Task Call_MapFunction_Once()
        {
            var dabataseName = nameof(Call_MapFunction_Once);

            var options = NewsTestUtils.GetOptions(dabataseName);

            var collectionOfNews = new List <News>();

            var mappingProviderMock = new Mock <IMappingProvider>();

            mappingProviderMock
            .Setup(x => x.MapTo <ICollection <NewsViewModel> >(It.IsAny <List <News> >()))
            .Callback <object>(inputargs => collectionOfNews = inputargs as List <News>);

            using (var arrangeContext = new MovieManagementContext(options))
            {
                arrangeContext.News.Add(new News()
                {
                    Id       = "411855e5-579b-4a01-bddd-e5ade62da9f4",
                    Title    = "New Spiderman",
                    Text     = " Spider-Man: Far From Home will be released in theaters on July 5, 2019, in Bulgaria on 7th.",
                    ImageUrl = "testingimage.jpg"
                });
                arrangeContext.News.Add(new News()
                {
                    Id       = "b6339180-2f36-44b7-89e9-2849b398cf17",
                    Title    = "New Marvel movies",
                    Text     = "After avengers there will be more marvel movies.",
                    ImageUrl = "testingimage2.jpg"
                });

                await arrangeContext.SaveChangesAsync();
            }

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var sut = new NewsService(actAndAssertContext, mappingProviderMock.Object);
                await sut.GetAllNewsAsync();

                mappingProviderMock.Verify(m => m.MapTo <ICollection <NewsViewModel> >(collectionOfNews), Times.Once);
            }
        }
예제 #5
0
        public async Task Throw_WhenNews_DoNotExist()
        {
            var dabataseName = nameof(Throw_WhenNews_DoNotExist);

            var options = NewsTestUtils.GetOptions(dabataseName);

            NewsTestUtils.FillContextWithNews(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            string newsTitle = "BatMan is back!";

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var sut = new NewsService(actAndAssertContext, mappingProviderMock.Object);


                await Assert.ThrowsExceptionAsync <EntityInvalidException>(
                    async() => await sut.DeleteNews(newsTitle));
            }
        }
예제 #6
0
        public async Task Delete_NewsSuccesfully()
        {
            var dabataseName = nameof(Delete_NewsSuccesfully);

            var options = NewsTestUtils.GetOptions(dabataseName);

            NewsTestUtils.FillContextWithNews(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new NewsService(actAndAssertContext, mappingProviderMock.Object);
                string newsTitle = "Spider-Man Far From Home soon in cinemas";

                Assert.IsTrue(actAndAssertContext.News.Count() == 1);

                await sut.DeleteNews(newsTitle);

                Assert.IsTrue(actAndAssertContext.News.Count() == 0);
            }
        }
예제 #7
0
        public async Task ReturnCorrectViewModel()
        {
            var dabataseName = nameof(ReturnCorrectViewModel);

            var options = NewsTestUtils.GetOptions(dabataseName);

            var mappingProviderMock = new Mock <IMappingProvider>();

            mappingProviderMock.Setup(x => x.MapTo <NewsViewModel>(It.IsAny <News>())).Returns(new NewsViewModel());

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var sut = new NewsService(actAndAssertContext, mappingProviderMock.Object);

                DateTime createdOn = DateTime.Now;
                string   newsTitle = "Spider-Man Far From Home soon in cinemas";
                string   text      = " Spider-Man: Far From Home will be released in theaters on July 5, 2019";
                string   imageUrl  = "anyimage.jpg";

                var result = await sut.CreateNewsAsync(createdOn, newsTitle, text, imageUrl);

                Assert.IsInstanceOfType(result, typeof(NewsViewModel));
            }
        }
예제 #8
0
        public async Task Throw_WhenNews_DoExist()
        {
            var dabataseName = nameof(Throw_WhenNews_DoExist);

            var options = NewsTestUtils.GetOptions(dabataseName);

            NewsTestUtils.FillContextWithNews(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            DateTime createdOn = DateTime.Now;
            string   newsTitle = "Spider-Man Far From Home soon in cinemas";
            string   text      = " Spider-Man: Far From Home will be released in theaters on July 5, 2019";
            string   imageUrl  = "anyimage.jpg";

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var sut = new NewsService(actAndAssertContext, mappingProviderMock.Object);


                await Assert.ThrowsExceptionAsync <EntityAlreadyExistsException>(
                    async() => await sut.CreateNewsAsync(createdOn, newsTitle, text, imageUrl));
            }
        }