public void TryUpdateModelIsCalled_WhenItemIsFound()
        {
            // Arrange
            var viewMock = new Mock <ITeamView>();

            viewMock.Setup(v => v.ModelState).Returns(new ModelStateDictionary());
            int    teamId     = 1;
            string teamName   = "TeamName";
            double teamRating = 10;

            var teamServiceMock = new Mock <ITeamService>();

            teamServiceMock.Setup(c => c.GetTeamById(teamId)).Returns(new List <Team> {
                new Team()
                {
                    Id = teamId, Name = teamName, Rating = teamRating
                }
            });

            TeamPresenter teamPresenter = new TeamPresenter
                                              (viewMock.Object, teamServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnUpdateItem += null, new IdEventArgs(teamId));

            // Assert
            viewMock.Verify(v => v.TryUpdateModel(It.IsAny <Team>()), Times.Once());
        }
        public void UpdateCategoryIsNotCalled_WhenItemIsFoundAndIsInInvalidState()
        {
            // Arrange
            var viewMock   = new Mock <ITeamView>();
            var modelState = new ModelStateDictionary();

            modelState.AddModelError("test key", "test message");
            viewMock.Setup(v => v.ModelState).Returns(modelState);

            int    teamId          = 1;
            string teamName        = "TeamName";
            double teamRating      = 10;
            var    teamServiceMock = new Mock <ITeamService>();
            var    team            = new Team()
            {
                Id = teamId, Name = teamName, Rating = teamRating
            };

            teamServiceMock.Setup(c => c.GetTeamById(teamId)).Returns(new List <Team>()
            {
                team
            });

            TeamPresenter teamPresenter = new TeamPresenter(viewMock.Object, teamServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnUpdateItem += null, new IdEventArgs(teamId));

            // Assert
            teamServiceMock.Verify(c => c.UpdateTeam(team), Times.Never());
        }
