public async Task Call_MapFunction_Once()
        {
            var dabataseName = nameof(Call_MapFunction_Once);

            var options = MovieTestUtils.GetOptions(dabataseName);

            // We fill the context with data and save it.
            MovieTestUtils.FillContextWithActorsMoviesAndGenres(options);

            Movie movieReturned = null;

            var mappingProviderMock = new Mock <IMappingProvider>();

            mappingProviderMock
            .Setup(x => x.MapTo <MovieViewModel>(It.IsAny <Movie>()))
            .Callback <object>(inputargs => movieReturned = inputargs as Movie);

            string newMovieName = "NewSpiderman";
            int    duration     = 120;
            string storyline    = "NewStoryline";
            string director     = "NewDirector";
            string imageUrl     = "NewImageUrl";

            var movieViewModel = new MovieViewModel()
            {
                Name      = newMovieName,
                Duration  = duration,
                Storyline = storyline,
                Director  = director,
                ImageUrl  = imageUrl
            };

            // we use new instance of that context, but it has the data already saved.
            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut          = new MovieService(actAndAssertContext, mappingProviderMock.Object);
                string oldMovieName = "Spiderman";

                await sut.UpdateMovieAsync(oldMovieName, movieViewModel);

                mappingProviderMock.Verify(m => m.MapTo <MovieViewModel>(movieReturned), Times.Once);
            }
        }
        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);
            }
        }
示例#3
0
        public async Task Throw_WhenActor_DoesExists()
        {
            var dabataseName = nameof(Throw_WhenActor_DoesExists);

            var options = ActorTestUtils.GetOptions(dabataseName);

            ActorTestUtils.FillContextWithActors(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

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

                string actorName = "Julia Roberts";

                await Assert.ThrowsExceptionAsync <EntityAlreadyExistsException>(
                    async() => await sut.CreateActorAsync(actorName));
            }
        }
        public async Task UpdateMovie_WithCorrectInformation()
        {
            var dabataseName = nameof(UpdateMovie_WithCorrectInformation);

            var options = MovieTestUtils.GetOptions(dabataseName);

            // We fill the context with data and save it.
            MovieTestUtils.FillContextWithActorsMoviesAndGenres(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            string newMovieName = "NewSpiderman";
            int    duration     = 120;
            string storyline    = "NewStoryline";
            string director     = "NewDirector";
            string imageUrl     = "NewImageUrl";

            var movieViewModel = new MovieViewModel()
            {
                Name      = newMovieName,
                Duration  = duration,
                Storyline = storyline,
                Director  = director,
                ImageUrl  = imageUrl
            };

            // we use new instance of that context, but it has the data already saved.
            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut          = new MovieService(actAndAssertContext, mappingProviderMock.Object);
                string oldMovieName = "Spiderman";

                await sut.UpdateMovieAsync(oldMovieName, movieViewModel);

                Assert.IsTrue(await actAndAssertContext.Movies.AnyAsync(m => m.Name == newMovieName));
                Assert.IsTrue(await actAndAssertContext.Movies.AnyAsync(m => m.Duration == duration));
                Assert.IsTrue(await actAndAssertContext.Movies.AnyAsync(m => m.Storyline == storyline));
                Assert.IsTrue(await actAndAssertContext.Movies.AnyAsync(m => m.Director == director));
                Assert.IsTrue(await actAndAssertContext.Movies.AnyAsync(m => m.ImageUrl == imageUrl));
            }
        }
示例#5
0
        public async Task Throw_WhenGenreIsNotFound()
        {
            var dabataseName = nameof(Throw_WhenGenreIsNotFound);
            var options      = MovieTestUtils.GetOptions(dabataseName);

            var mappingProviderMock = new Mock <IMappingProvider>();

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new MovieService(actAndAssertContext, mappingProviderMock.Object);
                string movieName = "Spiderman";
                int    duration  = 90;
                string director  = "TestDirector";
                string storyline = "TestStoryline";
                string imageUrl  = "TestImageUrl";
                string genreName = "TestGenre";

                await Assert.ThrowsExceptionAsync <EntityInvalidException>(
                    async() => await sut.CreateMovieAsync(movieName, duration, storyline, director, imageUrl, genreName));
            }
        }
        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>();

            NewsViewModel newsViewModel = null;

            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.EditNewsTextAsync(newsTitle, newsViewModel));
            }
        }
示例#7
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));
            }
        }
示例#8
0
        public async Task ReturnCorrectViewModel()
        {
            var dabataseName = nameof(ReturnCorrectViewModel);

            var options = ActorTestUtils.GetOptions(dabataseName);

            var mappingProviderMock = new Mock <IMappingProvider>();

            mappingProviderMock.Setup(x => x.MapTo <ActorViewModel>(It.IsAny <Actor>())).Returns(new ActorViewModel());

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

                string actorName = "Michael Jordan";

                var result = await sut.CreateActorAsync(actorName);

                Assert.IsInstanceOfType(result, typeof(ActorViewModel));
            }
        }
