public IHttpActionResult PostRestaurantReview(RestaurantReviewDTO restaurantReviewDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                restaurantsService = new RestaurantsService(User.Identity.Name);
            }
            catch (UserNotFoundException)
            {
                return(null);
            }

            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <RestaurantReviewDTO, RestaurantReview>();
            });
            IMapper iMapper = config.CreateMapper();

            RestaurantReview restaurantReview = iMapper.Map <RestaurantReviewDTO, RestaurantReview>(restaurantReviewDTO);

            restaurantsService.AddReview(restaurantReview);

            return(CreatedAtRoute("DefaultApi", new { id = restaurantReview.RestaurantReviewId }, restaurantReviewDTO));
        }
示例#2
0
        public async Task Check_Restaurant_Seeder()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;

            this.dbContext = new ApplicationDbContext(options);

            var restaurantRepository            = new EfDeletableEntityRepository <Restaurant>(this.dbContext);
            var restaurantReservationRepository = new EfDeletableEntityRepository <RestaurantReservation>(this.dbContext);

            await restaurantRepository.AddAsync(new Restaurant
            {
                Id = "restaurantid",
                CurrentCapacity = 100,
                MaxCapacity     = 100,
                Description     = "restaurant",
                Price           = 50,
                Title           = "restaurant",
            });

            await restaurantRepository.SaveChangesAsync();

            this.restaurantsService = new RestaurantsService(restaurantRepository, restaurantReservationRepository);

            var actualResult = restaurantRepository.All().ToList();

            int expectedResult = 1;

            Assert.Equal(actualResult.Count(), expectedResult);
        }
示例#3
0
        public void MethodCreateShould_CallUnitOfWorkMethodCommit(string name, string contact,
                                                                  string weekendHours, string weekdaayHours, string photo, string details, int averageBill,
                                                                  string address, int maxPeopleCount)
        {
            var restaurant = new Restaurant()
            {
                ManagerId      = managerId,
                Address        = address,
                Name           = name,
                Contact        = contact,
                WeekendHours   = weekendHours,
                WeekdayHours   = weekdaayHours,
                Details        = details,
                AverageBill    = averageBill,
                MaxPeopleCount = maxPeopleCount
            };

            factoryMock.Setup(f => f.Create(name, contact, weekendHours, weekdaayHours, photo,
                                            details, averageBill, managerId, address, maxPeopleCount))
            .Returns(restaurant);

            var service = new RestaurantsService(repositoryMock.Object,
                                                 unitOfWorkMock.Object, factoryMock.Object);

            service.Create(name, contact, weekendHours, weekdaayHours, photo,
                           details, averageBill, managerId, address, maxPeopleCount);

            unitOfWorkMock.Verify(f => f.Commit(), Times.Once);
        }
示例#4
0
        public void EditPlaceShould_CallRepositoryMethodUpdate(string contact, string details,
                                                               string photoUrl, string weekendHours, string weekdaayHours, int averageBill, int maxPeopleCount)
        {
            var service = new RestaurantsService(repositoryMock.Object,
                                                 unitOfWorkMock.Object, factoryMock.Object);
            var id    = Guid.NewGuid();
            var place = new Restaurant()
            {
                Id           = id,
                Contact      = "contact",
                WeekendHours = "00:00 - 00:00",
                WeekdayHours = "00:00 - 00:00",
                Details      = "details",
                AverageBill  = 0,
            };

            repositoryMock.Setup(r => r.GetById(id)).Returns(place);

            var edittedPlace = place;

            edittedPlace.Contact        = contact;
            edittedPlace.WeekendHours   = weekendHours;
            edittedPlace.WeekdayHours   = weekdaayHours;
            edittedPlace.Details        = details;
            edittedPlace.AverageBill    = averageBill;
            edittedPlace.MaxPeopleCount = maxPeopleCount;


            service.Edit(id, contact, details, photoUrl, weekdaayHours, weekendHours, averageBill, maxPeopleCount);

            repositoryMock.Verify(r => r.Update(edittedPlace), Times.Once);
        }
示例#5
0
        public void MethodCreateShould_ReturnCorrectResult(string name, string contact, string photo,
                                                           string weekendHours, string weekdaayHours, string details, int averageBill,
                                                           string address, int maxPeopleCount)
        {
            var restaurant = new Restaurant()
            {
                ManagerId    = managerId,
                Address      = address,
                Name         = name,
                Contact      = contact,
                WeekendHours = weekendHours,
                WeekdayHours = weekdaayHours,
                Details      = details,
                AverageBill  = averageBill,
            };

            factoryMock.Setup(f => f.Create(name, contact, weekendHours, weekdaayHours, photo,
                                            details, averageBill, managerId, address, maxPeopleCount))
            .Returns(restaurant);

            var service = new RestaurantsService(repositoryMock.Object,
                                                 unitOfWorkMock.Object, factoryMock.Object);

            var result = service.Create(name, contact, weekendHours, weekdaayHours, photo,
                                        details, averageBill, managerId, address, maxPeopleCount);

            Assert.AreSame(restaurant, result);
        }
