public async void GetAll_Success()
        {
            // Arrange
            var dbContext = _fixture.Context;
            var mapper    = MapperMock.Get();
            var user      = NewDatas.NewUser();
            var product   = NewDatas.NewProduct();
            var rating    = NewDatas.NewRating();

            rating.User    = user;
            rating.Product = product;

            dbContext.Products.Add(product);
            await dbContext.SaveChangesAsync();

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            dbContext.Ratings.Add(rating);
            await dbContext.SaveChangesAsync();

            var ratingsService    = new RatingService(dbContext);
            var ratingsController = new RatingsController(ratingsService, mapper);
            // Act
            var result = await ratingsController.GetRatings();

            // Assert
            var ratingResult = Assert.IsType <OkObjectResult>(result.Result);

            Assert.NotEmpty(ratingResult.Value as IEnumerable <Rating>);
        }
Example #2
0
        public void ReturnRating_WhenValidUser_CallsUpdateRating()
        {
            var updatedRating = new Rating
            {
                Id          = 1,
                UserId      = 1,
                Description = "Test",
                Code        = "Test"
            };

            var result = new Rating
            {
                Id = updatedRating.Id
            };

            var userHelper = A.Fake <IUserHelper>();

            A.CallTo(() => userHelper.MatchingUsers(A <HttpContext> .Ignored, updatedRating.UserId)).Returns(true);

            var ratingRepository = A.Fake <IRatingRepository>();

            A.CallTo(() => ratingRepository.RatingExists(updatedRating.Id)).Returns(true);
            A.CallTo(() => ratingRepository.GetRating(updatedRating.Id)).Returns(result);

            var validator = new RatingValidator();

            var controller = new RatingsController(ratingRepository, null, userHelper, validator);

            var response = controller.UpdateRating(updatedRating);

            A.CallTo(() => ratingRepository.Update(updatedRating)).MustHaveHappened();
            Assert.AreEqual(result.Id, response.Value.Id);
        }
Example #3
0
        public void ReturnRating_OnCallToAddRating()
        {
            var newRating = new Rating
            {
                Description = "Test",
                Code        = "Test"
            };

            var result = new Rating
            {
                UserId = newRating.UserId
            };

            var userHelper       = A.Fake <IUserHelper>();
            var ratingRepository = A.Fake <IRatingRepository>();

            A.CallTo(() => ratingRepository.GetRating(A <int> .Ignored)).Returns(result);

            var validator  = new RatingValidator();
            var controller = new RatingsController(ratingRepository, null, userHelper, validator);

            var response = controller.AddRating(newRating);

            A.CallTo(() => ratingRepository.Add(newRating)).MustHaveHappened();
            Assert.AreEqual(result.UserId, response.Value.UserId);
        }
Example #4
0
        public void ReturnRating_WhenValidUser_CallsDeleteRating()
        {
            var id = 1;

            var result = new Rating
            {
                Id     = id,
                UserId = 1
            };

            var ratingRepository = A.Fake <IRatingRepository>();

            A.CallTo(() => ratingRepository.RatingExists(id)).Returns(true);
            A.CallTo(() => ratingRepository.GetRating(id)).Returns(result);

            var userHelper = A.Fake <IUserHelper>();

            A.CallTo(() => userHelper.MatchingUsers(A <HttpContext> .Ignored, result.UserId)).Returns(true);

            var controller = new RatingsController(ratingRepository, null, userHelper, null);

            var response = controller.DeleteRating(id);

            A.CallTo(() => ratingRepository.Delete(id)).MustHaveHappened();
            Assert.AreEqual(result.Id, response.Value.Id);
        }
