public TimeEntryFormViewModel CreateFormViewModel(DateTime weekEndingDate, string userName)
 {
     var user = _personManagementService.GetByUserName(userName);
     var viewModel = new TimeEntryFormViewModel
                         {
                             WeekEndingDate = weekEndingDate,
                             RecentRequests = _timeEntryRepository.GetRecentRequests(user.Id),
                             Systems = _wrmsSystemRepository.GetActiveSystems(0, "Code", "Asc"),
                             UserId = user.Id
                         };
     return viewModel;
 }
        public void CanInitCreate()
        {
            // Establish Context
            var viewModel = new TimeEntryFormViewModel();

            _timeEntryManagementService.Expect(r => r.CreateFormViewModel(DateTime.Today, "testuser"))
                .Return(viewModel);
            _authenticationProvider.Expect(r => r.GetLoggedInUser()).Return("testuser");

            // Act
            ViewResult result = _timeEntriesController.Create(DateTime.Today).AssertViewRendered();

            // Assert
            result.ViewData.Model.ShouldNotBeNull();
            (result.ViewData.Model as TimeEntryFormViewModel).ShouldNotBeNull();
            (result.ViewData.Model as TimeEntryFormViewModel).TimeEntry.ShouldBeNull();
        }
        public void CanCreateFormViewModel()
        {
            // Establish Context
            var viewModelToExpect = new TimeEntryFormViewModel();

            _personManagementService.Expect(x => x.GetByUserName(Arg<string>.Is.Anything)).Return(
                PersonInstanceFactory.CreateValidTransientPerson());
            //_timeEntryRepository.Expect(x => x.GetRecentRequests(Arg<int>.Is.Anything)).Return(null);

            // Act
            TimeEntryFormViewModel viewModelRetrieved =
                _timeEntryManagementService.CreateFormViewModel(DateTime.Today, "testuser");

            // Assert
            viewModelRetrieved.ShouldNotBeNull();
            viewModelRetrieved.TimeEntry.ShouldBeNull();
        }
        public void CanCreateFormViewModelForTimeEntry()
        {
            // Establish Context
            var viewModelToExpect = new TimeEntryFormViewModel();

            _personManagementService.Expect(x => x.GetByUserName(Arg<string>.Is.Anything)).Return(
                PersonInstanceFactory.CreateValidTransientPerson());

            TimeEntry timeEntry =
                TimeEntryInstanceFactory.CreateValidTransientTimeEntry();

            _timeEntryRepository.Expect(r => r.Get(Arg<int>.Is.Anything))
                .Return(timeEntry);

            // Act
            TimeEntryFormViewModel viewModelRetrieved =
                _timeEntryManagementService.CreateFormViewModelFor(1, "testuser");

            // Assert
            viewModelRetrieved.ShouldNotBeNull();
            viewModelRetrieved.TimeEntry.ShouldNotBeNull();
            viewModelRetrieved.TimeEntry.ShouldEqual(timeEntry);
        }
        public void CanInitEdit()
        {
            // Establish Context
            var viewModel = new TimeEntryFormViewModel();

            _timeEntryManagementService.Expect(
                r => r.CreateFormViewModelFor(Arg<int>.Is.Anything, Arg<string>.Is.Anything))
                .Return(viewModel);

            // Act
            ViewResult result = _timeEntriesController.Edit(1).AssertViewRendered();

            // Assert
            result.ViewData.Model.ShouldNotBeNull();
            (result.ViewData.Model as TimeEntryFormViewModel).ShouldNotBeNull();
        }
        public void CannotUpdateInvalidTimeEntryFromForm()
        {
            // Establish Context
            var timeEntryFromForm = new TimeEntry();
            var viewModelToExpect = new TimeEntryFormViewModel();

            _timeEntryManagementService.Expect(r => r.UpdateWith(timeEntryFromForm, 0))
                .Return(ActionConfirmation.CreateFailureConfirmation("not updated"));
            _timeEntryManagementService.Expect(
                r => r.CreateFormViewModelFor(Arg<TimeEntry>.Is.Anything, Arg<string>.Is.Anything))
                .Return(viewModelToExpect);
            _authenticationProvider.Expect(r => r.GetLoggedInUser()).Return("testuser");
            _personManagementService.Expect(x => x.GetByUserName(Arg<string>.Is.Anything)).Return(
                PersonInstanceFactory.CreateValidTransientPerson());

            // Act
            ViewResult result =
                _timeEntriesController.Edit(timeEntryFromForm).AssertViewRendered();

            // Assert
            result.ViewData.Model.ShouldNotBeNull();
            (result.ViewData.Model as TimeEntryFormViewModel).ShouldNotBeNull();
        }
        public void CannotCreateInvalidTimeEntryFromForm()
        {
            // Establish Context
            var timeEntryFromForm = new TimeEntry();
            var viewModelToExpect = new TimeEntryFormViewModel();

            _timeEntryManagementService.Expect(r => r.SaveOrUpdate(Arg<TimeEntry>.Is.Anything))
                .Return(ActionConfirmation.CreateFailureConfirmation("not saved"));
            _timeEntryManagementService.Expect(
                r => r.CreateFormViewModelFor(Arg<TimeEntry>.Is.Anything, Arg<string>.Is.Anything))
                .Return(viewModelToExpect);
            _authenticationProvider.Expect(x => x.GetLoggedInUser()).Return("testuser");
            _personManagementService.Expect(x => x.GetByUserName(Arg<string>.Is.Anything)).Return(
                PersonInstanceFactory.CreateValidTransientPerson());

            // Act
            RedirectToRouteResult result =
                _timeEntriesController.Create(timeEntryFromForm).AssertActionRedirect().ToAction("Index");

            // Assert
            //result.ViewData.Model.ShouldNotBeNull();
            //(result.ViewData.Model as TimeEntryFormViewModel).ShouldNotBeNull();

            //_timeEntriesController.TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()].ToString().ShouldEqual("updated");
        }