示例#6
0
        public void MethodEditShould_CallRepositoryMethodGetById(string contact, string details,
                                                                 string photoUrl, string weekendHours, string weekdaayHours, int averageBill, int maxPeopleCount)
        {
            var service = new RestaurantsService(repositoryMock.Object,
                                                 unitOfWorkMock.Object, factoryMock.Object);

            var id = Guid.NewGuid();

            service.Edit(id, contact, details, photoUrl, weekdaayHours, weekendHours, averageBill, maxPeopleCount);

            repositoryMock.Verify(r => r.GetById(id), Times.Once);
        }
示例#7
0
        public void MethodCreateShould_CallFactoryMethodCreaterestaurant(string name, string contact,
                                                                         string weekendHours, string weekdaayHours, string photo, string details, int averageBill,
                                                                         string address, int maxPeopleCount)
        {
            var service = new RestaurantsService(repositoryMock.Object,
                                                 unitOfWorkMock.Object, factoryMock.Object);

            service.Create(name, contact, weekendHours, weekdaayHours, photo,
                           details, averageBill, managerId, address, maxPeopleCount);

            factoryMock.Verify(f => f.Create(name, contact, weekendHours, weekdaayHours, photo,
                                             details, averageBill, managerId, address, maxPeopleCount), Times.Once);
        }
示例#8
0
        public void EditPlaceShould_ReturnNull_WhenPlaceWasNotFound(string contact, string details,
                                                                    string photoUrl, string weekendHours, string weekdaayHours, int averageBill, int maxPeopleCount)
        {
            var service = new RestaurantsService(repositoryMock.Object,
                                                 unitOfWorkMock.Object, factoryMock.Object);
            var id = Guid.NewGuid();

            repositoryMock.Setup(r => r.GetById(id)).Returns((Restaurant)null);

            var result = service.Edit(id, contact, details, photoUrl, weekdaayHours, weekendHours, averageBill, maxPeopleCount);

            Assert.IsNull(result);
        }
示例#9
0
        public async Task Reserve_Restaurant_Should_Reserve_For_Choosen_Guests()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;

            this.dbContext = new ApplicationDbContext(options);

            var restaurantRepository            = new EfDeletableEntityRepository <Restaurant>(this.dbContext);
            var restaurantReservationRepository = new EfDeletableEntityRepository <RestaurantReservation>(this.dbContext);

            await restaurantRepository.AddAsync(new Restaurant
            {
                Id = "restaurantid",
                CurrentCapacity = 100,
                MaxCapacity     = 100,
                Description     = "restaurant",
                Price           = 50,
                Title           = "restaurant",
            });

            await restaurantRepository.SaveChangesAsync();

            this.restaurantsService = new RestaurantsService(restaurantRepository, restaurantReservationRepository);

            var reservation = new RestaurantInputModel
            {
                EventDate      = DateTime.Now.AddDays(1),
                CheckIn        = DateTime.Now.AddDays(1).AddHours(10),
                CheckOut       = DateTime.Now.AddDays(1).AddHours(11),
                NumberOfGuests = 50,
                EmailAddress   = "*****@*****.**",
                FirstName      = "Marian",
                LastName       = "Kyuchukov",
                PhoneNumber    = "0888186978",
                EventType      = (RestaurantEventType)Enum.Parse(typeof(RestaurantEventType), "Birthday"),
            };

            var result = await this.restaurantsService.ReserveRestaurant(reservation);

            var parsedEventType = (RestaurantEventType)Enum.Parse(typeof(RestaurantEventType), "Birthday");

            var actualResult = restaurantReservationRepository.All().FirstOrDefault(x => x.EventType == parsedEventType).NumberOfGuests;

            var expected = 50;

            Assert.Equal(expected, actualResult);
        }