Example #5
0
        public void ReturnBadRequest_WhenRatingDoesNotExist_OnCallToUpdateRating()
        {
            var updatedRating = new Rating
            {
                Id          = 1,
                UserId      = 1,
                Description = "Test",
                Code        = "Test"
            };

            var userHelper = A.Fake <IUserHelper>();

            A.CallTo(() => userHelper.MatchingUsers(A <HttpContext> .Ignored, updatedRating.UserId)).Returns(true);

            var ratingRepository = A.Fake <IRatingRepository>();

            A.CallTo(() => ratingRepository.RatingExists(updatedRating.Id)).Returns(false);

            var validator = new RatingValidator();

            var controller = new RatingsController(ratingRepository, null, userHelper, validator);

            var response = controller.UpdateRating(updatedRating);

            Assert.AreEqual((int)HttpStatusCode.BadRequest, ((BadRequestObjectResult)response.Result).StatusCode);
            Assert.AreEqual($"Rating with Id {updatedRating.Id} does not exist.", ((BadRequestObjectResult)response.Result).Value);
        }
        public async void TestCreate_InvalidRating_ShouldFail()
        {
            // Arrange
            RatingsController controller = new RatingsController(_context);

            InitializeRating();
            rating.GameId = 99;

            try
            {
                // Act
                var result = await controller.Create(rating.GameId, Convert.ToInt16(rating.Rate));

                // Assert
                Assert.IsType <ViewResult>(result);
                ViewResult viewResult = (ViewResult)result;
                Assert.NotNull(viewResult.ViewData.ModelState);
                Assert.NotEmpty(viewResult.ViewData.ModelState.Keys);

                foreach (string item in viewResult.ViewData.ModelState.Keys)
                {
                    Assert.Equal("", item);
                }
            }
            catch (Exception ex)
            {
                Assert.Equal("System.NullReferenceException", ex.GetType().ToString());
            }
        }
        public async void TestEdit_InvalidRating_ShouldFail(string value)
        {
            // Arrange
            RatingsController controller = new RatingsController(_context);
            int userId = int.Parse(value);

            // Act
            Rating replayRating = await _context.Rating
                                  .FirstOrDefaultAsync(a => a.UserId == userId);

            replayRating.GameId = 0;

            try
            {
                var result = await controller.Edit(replayRating.GameId, Convert.ToInt16(rating.Rate));

                // Assert
                Assert.IsType <ViewResult>(result);
                ViewResult viewResult = (ViewResult)result;
                Assert.NotNull(viewResult.ViewData.ModelState);
                Assert.NotEmpty(viewResult.ViewData.ModelState.Keys);

                foreach (string item in viewResult.ViewData.ModelState.Keys)
                {
                    Assert.Equal("", item);
                }
            }
            catch (Exception ex)
            {
                Assert.Equal("System.NullReferenceException", ex.GetType().ToString());
            }
        }
Example #8
0
        public void ReturnUnauthorized_WhenInvalidUser_CallsDeleteRating()
        {
            var id = 1;

            var result = new Rating
            {
                Id     = id,
                UserId = 1
            };

            var ratingRepository = A.Fake <IRatingRepository>();

            A.CallTo(() => ratingRepository.RatingExists(id)).Returns(true);
            A.CallTo(() => ratingRepository.GetRating(id)).Returns(result);

            var userHelper = A.Fake <IUserHelper>();

            A.CallTo(() => userHelper.MatchingUsers(A <HttpContext> .Ignored, result.UserId)).Returns(false);

            var controller = new RatingsController(ratingRepository, null, userHelper, null);

            var response = controller.DeleteRating(id);

            Assert.AreEqual((int)HttpStatusCode.Unauthorized, ((UnauthorizedResult)response.Result).StatusCode);
        }
