public void ValidGetByIdShouldReturnSelectedHotel()
        {
            var options = new DbContextOptionsBuilder <BookingsDbContext>()
                          .UseInMemoryDatabase(databaseName: nameof(ValidGetByIdShouldReturnSelectedHotel))
                          .Options;

            using (var context = new BookingsDbContext(options))
            {
                var hotelService = new ReviewService(context);
                var controller   = new HotelsController(hotelService);

                Hotel hotel2 = new Hotel
                {
                    Id        = 1,
                    HotelName = "Transilvania Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10,
                        }
                    }
                };

                Hotel hotel1 = new Hotel
                {
                    Id        = 2,
                    HotelName = "Belvedere Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10,
                        }
                    }
                };

                hotelService.Create(hotel1);
                hotelService.Create(hotel2);

                context.Entry(hotel1).State = EntityState.Detached;
                context.Entry(hotel2).State = EntityState.Detached;

                var response = controller.GetHotelById(1);

                var contentResult = response as Hotel;

                Assert.IsNotNull(contentResult);
                Assert.AreEqual("Transilvania Hotel", contentResult.HotelName);
            }
        }
        public void ValidGetHotelsShouldListAll()
        {
            var options = new DbContextOptionsBuilder <BookingsDbContext>()
                          .UseInMemoryDatabase(databaseName: nameof(ValidGetHotelsShouldListAll))
                          .Options;

            using (var context = new BookingsDbContext(options))
            {
                var hotelService = new ReviewService(context);

                Hotel hotel2 = new Hotel
                {
                    HotelName = "Transilvania Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10,
                        }
                    }
                };

                Hotel hotel1 = new Hotel
                {
                    HotelName = "Belvedere Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10,
                        }
                    }
                };

                hotelService.Create(hotel1);
                hotelService.Create(hotel2);

                context.Entry(hotel1).State = EntityState.Detached;
                context.Entry(hotel2).State = EntityState.Detached;

                Assert.AreEqual(hotelService.GetHotels().Count(), 2);
            }
        }
        public void ValidDeleteShouldDeleteHotel()
        {
            var options = new DbContextOptionsBuilder <BookingsDbContext>()
                          .UseInMemoryDatabase(databaseName: nameof(ValidDeleteShouldDeleteHotel))
                          .Options;

            using (var context = new BookingsDbContext(options))
            {
                var hotelService = new ReviewService(context);
                var addedHotel   = hotelService.Create(new HotelBooking.Hotel
                {
                    Id        = 100,
                    HotelName = "Transilvania Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10,
                        }
                    }
                });

                hotelService.Delete(100);

                Assert.IsNull(hotelService.GetHotelById(100));
            }
        }
        public void ValidCreateShouldCreateANewHotel()
        {
            var options = new DbContextOptionsBuilder <BookingsDbContext>()
                          .UseInMemoryDatabase(databaseName: nameof(ValidCreateShouldCreateANewHotel))
                          .Options;

            using (var context = new BookingsDbContext(options))
            {
                var hotelService = new ReviewService(context);
                var addedHotel   = new Hotel
                {
                    HotelName = "Transilvania Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10,
                        }
                    }
                };

                var result = hotelService.Create(addedHotel);

                Assert.IsNotEmpty(context.Hotels);
            }
        }
        public void UpdateShouldUpdateExistingHotel()
        {
            var options = new DbContextOptionsBuilder <BookingsDbContext>()
                          .UseInMemoryDatabase(databaseName: nameof(UpdateShouldUpdateExistingHotel))
                          .Options;

            using (var context = new BookingsDbContext(options))
            {
                var hotelService = new ReviewService(context);
                var addedHotel   = hotelService.Create(new HotelBooking.Hotel
                {
                    HotelName = "Transilvania Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10
                        }
                    }
                });


                context.Entry(addedHotel).State = EntityState.Detached;
                Assert.AreEqual("Transilvania Hotel", addedHotel.HotelName);
                addedHotel.HotelName = "updated hotel";
                var updatedHotel = hotelService.Update(addedHotel.Id, addedHotel);
                Assert.AreEqual("updated hotel", updatedHotel.HotelName);
            }
        }
        public void ValidGetHotelByIdShouldGetSpecifiedHotel()
        {
            var options = new DbContextOptionsBuilder <BookingsDbContext>()
                          .UseInMemoryDatabase(databaseName: nameof(ValidGetHotelByIdShouldGetSpecifiedHotel))
                          .Options;

            using (var context = new BookingsDbContext(options))
            {
                var   hotelService = new ReviewService(context);
                Hotel hotel        = new Hotel
                {
                    HotelName = "Transilvania Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10,
                        }
                    }
                };

                hotel.Id = 1;
                hotelService.Create(hotel);
                context.Entry(hotel).State = EntityState.Detached;

                Assert.AreEqual(hotelService.GetHotelById(1).HotelName, "Transilvania Hotel");
            }
        }
        public HttpResponseMessage Create(ReviewCreateRequest review)
        {
            ItemResponse <int> response = new ItemResponse <int>();

            response.Item = ReviewService.Create(review);
            return(Request.CreateResponse(HttpStatusCode.OK, response));
        }
        public async Task SubmitReviewShouldBeCalledOnce()
        {
            var reviewRepo = new Mock <IRepository <Review> >();
            var usersRepo  = new Mock <IRepository <User> >();
            var users      = new List <User>
            {
                new User {
                    UserName = "******"
                },
                new User {
                    UserName = "******"
                },
            };

            usersRepo.Setup(u => u.All()).Returns(users.AsQueryable());

            var reviews = new List <Review>();

            reviewRepo.Setup(r => r.All()).Returns(reviews.AsQueryable());
            reviewRepo.Setup(r => r.AddAsync(It.IsAny <Review>())).Returns <Review>(Task.FromResult).Callback <Review>(r => reviews.Add(r));

            var service = new ReviewService(reviewRepo.Object, usersRepo.Object);
            var review  = new Review {
                Id = Guid.NewGuid()
            };

            await service.Create(review, "stamat");

            Assert.Equal(1, reviews.Count);
            Assert.Contains(reviews, r => r.Id == review.Id);
            reviewRepo.Verify(r => r.AddAsync(review), Times.Once);
        }