示例#10
0
        public async Task Get_All_Reservations_Should_Return_All_Reservations()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;

            this.dbContext = new ApplicationDbContext(options);

            var restaurantRepository            = new EfDeletableEntityRepository <Restaurant>(this.dbContext);
            var restaurantReservationRepository = new EfDeletableEntityRepository <RestaurantReservation>(this.dbContext);

            await restaurantRepository.AddAsync(new Restaurant
            {
                Id = "restaurantid",
                CurrentCapacity = 100,
                MaxCapacity     = 100,
                Description     = "restaurant",
                Price           = 50,
                Title           = "restaurant",
            });

            await restaurantRepository.SaveChangesAsync();

            await restaurantReservationRepository.AddAsync(new RestaurantReservation
            {
                EventDate      = DateTime.Now.AddDays(1),
                CheckIn        = DateTime.Now.AddDays(1).AddHours(10),
                CheckOut       = DateTime.Now.AddDays(1).AddHours(11),
                NumberOfGuests = 50,
                PhoneNumber    = "0888186978",
                EventType      = (RestaurantEventType)Enum.Parse(typeof(RestaurantEventType), "Birthday"),
                UserId         = "1",
            });

            this.restaurantsService = new RestaurantsService(restaurantRepository, restaurantReservationRepository);

            await restaurantReservationRepository.SaveChangesAsync();

            int expectedResult = 1;

            var actualResult = await this.restaurantsService.GetAllReservationsAsyncForAdmin <RestaurantAllViewModel>();

            Assert.Equal(actualResult.Count(), expectedResult);
        }
示例#11
0
        public async Task Reserve_Restaurant_Should_Reserve_Correct_EventType()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;

            this.dbContext = new ApplicationDbContext(options);

            var restaurantRepository            = new EfDeletableEntityRepository <Restaurant>(this.dbContext);
            var restaurantReservationRepository = new EfDeletableEntityRepository <RestaurantReservation>(this.dbContext);

            await restaurantRepository.AddAsync(new Restaurant
            {
                Id = "restaurantid",
                CurrentCapacity = 100,
                MaxCapacity     = 100,
                Description     = "restaurant",
                Price           = 50,
                Title           = "restaurant",
            });

            await restaurantRepository.SaveChangesAsync();

            this.restaurantsService = new RestaurantsService(restaurantRepository, restaurantReservationRepository);

            await restaurantReservationRepository.AddAsync(new RestaurantReservation
            {
                EventDate      = DateTime.Now.AddDays(1),
                CheckIn        = DateTime.Now.AddDays(1).AddHours(10),
                CheckOut       = DateTime.Now.AddDays(1).AddHours(11),
                NumberOfGuests = 50,
                PhoneNumber    = "0888186978",
                EventType      = (RestaurantEventType)Enum.Parse(typeof(RestaurantEventType), "Birthday"),
            });

            await restaurantReservationRepository.SaveChangesAsync();

            var actualResult = restaurantReservationRepository.All().First().EventType.ToString();

            var expected = "Birthday";

            Assert.Equal(expected, actualResult);
        }
        // GET: api/RestaurantReviews/5
        public IEnumerable <RestaurantReviewDTO> GetRestaurantReview(int id)
        {
            try
            {
                restaurantsService = new RestaurantsService(User.Identity.Name);
            }
            catch (UserNotFoundException)
            {
                return(null);
            }

            IEnumerable <RestaurantReview> restaurantReviews = restaurantsService.GetReviews(id);

            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <RestaurantReview, RestaurantReviewDTO>();
            });
            IMapper iMapper = config.CreateMapper();

            return(iMapper.Map <IEnumerable <RestaurantReview>, IEnumerable <RestaurantReviewDTO> >(restaurantReviews));
        }
示例#13
0
        public void EditPlaceShould_CallUnitOfWorkMethodCommit(string contact, string details,
                                                               string photoUrl, string weekendHours, string weekdaayHours, int averageBill, int maxPeopleCount)
        {
            var service = new RestaurantsService(repositoryMock.Object,
                                                 unitOfWorkMock.Object, factoryMock.Object);
            var id    = Guid.NewGuid();
            var place = new Restaurant()
            {
                Id           = id,
                Contact      = "contact",
                WeekendHours = "00:00 - 00:00",
                WeekdayHours = "00:00 - 00:00",
                Details      = "details",
                AverageBill  = 0,
            };

            repositoryMock.Setup(r => r.GetById(id)).Returns(place);

            service.Edit(id, contact, details, photoUrl, weekdaayHours, weekendHours, averageBill, maxPeopleCount);

            unitOfWorkMock.Verify(u => u.Commit(), Times.Once);
        }