Example #9
0
        public async Task Create_ShouldReturnOK()
        {
            using (var context = InMemomryDbContext.Create())
            {
                var movieRepository  = new MovieRepository(context);
                var userRepository   = new UserRepository(context);
                var ratingRepository = new MovieRatingRepository(context);

                using (var controller = new RatingsController(movieRepository, userRepository, ratingRepository))
                {
                    var model = new CreateMovieRatingModel
                    {
                        UserName = "******",
                        Rating   = 3.5
                    };

                    var movieId      = (await movieRepository.FirstAsyc()).Id;
                    var actionResult = await controller.CreateAsync(movieId, model) as OkObjectResult;

                    var rating = actionResult.Value as CreateMovieRatingResult;

                    Assert.NotNull(actionResult);
                    Assert.Equal(movieId, rating.MovieId);
                    Assert.Equal(model.Rating, rating.Rating);
                }
            }
        }
        private static RatingsController MockControllerCtor()
        {
            var mockRepository = new Mock <IBeersRepository>();

            mockRepository.Setup(x => x.GetBeer(42))
            .Returns(Task.FromResult(
                         new List <BeerModel> {
                new BeerModel
                {
                    Id          = 42,
                    Name        = "TestBeer1",
                    Description = "Descrption1"
                }
            }));

            var mockJson = new Mock <IJsonUtility>();

            mockJson.Setup(x => x.Read("database.json", "Data"))
            .Returns("[{\"Id\":1,\"UserRatings\":{\"Username\":\"Testuser2\",\"Rating\":4,\"Comments\":\"TestCommebts\"},\"BeerId\":42}]");

            //mockJson.Setup(x => x.Write("database.json", "Data", "[{\"Id\":1,\"UserRatings\":{\"Username\":\"Testuser2\",\"Rating\":4,\"Comments\":\"TestCommebts\"},\"BeerId\":42}]"))
            //    .Returns(null);

            // Arrange
            RatingsController controller = new RatingsController(mockRepository.Object, mockJson.Object);

            return(controller);
        }
        public async Task Post_Success(int rateValue, string comment)
        {
            // Arrange
            var dbContext = _fixture.Context;
            var mapper    = MapperMock.Get();
            var user      = NewDatas.NewUser();
            var product   = NewDatas.NewProduct();
            var rating    = NewDatas.NewRating();

            rating.User    = user;
            rating.Product = product;

            dbContext.Products.Add(product);
            await dbContext.SaveChangesAsync();

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            dbContext.Ratings.Add(rating);
            await dbContext.SaveChangesAsync();

            var ratingsService    = new RatingService(dbContext);
            var ratingsController = new RatingsController(ratingsService, mapper);
            // Act
            var result = await ratingsController.PostRating(user.Id, product.productId, rateValue, comment);

            // Assert
            var ratingResult = Assert.IsType <CreatedAtActionResult>(result.Result);

            Assert.NotNull(ratingResult.Value as Rating);
        }
        public void Edit_ErrorsWhenIdNotProvided()
        {
            var controller = new RatingsController();

            var response = controller.Details(null);

            response.Should().BeOfType <HttpStatusCodeResult>().Which.StatusCode.Should().Be((int)HttpStatusCode.BadRequest);
        }
Example #13
0
            public void TestLocalsControllerCreateView()
            {
                var          controller = new RatingsController();
                ActionResult result     = controller.Create() as ViewResult;

                //Assert.AreEqual("Create", result.ViewName);
                Assert.IsInstanceOfType(result, typeof(ViewResult));
            }
Example #14
0
        public void TestRatingsControllerCreateName()
        {
            var          controller = new RatingsController();
            ActionResult result     = controller.Create() as ViewResultBase;
            string       r          = (result as ViewResult).ViewName;

            Assert.AreEqual("Create", r);
        }
Example #15
0
        public void ReturnGetRating_WhenRatingExists_OnCallToGetRating()
        {
            var id = 1;
            var ratingRepository = A.Fake <IRatingRepository>();

            A.CallTo(() => ratingRepository.RatingExists(id)).Returns(true);
            var controller = new RatingsController(ratingRepository, null, null, null);

            var response = controller.GetRating(id);

            A.CallTo(() => ratingRepository.GetRating(id)).MustHaveHappened();
        }
Example #16
0
        public async Task Create_ShouldReturnBadRequest()
        {
            var controller = new RatingsController(Mock.Of <IMovieRepository>(),
                                                   Mock.Of <IUserRepository>(),
                                                   Mock.Of <IMovieRatingRepository>());

            controller.ModelState.AddModelError("Rating", "The Rating field must ben between 0 and 5.");

            var result = await controller.CreateAsync(1, new CreateMovieRatingModel()) as BadRequestObjectResult;

            Assert.NotNull(result);
        }
Example #17
0
        public void TestMethodGet()
        {
            var context = new TestBankDBContext();

            context.Ratings.Add(GetSingleItem());

            var controller = new RatingsController(context);
            var result     = controller.GetRating(1) as OkNegotiatedContentResult <Rating>;

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Content.Id);
        }
Example #18
0
        public void ReturnGetUserRatings_WhenUserExists_OnCallToGetUserRatings()
        {
            var userId           = 1;
            var ratingRepository = A.Fake <IRatingRepository>();
            var userRepository   = A.Fake <IUserRepository>();

            A.CallTo(() => userRepository.UserExists(userId)).Returns(true);
            var controller = new RatingsController(ratingRepository, userRepository, null, null);

            var response = controller.GetUserRatings(userId);

            A.CallTo(() => ratingRepository.GetUserRatings(userId)).MustHaveHappened();
        }