Exemple #9
0
        public async Task <IActionResult> New(NewReviewModel model)
        {
            var movie = _movies.GetDetails(model.MovieId);

            if (movie == null)
            {
                return(RedirectToAction("Index", "Movies"));
            }

            // TODO: authorize the user to create reviews for the movie

            if (ModelState.IsValid)
            {
                var result = _reviews.Create(model.MovieId, model.Stars, model.Comment, "test");
                if (result.Succeeded)
                {
                    return(View("Success", new ReviewSuccessViewModel {
                        MovieId = model.MovieId, Action = "Created"
                    }));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error);
                    }
                }
            }

            model.MovieTitle = movie.Title;

            return(View(model));
        }
        public async Task <IActionResult> Post(int movieId, [FromBody] ReviewUpdateModel model)
        {
            var movie = _movies.GetDetails(movieId);

            if (movie == null)
            {
                return(NotFound());
            }

            if (!(await _authorization.AuthorizeAsync(User, movie, Authorization.MovieOperations.Review)).Succeeded)
            {
                return(Forbid());
            }

            var userId = User.FindFirst("sub")?.Value;

            var result = _reviews.Create(movieId, model.Stars, model.Comment, userId);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors.ToArray()));
            }

            return(NoContent());
        }
Exemple #11
0
        public IActionResult CreateReview([FromBody] CreateReviewRequest request, long id, long sessionID)
        {
            var user = UserService.Get(long.Parse(User.Identity.Name));

            if (user == null)
            {
                return(NotFound(new ResponseModel
                {
                    Success = false,
                    Message = "Пользователь не найден"
                }));
            }

            var problem = ProblemService.Get(id);

            if (problem == null)
            {
                return(NotFound(new ResponseModel
                {
                    Success = false,
                    Message = "Проблема не найдена"
                }));
            }

            var session = SessionService.Get(sessionID);

            if (session == null)
            {
                return(NotFound(new ResponseModel
                {
                    Success = false,
                    Message = "Сессия не найдена"
                }));
            }

            var specialist = SpecialistService.Get(session.Specialist.ID);

            session.Specialist = specialist;

            SessionService.Update(session);

            var review = new Review
            {
                Session = session,
                Text    = request.ReviewText,
                Score   = request.Score
            };

            ReviewService.Create(review);

            return(Ok(new ResponseModel()));
        }
Exemple #12
0
        public ActionResult Create(Review review)
        {
            UserModel aPerson = GetUserFromSession();

            review.Person = aPerson;

            if (ModelState.IsValid)
            {
                reviewService.Create(review);
                return(RedirectToAction(nameof(Index)));
            }
            return(View(review));
        }