示例#9
0
        public async Task Throw_WhenActor_DoesNotExists()
        {
            var dabataseName = nameof(Throw_WhenActor_DoesNotExists);

            var options = ActorTestUtils.GetOptions(dabataseName);

            ActorTestUtils.FillContextWithActors(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            ActorViewModel actorViewModel = null;

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new ActorService(actAndAssertContext, mappingProviderMock.Object);
                string actorName = "Jo";

                await Assert.ThrowsExceptionAsync <EntityInvalidException>(
                    async() => await sut.ChangeActorNameAsync(actorName, actorViewModel));
            }
        }
示例#10
0
        public async Task Throw_WhenMovie_DoesNotExists()
        {
            var dabataseName = nameof(Throw_WhenMovie_DoesNotExists);

            var options = MovieTestUtils.GetOptions(dabataseName);

            // We fill the context with data and save it.
            MovieTestUtils.FillContextWithActorsMoviesAndGenres(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            // we use new instance of that context, but it has the data already saved.
            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new MovieService(actAndAssertContext, mappingProviderMock.Object);
                string movieName = "TestInvalidMovie";

                await Assert.ThrowsExceptionAsync <EntityInvalidException>(
                    async() => await sut.GetMovieByNameAsync(movieName));
            }
        }
        public async Task Delete_ActorSuccesfully()
        {
            var dabataseName = nameof(Delete_ActorSuccesfully);

            var options = ActorTestUtils.GetOptions(dabataseName);

            ActorTestUtils.FillContextWithActors(options);

            var mappingProviderMock = new Mock <IMappingProvider>();

            using (var actAndAssertContext = new MovieManagementContext(options))
            {
                var    sut       = new ActorService(actAndAssertContext, mappingProviderMock.Object);
                string actorName = "Julia Roberts";

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

                await sut.DeleteActorAsync(actorName);

                Assert.IsTrue(actAndAssertContext.Actors.Count() == 0);
            }
        }
        public async Task Throw_WhenText_IsEmpty()
        {
            var dabataseName = nameof(Throw_WhenText_IsEmpty);

            var options = CommentTestUtil.GetOptions(dabataseName);

            var mappingProviderMock = new Mock <IMappingProvider>();

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

                string commentText = null;

                string title = "Avengers EndGame";

                string userName = "******";

                await Assert.ThrowsExceptionAsync <EntityInvalidException>(
                    async() => await sut.AddComment(commentText, title, userName));
            }
        }
示例#13
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);
            }
        }
示例#14
0
        public async Task Call_MapFunction_Once()
        {
            var dabataseName = nameof(Call_MapFunction_Once);

            var options = CommentTestUtil.GetOptions(dabataseName);

            var collectionOfComments = new List <Comment>();

            var mappingProviderMock = new Mock <IMappingProvider>();

            mappingProviderMock
            .Setup(x => x.MapTo <ICollection <CommentViewModel> >(It.IsAny <List <Comment> >()))
            .Callback <object>(inputargs => collectionOfComments = inputargs as List <Comment>);

            using (var arrangeContext = new MovieManagementContext(options))
            {
                arrangeContext.Comments.Add(new Comment()
                {
                    Text  = "Very interesting. Would love to see it!",
                    Title = "Avengers EndGame"
                });
                arrangeContext.Comments.Add(new Comment()
                {
                    Text  = "Every Marvel movie has achieved revenue of over 100million dollars",
                    Title = "Marvel movies are blockbusters"
                });
                await arrangeContext.SaveChangesAsync();
            }

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

                mappingProviderMock.Verify(m => m.MapTo <ICollection <CommentViewModel> >(collectionOfComments), Times.Once);
            }
        }
示例#15
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));
            }
        }
示例#16
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));
            }
        }
 public WatchlistService(MovieManagementContext context, IMappingProvider mappingProvider, IMemoryCache cache)
 {
     this.context         = context ?? throw new ArgumentNullException(nameof(context));
     this.mappingProvider = mappingProvider ?? throw new ArgumentNullException(nameof(mappingProvider));
     this.cache           = cache ?? throw new ArgumentNullException(nameof(cache));
 }
 public AnonymousUserController(MovieManagementContext context)
 {
     _context = context;
 }
示例#19
0
 public ActorService(MovieManagementContext context, IMappingProvider mappingProvider)
 {
     this.context         = context ?? throw new ArgumentNullException(nameof(context));
     this.mappingProvider = mappingProvider ?? throw new ArgumentNullException(nameof(mappingProvider));
 }
 public AdminController(MovieManagementContext context)
 {
     _context = context;
 }
 public CustomerController(MovieManagementContext context)
 {
     _context = context;
 }