public void Create_Event_Build_ViewModel_Fail()
        {
            //Arrange
            A.CallTo(() => PersonRepo.GetAll()).Returns(null);
            var contoller = new EventController(RepositoryFactory, EventService, UserService, NotifyService);

            //Act
            var result = contoller.Create() as ViewResult;

            //Assert
            Assert.AreEqual(result.ViewBag.StatusMessage, Constants.BASE_BUILD_VIEW_FAIL);
        }
        public void Create_Event_Fail()
        {
            //Arrange
            var contoller = new EventController(RepositoryFactory, EventService, UserService, NotifyService);

            //Act
            var result = contoller.Create(new EditEventViewModel()) as RedirectToRouteResult;

            //Assert
            Assert.AreEqual(result.RouteValues["action"], "Index");
            Assert.AreEqual(result.RouteValues["controller"], "Home");
            Assert.AreEqual(result.RouteValues["message"].ToString(), "SaveModelFailed");
        }
        public void Create_Event_Build_ViewModel_Success()
        {
            //Arrange
            var thePerson = new Person
                {
                    PersonId = 1,
                    UserName = "******",
                    FirstName = "Joe",
                    LastName = "Smith",
                    MyRegisteredFriends = new List<Person>(),
                    MyUnRegisteredFriends = new List<PendingInvitation>(),
                    MyFoodItems = new List<FoodItem>(),
                    MyGames = new List<Game>()
                };
            A.CallTo(() => UserService.GetCurrentUserId("")).Returns(1);
            A.CallTo(() => PersonRepo.GetAll()).Returns(new List<Person> { thePerson }.AsQueryable());
            var contoller = new EventController(RepositoryFactory, EventService, UserService, NotifyService);

            //Act
            var result = contoller.Create() as ViewResult;

            //Assert
            Assert.AreEqual(result.ViewBag.StatusMessage, null);
        }
        public void Create_Event_ModelState_Not_Valid()
        {
            //Arrange
            var viewModel = new EditEventViewModel();
            var contoller = new EventController(RepositoryFactory, EventService, UserService, NotifyService);

            var modelBinder = new ModelBindingContext
            {
                ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => viewModel, viewModel.GetType()),
                ValueProvider = new NameValueCollectionValueProvider(new NameValueCollection(), CultureInfo.InvariantCulture)
            };

            var binder = new DefaultModelBinder().BindModel(new ControllerContext(), modelBinder);
            contoller.ModelState.Clear();
            contoller.ModelState.Merge(modelBinder.ModelState);
            //Act
            var result = contoller.Create(viewModel) as ViewResult;

            //Assert
            Assert.AreEqual(result.ViewData.ModelState.Count, 6);
            Assert.IsFalse(result.ViewData.ModelState.IsValid);
        }
        public void Create_Event_Success()
        {
            //Arrange
            var viewModel = GetTestEventViewModel();
            var expectedDataModel = GetTestEventDataModel();
            var contoller = new EventController(RepositoryFactory, EventService, UserService, NotifyService);
            A.CallTo(() => PersonRepo.GetAll()).Returns(new List<Person> {new Person {PersonId = 1}}.AsQueryable());

            //Act
            var result = contoller.Create(viewModel) as RedirectToRouteResult;

            //Assert
            //That the data model being passed to the repository is what we expect.
            A.CallTo(() => EventRepo.Insert(A<Event>._)).MustHaveHappened();
            A.CallTo(() => EventRepo.SubmitChanges()).MustHaveHappened();

            //That the route values are what we expect.
            Assert.AreEqual(result.RouteValues["action"], "Index");
            Assert.AreEqual(result.RouteValues["controller"], "Home");
            Assert.AreEqual(result.RouteValues["message"].ToString(), "SaveModelSuccess");
        }