Example #19
0
        public void ReturnBadRequest_WhenRatingDoesNotExist_OnCallToGetRating()
        {
            var id = 1;
            var ratingRepository = A.Fake <IRatingRepository>();

            A.CallTo(() => ratingRepository.RatingExists(id)).Returns(false);
            var controller = new RatingsController(ratingRepository, null, null, null);

            var response = controller.GetRating(id);

            Assert.AreEqual((int)HttpStatusCode.BadRequest, ((BadRequestObjectResult)response.Result).StatusCode);
            Assert.AreEqual($"Rating with Id {id} does not exist.", ((BadRequestObjectResult)response.Result).Value);
        }
Example #20
0
        public void TestMethodGetSave()
        {
            var controller = new RatingsController(new TestBankDBContext());

            var item = GetSingleItem();

            var result =
                controller.PostRating(item) as CreatedAtRouteNegotiatedContentResult <Rating>;

            Assert.IsNotNull(result);
            Assert.AreEqual(result.RouteName, "DefaultApi");
            Assert.AreEqual(result.RouteValues["id"], result.Content.Id);
            Assert.AreEqual(result.Content.Description, item.Description);
        }
Example #21
0
        public void ReturnBadRequest_WhenUserDoesNotExist_OnCallToGetUserRatings()
        {
            var userId           = 1;
            var ratingRepository = A.Fake <IRatingRepository>();
            var userRepository   = A.Fake <IUserRepository>();

            A.CallTo(() => userRepository.UserExists(userId)).Returns(false);
            var controller = new RatingsController(ratingRepository, userRepository, null, null);

            var response = controller.GetUserRatings(userId);

            Assert.AreEqual((int)HttpStatusCode.BadRequest, ((BadRequestObjectResult)response.Result).StatusCode);
            Assert.AreEqual($"User with Id {userId} does not exist.", ((BadRequestObjectResult)response.Result).Value);
        }
        public void Index_AnItemList_WithAListOfAllRatings()
        {
            // Arrange
            var user1 = new User()
            {
                User_ID = 1, User_Name = "One"
            };
            var userData = new List <User> {
                user1
            };
            var game1 = new Game()
            {
                Game_ID = 1, Game_Name = "One"
            };
            var gameData = new List <Game> {
                new Game()
                {
                    Game_ID = 1, Game_Name = "One"
                },
                new Game()
                {
                    Game_ID = 2, Game_Name = "Two"
                },
            };
            var ratingData = new List <Rating> {
                new Rating()
                {
                    User_Rating_ID = 1, User_ID = 1, User_Rating = 1, Game_ID = 1, User = user1, Game = game1
                },
                new Rating()
                {
                    User_Rating_ID = 2, User_ID = 1, User_Rating = 1, Game_ID = 2
                }
            };

            var mockdb = new Mock <PlayerMatcherEntitiesExtended>();

            mockdb.Setup(db => db.Users).Returns(Mock.CreateMockSet(userData).Object);
            mockdb.Setup(db => db.Games).Returns(Mock.CreateMockSet(gameData).Object);
            mockdb.Setup(db => db.Ratings).Returns(Mock.CreateMockSet(ratingData).Object);
            var controller = new RatingsController(mockdb.Object);

            // Act
            var view    = controller.Index() as ViewResult;
            var ratings = (List <Rating>)view.Model;

            // Assert
            CollectionAssert.AllItemsAreInstancesOfType(ratings, typeof(Rating));
            Assert.AreEqual(2, ratings.Count());
        }
        public void AddNotExistingRating_ReturnNoContent()
        {
            var options = new DbContextOptionsBuilder <DataContext>()
                          .UseInMemoryDatabase(databaseName: "AddRatingsDataBase")
                          .Options;
            var context = new DataContext(options);
            RatingsController ratingsController = new RatingsController(context);
            string            jwt = UserManagementMicroservice.JWT.CreateJWT(2, 1);
            var result            = ratingsController.PostRating(new RequestRating()
            {
                MovieId = 1, Score = 4
            }, jwt);

            Assert.IsType <NoContentResult>(result);
        }
        public void Details_ErrorsWhenIdNotFound()
        {
            var data    = new List <Rating>();
            var mockSet = Mock.CreateMockSet(data);

            mockSet.Setup(m => m.Find(It.IsAny <object[]>()))
            .Returns <object[]>(ids => data.FirstOrDefault(d => d.User_Rating_ID == (int)ids[0]));
            var mockdb = new Mock <PlayerMatcherEntitiesExtended>();

            mockdb.Setup(db => db.Ratings).Returns(mockSet.Object);
            var controller = new RatingsController(mockdb.Object);

            var response = controller.Details(1) as HttpStatusCodeResult;

            response.Should().BeOfType <HttpNotFoundResult>().Which.StatusCode.Should().Be((int)HttpStatusCode.NotFound);
        }