Beispiel #3
0
        public void CreateCorrectInstanceOfTeamPresenter_WhenPassedArgumentsAreValid()
        {
            var teamServiceMock = new Mock <ITeamService>();
            var viewMock        = new Mock <ITeamView>();

            viewMock.Setup(v => v.Model).Returns(new TeamViewModel());

            TeamPresenter teamPresenter = new TeamPresenter(viewMock.Object, teamServiceMock.Object);

            Assert.IsInstanceOf <TeamPresenter>(teamPresenter);
        }
        public void AddTeamToViewModel_WhenOnGetTeamEventIsRaised()
        {
            var viewMock = new Mock <ITeamView>();

            viewMock.Setup(v => v.Model).Returns(new TeamViewModel());

            Team team            = new Team();
            var  teamServiceMock = new Mock <ITeamService>();

            teamServiceMock.Setup(x => x.GetTeamById(It.IsAny <int>())).Returns(team);

            TeamPresenter teamPresenter = new TeamPresenter(viewMock.Object, teamServiceMock.Object);

            viewMock.Raise(x => x.OnGetTeam += null, new IdEventArgs(It.IsAny <int>()));

            Assert.AreEqual(team, viewMock.Object.Model.Team);
        }
        public void TryUpdateModelIsNotCalled_WhenItemIsNotFound()
        {
            // Arrange
            var viewMock = new Mock <ITeamView>();

            viewMock.Setup(v => v.ModelState).Returns(new ModelStateDictionary());
            string errorKey        = string.Empty;
            int    teamId          = 1;
            var    teamServiceMock = new Mock <ITeamService>();

            teamServiceMock.Setup(c => c.GetTeamById(teamId)).Returns <Team>(null);

            TeamPresenter teamPresenter = new TeamPresenter
                                              (viewMock.Object, teamServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnUpdateItem += null, new IdEventArgs(teamId));

            // Assert
            viewMock.Verify(v => v.TryUpdateModel(It.IsAny <Team>()), Times.Never());
        }
        public void CallGetAllTeamsSortedById_WhenOnGetDataEventIsRaised()
        {
            //Arrange
            var viewMock = new Mock <ITeamView>();

            viewMock.Setup(v => v.Model).Returns(new TeamViewModel());

            var teams           = GetTeams();
            var teamServiceMock = new Mock <ITeamService>();

            teamServiceMock.Setup(c => c.GetAllTeamsSortedById())
            .Returns(teams);

            TeamPresenter teamPresenter = new TeamPresenter(viewMock.Object, teamServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnGetData += null, EventArgs.Empty);

            // Assert
            CollectionAssert.AreEquivalent(teams, viewMock.Object.Model.Teams); // TODO CHECK ORDER
        }
        public void AddModelError_WhenItemIsNotFound()
        {
            // Arrange
            var viewMock = new Mock <ITeamView>();

            viewMock.Setup(v => v.ModelState).Returns(new ModelStateDictionary());
            string errorKey        = string.Empty;
            int    teamId          = 1;
            string expectedError   = String.Format("Item with id {0} was not found", teamId);
            var    teamServiceMock = new Mock <ITeamService>();

            teamServiceMock.Setup(t => t.GetTeamById(teamId)).Returns <Team>(null);

            TeamPresenter teamPresenter = new TeamPresenter
                                              (viewMock.Object, teamServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnUpdateItem += null, new IdEventArgs(teamId));
            var actualResult = viewMock.Object.ModelState[errorKey].Errors[0].ErrorMessage;

            // Assert
            Assert.AreEqual(1, viewMock.Object.ModelState[errorKey].Errors.Count);
            StringAssert.AreEqualIgnoringCase(expectedError, actualResult);
        }
        /// <summary>
        /// Validates the date.
        /// </summary>
        /// <param name="presenter">The presenter.</param>
        /// <param name="resultMessage">The result Message.</param>
        /// <returns>
        /// true in case validated.
        /// </returns>
        private static bool ValidateDate(TeamPresenter presenter, out string resultMessage)
        {
            bool isValidDate = true;
            resultMessage = string.Empty;

            if (!presenter.Developer.BirthDate.HasValue)
            {
                resultMessage = Resources.DateOfBirthErrorMessage;
                isValidDate = false;
            }
            else if (!presenter.Developer.BirthDate.Value.IsValidDatabaseDate())
            {
                resultMessage = Resources.ValidDateErrorMessage;
                isValidDate = false;
            }
            else if (presenter.Developer.BirthDate.Value.Date > DateTimeHelper.RetrieveCurrentDate())
            {
                resultMessage = Resources.ValidDateErrorMessage;
                isValidDate = false;
            }

            return isValidDate;
        }
        private static void Validate(TeamPresenter presenter)
        {
            string resultMessage;

            if (string.IsNullOrEmpty(presenter.Developer.Name) || presenter.Developer.Name.Trim().Length <= 0)
            {
                presenter.ValidationErrors.Add(DeveloperName, Resources.NameErrorMessage);
            }

            if (!presenter.Developer.JoiningDate.HasValue)
            {
                presenter.ValidationErrors.Add(ValidDOJ, Resources.ErrorMessageEmptyDOJ);
            }
            else if (!presenter.Developer.JoiningDate.Value.IsValidDatabaseDate())
            {
                presenter.ValidationErrors.Add(ValidDOJ, Resources.ErrorMessageInvalidDOJ);
            }

            if (presenter.Developer.MaritalStatus == null)
            {
                presenter.ValidationErrors.Add(MartialStatus, Resources.ErrorMaritalStatus);
            }

            if (presenter.Developer.Gender == null)
            {
                presenter.ValidationErrors.Add(Gender, Resources.ErrorMEssageGender);
            }

            if (!ValidateDate(presenter, out resultMessage))
            {
                presenter.ValidationErrors.Add(ValidDOB, resultMessage);
            }

            if (Convert.ToInt32(presenter.Developer.DesignationID, CultureInfo.CurrentCulture) == -1)
            {
                presenter.ValidationErrors.Add(Designation, Resources.DesignationValidationMessage);
            }

            if (Convert.ToInt32(presenter.Developer.TimeZoneID, CultureInfo.CurrentCulture) == -1)
            {
                presenter.ValidationErrors.Add(TimeZone, Resources.TimeZoneValidationMessage);
            }

            if (Convert.ToInt32(presenter.Developer.RoleID, CultureInfo.CurrentCulture) == -1)
            {
                presenter.ValidationErrors.Add(RoleName, Resources.RoleValidationMessage);
            }

            if (presenter.Developer.ProductivityPerDay == null)
            {
                presenter.ValidationErrors.Add(ProductiveHour, Resources.ProductiveHourValidationMessage);
            }

            if (presenter.Developer.LoginID == null)
            {
                presenter.ValidationErrors.Add(LoginId, Resources.LoginIdValidationMessage);
            }

            if (!string.IsNullOrEmpty(presenter.Developer.Email))
            {
                Regex regularExpression = new Regex(StrRegex);
                if (!regularExpression.IsMatch(presenter.Developer.Email))
                {
                    presenter.ValidationErrors.Add(Email, Resources.EmailValidationMessage);
                }
            }
        }
        public ActionResult ValidateDetails(TeamPresenter presenter)
        {
            ModelState.Clear();
            if (presenter != null)
            {
                Validate(presenter);
                if (presenter.SelfId == -1)
                {
                    presenter.Developer.ManagerID = null;
                }
                else
                {
                    presenter.Developer.ManagerID = presenter.SelfId;
                }

                presenter.ValidationErrors.Append(this.developerService.Validate(presenter.Developer));
            }

            return new JsonResult { Data = presenter, MaxJsonLength = int.MaxValue };
        }
        public ActionResult SubmitDetails(TeamPresenter presenter)
        {
            if (presenter != null)
            {
                if (presenter.SelfId == -1)
                {
                    presenter.Developer.ManagerID = null;
                }
                else
                {
                    presenter.Developer.ManagerID = presenter.SelfId;
                }

                presenter.Developer.UserType = presenter.IsAdmin ? UserType.Admin : UserType.Normal;
                presenter.Developer.ModifiedByDeveloperID = SessionData.Instance.UserInfo.Developer.DeveloperID;
                if (Convert.ToInt32(presenter.Developer.TimeZoneID, CultureInfo.CurrentCulture) == -1)
                {
                    presenter.Developer.TimeZoneID = null;

                    if (presenter.Developer.DeveloperID == SessionData.Instance.UserInfo.Developer.DeveloperID)
                    {
                        presenter.Developer.TimeZoneOffset = presenter.Offset;
                    }
                }

                presenter.Developer.CompanyID = SessionData.Instance.UserInfo.Developer.CompanyID;
                this.developerService.InsertOrUpdate(presenter.Developer);

                if (presenter.Developer.DeveloperID == SessionData.Instance.UserInfo.Developer.DeveloperID)
                {
                    var developer = this.developerService.RetrieveByUserName(presenter.Developer.LoginID, SessionData.Instance.UserInfo.Developer.DeveloperID);
                    if (developer != null)
                    {
                        SessionData.Instance.UserInfo.Developer = developer;
                    }

                    if (!presenter.Developer.TimeZoneID.HasValue)
                    {
                        SessionData.Instance.UserInfo.TimeZoneInfo = new DeCurtis.Insight.Domain.TimeZoneInfo
                                                                         {
                                                                             TimeZoneOffset = presenter.Offset
                                                                         };
                    }
                    else
                    {
                        var timeZone = this.lookupService.RetrieveTimeZoneById(presenter.Developer.TimeZoneID.Value);
                        SessionData.Instance.UserInfo.Developer.TimeZone = timeZone;
                        SessionData.Instance.UserInfo.Developer.TimeZoneOffset = timeZone.Offset;
                    }
                }
            }

            return this.Json(string.Empty);
        }
        /// <summary>
        /// Adds the update.
        /// </summary>
        /// <param name="developerId">The developer id.</param>
        /// <param name="supervisorId">The supervisor id.</param>
        /// <param name="roleId">The role id.</param>
        /// <param name="projectId">The project identifier.</param>
        /// <param name="tabId">The tab identifier.</param>
        /// <param name="includeInactive">The include inactive.</param>
        /// <returns>
        /// Add Update page
        /// </returns>
        public ActionResult AddUpdate(string developerId, string supervisorId, string roleId, string projectId, string tabId, string includeInactive)
        {
            TeamPresenter presenter = new TeamPresenter();

            if (projectId == null)
            {
                this.AddBreadcrumbItem(Resources.Assignments, Url.AssignmentsAction());
            }
            else
            {
                presenter.ProjectId = projectId;
                presenter.TabId = tabId;

                this.AddBreadcrumbItem(Resources.ProjectDashboard, RetrieveProjectDashboardAddress(Url.ProjectDashboardAction(), presenter.ProjectId, presenter.TabId));
            }

            if (!string.IsNullOrEmpty(includeInactive))
            {
                presenter.IncludeInactive = Convert.ToBoolean(includeInactive, CultureInfo.CurrentCulture);
            }

            presenter.SelectedRoleId = roleId;
            presenter.SelectedSupervisorId = supervisorId;

            presenter.AssignRoles(this.lookupService.RetrieveRoles(null, null, SessionData.Instance.UserInfo.Developer.DeveloperID), false);
            presenter.AssignDesignations(this.lookupService.RetrieveDesignations(SessionData.Instance.UserInfo.Developer.DeveloperID));
            presenter.AssignUserTypes(this.lookupService.RetrieveUserTypes(SessionData.Instance.UserInfo.Developer.DeveloperID));
            presenter.AssignTimeZones(this.lookupService.RetrieveTimeZones());
            presenter.Designations.Insert(0, new LookupItem { ID = -1, Name = Resources.SelectDesignation });
            presenter.Roles.Insert(0, new LookupItem { ID = -1, Name = Resources.SelectRole });

            var supervisors = this.lookupService.RetrieveDevelopers(null, null, SessionData.Instance.UserInfo.Developer.DeveloperID);
            var maritalStatus = this.lookupService.RetrieveMaritalStatusList(SessionData.Instance.UserInfo.Developer.DeveloperID);
            if (string.IsNullOrEmpty(developerId))
            {
                // Add view
                this.AddBreadcrumbItem(Resources.AddTeam, Url.ManageTeamAction());
                presenter.Developer = new Developer();
                presenter.Developer.LoginID = LoginIdValue;
                presenter.Developer.ProductivityPerDay = ApplicationSettings.Instance.TeamMemberProductiveHours;
                presenter.AssignSupervisors(supervisors, false);
                presenter.AssignMaritalStatus(maritalStatus);
                presenter.MaritalStatusList.Insert(0, new LookupItem { ID = -1, Name = Resources.SelectMaritalStatus });
            }
            else
            {
                //// Edit view
                this.AddBreadcrumbItem(Resources.EditTeamMember, Url.ManageTeamAction());
                presenter.IsEdit = true;
                presenter.AssignSupervisors(supervisors.Where(item => item.ID != Convert.ToInt32(developerId, CultureInfo.CurrentCulture)).ToList(), false);
                presenter.Developer = this.developerService.RetrieveById(Convert.ToInt32(developerId, CultureInfo.CurrentCulture));
                presenter.AssignMaritalStatus(maritalStatus);
                presenter.MaritalStatusList.Insert(0, new LookupItem { ID = -1, Name = Resources.SelectMaritalStatus });

                if (presenter.Developer.UserType == UserType.Admin)
                {
                    presenter.IsAdmin = true;
                }

                if (presenter.Developer.ManagerID == null)
                {
                    presenter.SelfId = -1;
                }
                else
                {
                    presenter.SelfId = Convert.ToInt32(presenter.Developer.ManagerID, CultureInfo.CurrentCulture);
                }
            }

            ////presenter.OldPassword = presenter.Developer.Password;
            presenter.Supervisors.Insert(0, new LookupItem { ID = -1, Name = "- Self -" });
            presenter.TimeZoneList.Insert(0, new TimeZoneInfoListItem { TimeZoneID = -1, Name = Resources.SelectTimeZone });
            return this.View("AddUpdate", presenter);
        }