示例#14
0
        public void EditPlaceShould_ReturnCorrectResult(string contact, string details,
                                                        string photoUrl, string weekendHours, string weekdaayHours, int averageBill, int maxPeopleCount)
        {
            var service = new RestaurantsService(repositoryMock.Object,
                                                 unitOfWorkMock.Object, factoryMock.Object);
            var id    = Guid.NewGuid();
            var place = new Restaurant()
            {
                Id           = id,
                Contact      = "contact",
                WeekendHours = "00:00 - 00:00",
                WeekdayHours = "00:00 - 00:00",
                Details      = "details",
                AverageBill  = 0,
            };

            repositoryMock.Setup(r => r.GetById(id)).Returns(place);

            var edittedPlace = new Restaurant()
            {
                Id             = id,
                Contact        = contact,
                WeekendHours   = weekendHours,
                WeekdayHours   = weekdaayHours,
                Details        = details,
                AverageBill    = averageBill,
                MaxPeopleCount = maxPeopleCount
            };

            var result = service.Edit(id, contact, details, photoUrl, weekdaayHours, weekendHours, averageBill, maxPeopleCount);

            Assert.AreEqual(contact, result.Contact);
            Assert.AreEqual(details, result.Details);
            Assert.AreEqual(photoUrl, result.PhotoUrl);
            Assert.AreEqual(weekdaayHours, result.WeekdayHours);
            Assert.AreEqual(weekendHours, result.WeekendHours);
            Assert.AreEqual(averageBill, result.AverageBill);
        }
        public IHttpActionResult GetRestaurant(int id)
        {
            try
            {
                restaurantsService = new RestaurantsService(User.Identity.Name);
            }
            catch (UserNotFoundException)
            {
                return(NotFound());
            }

            Restaurant restaurant = restaurantsService.Get(id);

            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <Restaurant, RestaurantDTO>();
            });
            IMapper iMapper = config.CreateMapper();

            RestaurantDTO restaurantDTO = iMapper.Map <Restaurant, RestaurantDTO>(restaurant);

            return(Ok(restaurantDTO));
        }
示例#16
0
        public void Setup()
        {
            var optionsBuilder = new DbContextOptionsBuilder();

            // On se sert d'une base en mémoire, car on ne teste que le service. On la remplit avec un restaurant indépendamment du service.
            // J'ai l'impression que cela pose problème pour le tracking des entités : certains tests échouent ou non selon qu'on les lance indépendamment des autres ou tous ensemble...
            optionsBuilder.UseInMemoryDatabase("Restaurants");
            var options = optionsBuilder.Options;

            db = new RestaurantsContext(options);
            db.Restaurants.Add(new Restaurant()
            {
                Nom       = "Test",
                Email     = "*****@*****.**",
                Telephone = "25411225588",
                Adresse   = new Adresse {
                    CodePostal = "63854", Ville = "Grenoble", Rue = "cours test", Numero = "58 bis"
                },
                LastGrade = new Grade {
                    DateDerniereVisite = DateTime.Parse("01/01/20"), Note = 10, Commentaire = "nul"
                }
            });
            db.Restaurants.Add(new Restaurant()
            {
                Nom       = "Test2",
                Email     = "*****@*****.**",
                Telephone = "25411225588",
                Adresse   = new Adresse {
                    CodePostal = "63854", Ville = "Grenoble", Rue = "cours test", Numero = "58 bis"
                },
                LastGrade = new Grade {
                    DateDerniereVisite = DateTime.Parse("01/01/20"), Note = 10, Commentaire = "nul"
                }
            });
            db.SaveChanges();
            srv = new RestaurantsService(db);
        }
        // GET: api/Restaurants
        public IEnumerable <RestaurantDTO> GetRestaurants(
            string filterOption = null, string sortOption = null,
            int pageSize        = 20, int pageNumber      = 1)
        {
            try
            {
                restaurantsService = new RestaurantsService(User.Identity.Name);
            }
            catch (UserNotFoundException)
            {
                return(null);
            }

            IEnumerable <Restaurant> restaurants = restaurantsService.Get(
                filterOption, sortOption, pageSize, pageNumber);

            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <Restaurant, RestaurantDTO>();
            });
            IMapper iMapper = config.CreateMapper();

            return(iMapper.Map <IEnumerable <Restaurant>, IEnumerable <RestaurantDTO> >(restaurants));
        }
 // private readonly IngredientsService _ingredientsService;
 public RestaurantsController(RestaurantsService rs)
 {
     _rs = rs;
     // _ingredientsService = gs;
 }
 public RestaurantsController(RestaurantsService service)
 {
     this.service = service;
 }
 public RestaurantsController(RestaurantsService rs, ReviewsService reviewsserv)
 {
     _rs          = rs;
     _reviewsserv = reviewsserv;
 }
示例#21
0
 public RestaurantsController(RestaurantsService restaurantService)
 {
     _restaurantsService = restaurantService;
 }
示例#22
0
 public ProfilesController(ProfilesService ps, RestaurantsService rs)
 {
     _ps = ps;
     _rs = rs;
 }