Example #25
0
        public void GetRating_ReturnNotFoundIfRatingIsNone()
        {
            //Arrange
            Mock <IRepository <Movie> > mockIRepository      = new Mock <IRepository <Movie> >();
            Mock <IRatingRepository>    mockRatingRepository = new Mock <IRatingRepository>();

            mockRatingRepository.Setup(r => r.GetRating(It.IsAny <int>(), It.IsAny <int>()))
            .Returns((int userId, int movieId) => ratings.Where(x => x.movieId == movieId && x.userId == userId).SingleOrDefault());

            var controller = new RatingsController(mockRatingRepository.Object, mockIRepository.Object);

            //Act
            var result = controller.GetRating(23, 1).Result;

            //Assert
            Assert.IsInstanceOf <NotFoundResult>(result);
        }
Example #26
0
        public void GetRating_GetRatingByUserIdAndMovieId()
        {
            //Arrange
            Mock <IRepository <Movie> > mockIRepository      = new Mock <IRepository <Movie> >();
            Mock <IRatingRepository>    mockRatingRepository = new Mock <IRatingRepository>();

            mockRatingRepository.Setup(r => r.GetRating(It.IsAny <int>(), It.IsAny <int>()))
            .Returns((int userId, int movieId) => ratings.Where(x => x.movieId == movieId && x.userId == userId).SingleOrDefault());

            var controller = new RatingsController(mockRatingRepository.Object, mockIRepository.Object);

            //Act
            Rating rating = (Rating)controller.GetRating(1, 1).Value;

            //Assert
            Assert.AreEqual(ratings[0], rating);
        }
        public async void TestDelete_InvalidRating_ShouldFail(string value)
        {
            // Arrange
            RatingsController controller = new RatingsController(_context);
            int gameId = int.Parse(value);

            try
            {
                // Act
                var result = await controller.DeleteConfirmed(gameId);
            }
            // Assert
            catch (Exception ex)
            {
                Assert.Equal("System.ArgumentException", ex.GetType().ToString());
            }
        }
Example #28
0
        public async Task Update_ShouldReturnBadRequest()
        {
            using (var context = InMemomryDbContext.Create())
            {
                var movieRepository  = new MovieRepository(context);
                var userRepository   = new UserRepository(context);
                var ratingRepository = new MovieRatingRepository(context);

                using (var controller = new RatingsController(movieRepository, userRepository, ratingRepository))
                {
                    controller.ModelState.AddModelError("Rating", "The Rating field must be between 0 and 5.");

                    var result = await controller.UpdateAsync(1, 1, new UpdateMovieRatingModel()) as BadRequestObjectResult;

                    Assert.NotNull(result);
                }
            }
        }
Example #29
0
        public void GetRatings_ReturnNotFoundWhenMovieHasNoRatings()
        {
            //Arrange
            Mock <IRepository <Movie> > mockIRepository      = new Mock <IRepository <Movie> >();
            Mock <IRatingRepository>    mockRatingRepository = new Mock <IRatingRepository>();

            mockRatingRepository.Setup(r => r.GetRatings(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>()))
            .Returns((int id, int page, int pageSize) => ratings.Where(x => x.movieId == id));

            var controller = new RatingsController(mockRatingRepository.Object, mockIRepository.Object);

            //Act
            var result = controller.GetRatings(5, 1, 1).Result;

            //Assert

            Assert.IsInstanceOf <NotFoundResult>(result);
        }
Example #30
0
        public void GetRatings_GetRatingsByMovieId()
        {
            //Arrange
            Mock <IRepository <Movie> > mockIRepository      = new Mock <IRepository <Movie> >();
            Mock <IRatingRepository>    mockRatingRepository = new Mock <IRatingRepository>();

            mockRatingRepository.Setup(r => r.GetRatings(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>()))
            .Returns((int id, int page, int pageSize) => ratings.Where(x => x.movieId == id));

            var controller = new RatingsController(mockRatingRepository.Object, mockIRepository.Object);

            //Act
            List <Rating> allRatings = (List <Rating>)controller.GetRatings(1, 1, 1).Value;

            //Assert
            Assert.AreEqual(3, allRatings.Count());
            Assert.AreEqual(ratings.Where(rat => rat.movieId == 1), allRatings);
        }