Exemple #13
0
        public IHttpActionResult CreateReview([FromBody] ReviewsDTO review)
        {
            ReviewService service  = new ReviewService();
            bool          response = service.Create(review);

            if (response)
            {
                return(Ok("Review has been added"));
            }
            else
            {
                return(Content(HttpStatusCode.BadRequest, "Review addition has failed. Invalid Inputs."));
            }
        }
        public void Create_UserIdAndItemIdAndInputDtoAddReview_ReturnsSingleOutputDtoQueryReview()
        {
            // ARRANGE //
            var reviewRep = Substitute.For <IReviewRepository>();

            reviewRep.GetById(1).Returns(CreateReview(1));
            reviewRep.Create(1, 1, Arg.Any <IReview>()).Returns(CreateReview(1));

            var reviewService = new ReviewService(reviewRep);
            var expected      = CreateOutputDtoQueryReview(1);

            // ACT //
            var output = reviewService.Create(1, 1, CreateInputDtoAddReview(1));

            // ASSERT //
            Assert.AreEqual(expected, output);
        }
        public ActionResult Create(ReviewCreate model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var userId  = Guid.Parse(User.Identity.GetUserId());
            var service = new ReviewService(userId, model.ProductId);

            if (service.Create(model))
            {
                TempData["SaveResult"] = "Your Review was created.";
                return(RedirectToAction("Details", "Product", new { id = model.ProductId }));
            }

            ModelState.AddModelError("", "Review could not be created");
            return(View(model));
        }
        public async Task <IActionResult> Create([Bind("Id,UserId,BookId,Created,Qualification,Comment")] ReviewViewModel reviewViewModel)
        {
            if (ModelState.IsValid)
            {
                var service = new ReviewService(HttpContext.Session.GetString("Token"));
                var items   = service.Create(reviewViewModel);
                if (items == null)
                {
                    return(BadRequest());
                }
                return(RedirectToAction(nameof(Index)));
            }
            var bookService = new BookService(HttpContext.Session.GetString("Token"));
            var userService = new UserService(HttpContext.Session.GetString("Token"));

            ViewData["BookId"]        = new SelectList(bookService.Get(), "Id", "Name", reviewViewModel.BookId);
            ViewData["UserId"]        = new SelectList(userService.Get(), "Id", "Name", reviewViewModel.UserId);
            ViewData["Qualification"] = new SelectList(Common.Reviews, "Value", "Key", reviewViewModel.Qualification);
            return(View(reviewViewModel));
        }
        public void ValidDeleteByIdNotFoundId()
        {
            var options = new DbContextOptionsBuilder <BookingsDbContext>()
                          .UseInMemoryDatabase(databaseName: nameof(ValidDeleteShouldDeleteHotel))
                          .Options;

            using (var context = new BookingsDbContext(options))
            {
                var hotelService = new ReviewService(context);
                var controller   = new HotelsController(hotelService);

                Hotel hotel = new Hotel
                {
                    Id        = 100,
                    HotelName = "Transilvania Hotel",
                    City      = "Sibiu",
                    Capacity  = 120,
                    Rating    = 8,
                    Reviews   = new List <Review>()
                    {
                        new Review
                        {
                            Text   = "fain",
                            Rating = 10,
                        }
                    }
                };


                hotelService.Create(hotel);
                context.Entry(hotel).State = EntityState.Detached;

                IActionResult actionResult = controller.DeleteHotel(200);

                //  var createdResult = actionResult as OkObjectResult;

                //  Assert.IsInstanceOf(createdResult.GetType(), typeof(System.Web.Http.Results.NotFoundResult));
                Assert.IsNotEmpty(context.Hotels);
            }
        }
Exemple #18
0
        public async Task <IActionResult> New(NewReviewModel model)
        {
            var movie = _movies.GetDetails(model.MovieId);

            if (movie == null)
            {
                return(RedirectToAction("Index", "Movies"));
            }

            // TODO: authorize the user to create reviews for the movie
            var authz = await _authorization.AuthorizeAsync(User, movie, Authorization.MovieOperations.Review);

            if (!authz.Succeeded)
            {
                return(Forbid());
            }

            if (ModelState.IsValid)
            {
                var result = _reviews.Create(model.MovieId, model.Stars, model.Comment, User.FindFirst("sub").Value);
                if (result.Succeeded)
                {
                    return(View("Success", new ReviewSuccessViewModel {
                        MovieId = model.MovieId, Action = "Created"
                    }));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error);
                    }
                }
            }

            model.MovieTitle = movie.Title;

            return(View(model));
        }
        public async Task SubmitReviewShouldThrowErrorForNonExistingUser()
        {
            var reviewRepo = new Mock <IRepository <Review> >();
            var usersRepo  = new Mock <IRepository <User> >();

            usersRepo.Setup(u => u.All()).Returns(new List <User>
            {
                new User {
                    UserName = "******"
                },
                new User {
                    UserName = "******"
                },
            }.AsQueryable());

            var service = new ReviewService(reviewRepo.Object, usersRepo.Object);
            var review  = new Review();

            await Assert.ThrowsAsync <NullReferenceException>(async() => await service.Create(review, "pesho"));

            reviewRepo.Verify(r => r.AddAsync(review), Times.Never);
        }
        public ActionResult <Review> Create(ReviewDTO review, string productId)
        {
            var apiRep = new APIResponse();
            var UserId = string.Empty;

            if (HttpContext.User.Identity is ClaimsIdentity identity)
            {
                UserId = identity.FindFirst(ClaimTypes.Name).Value;
            }
            var _review = new Review
            {
                userId    = UserId,
                value     = review.value,
                productId = review.productId,
            };
            var result = _reviewService.Create(_review);

            apiRep.Error = false;
            apiRep.Data  = result;

            return(Ok(apiRep));
        }