예제 #1
0
        public void Given_HasAccessToAllSites_is_true_When_Add_Then_request_service_to_create_new_riskAssessor()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                SiteId = null,
                HasAccessToAllSites = true,
                EmployeeId = Guid.NewGuid(),
            };
            var target = GetTarget();

            // When
            dynamic result = target.Add(viewModel);

            // Then
            _riskAssessorService.Verify(x => x.Create(It.Is<CreateEditRiskAssessorRequest>(
                y => 
                    y.CompanyId == TestControllerHelpers.CompanyIdAssigned &&
                    y.CreatingUserId == TestControllerHelpers.UserIdAssigned &&
                    y.DoNotSendReviewDueNotification == viewModel.DoNotSendReviewDueNotification &&
                    y.DoNotSendTaskCompletedNotifications == viewModel.DoNotSendTaskCompletedNotifications &&
                    y.DoNotSendTaskOverdueNotifications == viewModel.DoNotSendTaskOverdueNotifications &&
                    y.DoNotSendDueTomorrowNotification == viewModel.DoNotSendTaskDueTomorrowNotification &&
                    y.EmployeeId == viewModel.EmployeeId &&
                    y.HasAccessToAllSites == viewModel.HasAccessToAllSites
            )));
        }
        public void When_Add_Then_request_service_to_create_new_riskAssessor()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                Site = "Magaluf",
                SiteId = 1234L,
                EmployeeId = Guid.NewGuid()
            };
            var target = GetTarget();

            // When
            target.Add(viewModel);

            // Then
            _riskAssessorService.Verify(x => x.Create(It.Is<CreateEditRiskAssessorRequest>(
                y => 
                    y.CompanyId == TestControllerHelpers.CompanyIdAssigned &&
                    y.CreatingUserId == TestControllerHelpers.UserIdAssigned &&
                    y.DoNotSendReviewDueNotification == viewModel.DoNotSendReviewDueNotification &&
                    y.DoNotSendTaskCompletedNotifications == viewModel.DoNotSendTaskCompletedNotifications &&
                    y.DoNotSendTaskOverdueNotifications == viewModel.DoNotSendTaskOverdueNotifications &&
                    y.DoNotSendDueTomorrowNotification == viewModel.DoNotSendTaskDueTomorrowNotification &&
                    y.EmployeeId == viewModel.EmployeeId
            )));
        }
예제 #3
0
        public void Setup()
        {
            _addEditRiskAssessorViewModelFactory = new Mock<IAddEditRiskAssessorViewModelFactory>();

            _viewModel = new AddEditRiskAssessorViewModel
                             {
                                 SaveButtonEnabled = true
                             };

            _addEditRiskAssessorViewModelFactory
                .Setup(x => x.GetViewModel())
                .Returns(_viewModel);
        }
        public void When_Add_Then_return_json()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                Site = "Magaluf",
                SiteId = 1234L,
                EmployeeId = Guid.NewGuid()
            };
            var target = GetTarget();

            // When
            var result = target.Add(viewModel);

            // Then
            Assert.That(result, Is.InstanceOf<JsonResult>());
        }
예제 #5
0
        public void When_Edit_Then_return_json()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                Site = "Llandundo",
                SiteId = 1234L,
                EmployeeId = Guid.NewGuid(),
                RiskAssessorId = 555L
            };
            var target = GetTarget();

            // When
            var result = target.Edit(viewModel);

            // Then
            Assert.That(result, Is.InstanceOf<JsonResult>());
        }
예제 #6
0
        public void Given_invalid_model_submission_When_Add_Then_return_errors_as_json()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                EmployeeId = Guid.NewGuid(),
                Site = "a site",
                SiteId = 1234L,
                RiskAssessorId = 555L
            };
            var target = GetTarget();

            // When
            target.ModelState.AddModelError("error key", "error message");
            dynamic result = target.Edit(viewModel);

            // Then
            Assert.That(bool.Parse(result.Data.Success), Is.False);
        }
예제 #7
0
        public void Setup()
        {
            _companyId = 88888L;
            _riskAssessorId = 3L;

            _addEditRiskAssessorViewModelFactory = new Mock<IAddEditRiskAssessorViewModelFactory>();

            _viewModel = new AddEditRiskAssessorViewModel
                             {
                                 SaveButtonEnabled = true
                             };

            _addEditRiskAssessorViewModelFactory
                .Setup(x => x.WithCompanyId(It.IsAny<long>()))
                .Returns(_addEditRiskAssessorViewModelFactory.Object);

            _addEditRiskAssessorViewModelFactory
                .Setup(x => x.WithRiskAssessorId(It.IsAny<long>()))
                .Returns(_addEditRiskAssessorViewModelFactory.Object);

            _addEditRiskAssessorViewModelFactory
                .Setup(x => x.GetViewModel())
                .Returns(_viewModel);
        }
        public AddEditRiskAssessorViewModel GetViewModel()
        {
            AddEditRiskAssessorViewModel viewModel;


            viewModel = new AddEditRiskAssessorViewModel
            {
                SaveButtonEnabled = true
            };

            if (_companyId > 0 && _riskAssessorId > 0)
            {
                var riskAssessor = _riskAssessorService.GetByIdAndCompanyId(_riskAssessorId, _companyId);
                viewModel.EmployeeId = riskAssessor.Employee.Id;
                viewModel.Employee = riskAssessor.Employee.Forename + " " + riskAssessor.Employee.Surname;
                viewModel.SiteId = riskAssessor.Site != null ? riskAssessor.Site.Id : (long?)null;
                viewModel.Site = riskAssessor.Site != null ? riskAssessor.Site.Name : null;
                viewModel.DoNotSendReviewDueNotification = riskAssessor.DoNotSendReviewDueNotification;
                viewModel.DoNotSendTaskOverdueNotifications = riskAssessor.DoNotSendTaskOverdueNotifications;
                viewModel.DoNotSendTaskCompletedNotifications = riskAssessor.DoNotSendTaskCompletedNotifications;
                viewModel.HasAccessToAllSites = riskAssessor.HasAccessToAllSites;
            }
            return viewModel;
        }
        public void Given_no_employee_id_When_Add_Then_return_error()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                EmployeeId = Guid.NewGuid(),
                Site = string.Empty,
                SiteId = null
            };
            var target = GetTarget();

            // When
            dynamic result = target.Add(viewModel);

            // Then
            Assert.That(bool.Parse(result.Data.Success), Is.False);
        }
예제 #10
0
        public void Given_site_selected_When_Edit_Then_return_RiskAssessor_details_in_json()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel
            {
                RiskAssessorId = 1234L,
                DoNotSendReviewDueNotification = true,
                DoNotSendTaskOverdueNotifications = true,
                DoNotSendTaskCompletedNotifications = true,
                DoNotSendTaskDueTomorrowNotification = true,
                EmployeeId = Guid.NewGuid(),
                SiteId = 888L,
                Site = "Vatican",
                HasAccessToAllSites = false,
            };
            var target = GetTarget();

            // When
            dynamic result = target.Edit(viewModel);

            // Then
            Assert.That(result.Data.Success, Is.True);
            Assert.That(result.Data.RiskAssessorId, Is.EqualTo(viewModel.RiskAssessorId.Value));
            Assert.That(result.Data.Forename, Is.EqualTo(_returnedRiskAssessor.Employee.Forename));
            Assert.That(result.Data.Surname, Is.EqualTo(_returnedRiskAssessor.Employee.Surname));
            Assert.That(result.Data.DoNotSendReviewDueNotification, Is.EqualTo(_returnedRiskAssessor.DoNotSendReviewDueNotification));
            Assert.That(result.Data.DoNotSendTaskCompletedNotifications, Is.EqualTo(_returnedRiskAssessor.DoNotSendTaskCompletedNotifications));
            Assert.That(result.Data.DoNotSendTaskOverdueNotifications, Is.EqualTo(_returnedRiskAssessor.DoNotSendTaskOverdueNotifications));
          
            Assert.That(result.Data.FormattedName, Is.EqualTo(_returnedRiskAssessor.Employee.FullName));
        }
예제 #11
0
        public void Given_no_riskAssessor_id_When_Edit_Then_throw_exception()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel
                                {
                                    DoNotSendReviewDueNotification = true,
                                    DoNotSendTaskOverdueNotifications = true,
                                    DoNotSendTaskCompletedNotifications = true,
                                    DoNotSendTaskDueTomorrowNotification = true,
                                    EmployeeId = Guid.NewGuid(),
                                    SiteId = 888L,
                                    Site = "Powys",
                                    HasAccessToAllSites = false,
                                    RiskAssessorId = (long?)null
                                };
            var target = GetTarget();

            // When


            // Then
            Assert.Throws<ArgumentNullException>(() => target.Edit(viewModel));
        }
예제 #12
0
        public void Given_site_selected_When_Edit_Then_site_id_and_risk_assessor_are_passed_to_service()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
                                {
                                    DoNotSendReviewDueNotification = true,
                                    DoNotSendTaskOverdueNotifications = true,
                                    DoNotSendTaskCompletedNotifications = true,
                                    DoNotSendTaskDueTomorrowNotification = true,
                                    EmployeeId = Guid.NewGuid(),
                                    SiteId = 888L,
                                    Site = "Vatican",
                                    HasAccessToAllSites = false,
                                    RiskAssessorId = 555L
                                };
            var target = GetTarget();

            // When
            var result = target.Edit(viewModel);

            // Then
            _riskAssessorService.Verify(x => x.Update(It.Is<CreateEditRiskAssessorRequest>(
                y =>
                    y.CompanyId == TestControllerHelpers.CompanyIdAssigned &&
                    y.CreatingUserId == TestControllerHelpers.UserIdAssigned &&
                    y.DoNotSendReviewDueNotification == viewModel.DoNotSendReviewDueNotification &&
                    y.DoNotSendTaskCompletedNotifications == viewModel.DoNotSendTaskCompletedNotifications &&
                    y.DoNotSendTaskOverdueNotifications == viewModel.DoNotSendTaskOverdueNotifications &&
                    y.EmployeeId == viewModel.EmployeeId &&
                    y.SiteId == viewModel.SiteId &&
                    y.RiskAssessorId == viewModel.RiskAssessorId
            )));
        }
예제 #13
0
        public void Given_no_employee_id_When_Add_Then_return_error()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                EmployeeId = null,
                Site = "Southport",
                SiteId = 888L,
                RiskAssessorId = 555L
            };
            var target = GetTarget();

            // When
            dynamic result = target.Edit(viewModel);

            // Then
            Assert.That(bool.Parse(result.Data.Success), Is.False);
        }
        public void When_Add_Then_return_new_riskAssessor_info()
        {
            // Given
            _riskAssessorService
                .Setup(x => x.GetByIdAndCompanyId(_newRiskAssessorId, TestControllerHelpers.CompanyIdAssigned))
                .Returns(new RiskAssessorDto()
                {
                    Id = _newRiskAssessorId,
                    Employee = new EmployeeDto()
                    {
                        Forename = "Jimbo",
                        Surname = "Jones"
                    },
                    Site = new SiteDto()
                });

            var viewModel = new AddEditRiskAssessorViewModel()
            {
                Site = "Magaluf",
                SiteId = 1234L,
                EmployeeId = Guid.NewGuid()
            };
            var target = GetTarget();

            // When
            dynamic result = target.Add(viewModel);

            // Then
            Assert.That(result.Data.Forename, Is.EqualTo("Jimbo"));
            Assert.That(result.Data.Surname, Is.EqualTo("Jones"));
            Assert.That(result.Data.RiskAssessorId, Is.EqualTo(_newRiskAssessorId));
        }
        private long CreateNewRiskAssessor(AddEditRiskAssessorViewModel viewModel)
        {
            var request = new CreateEditRiskAssessorRequest
                          {
                              CompanyId = CurrentUser.CompanyId,
                              CreatingUserId = CurrentUser.UserId,
                              EmployeeId = viewModel.EmployeeId.Value,
                              SiteId = viewModel.SiteId,
                              DoNotSendTaskOverdueNotifications = viewModel.DoNotSendTaskOverdueNotifications,
                              DoNotSendTaskCompletedNotifications = viewModel.DoNotSendTaskCompletedNotifications,
                              DoNotSendReviewDueNotification = viewModel.DoNotSendReviewDueNotification,
                              HasAccessToAllSites = viewModel.HasAccessToAllSites
                          };

            return _riskAssessorService.Create(request);
        }
 private void Validate(AddEditRiskAssessorViewModel viewModel)
 {
     if (viewModel.HasAccessToAllSites && viewModel.SiteId != null)
     {
         ModelState.AddModelError("Site", "Please select either All Sites or an individual site");
     }
     if (viewModel.HasAccessToAllSites == false && viewModel.SiteId == null)
     {
         ModelState.AddModelError("Site", "Please select a Site");
     }
     if (viewModel.EmployeeId == null)
     {
         ModelState.AddModelError("Employee", "Please select an Employee");
     }
 }
        public JsonResult Add(AddEditRiskAssessorViewModel viewModel)
        {
            Validate(viewModel);

            if (!ModelState.IsValid)
            {
                return ModelStateErrorsWithKeysAsJson();
            }

            var riskAssessorId = CreateNewRiskAssessor(viewModel);
            var riskAssessor = _riskAssessorService.GetByIdAndCompanyId(riskAssessorId, CurrentUser.CompanyId);
            return Json(new
            {
                Success = true,
                RiskAssessorId = riskAssessorId,
                Forename = riskAssessor.Employee.Forename,
                Surname = riskAssessor.Employee.Surname,
                SiteName = riskAssessor.HasAccessToAllSites ? "All Sites" : riskAssessor.Site.Name,
                DoNotSendReviewDueNotification = riskAssessor.DoNotSendReviewDueNotification,
                DoNotSendTaskCompletedNotifications = riskAssessor.DoNotSendTaskCompletedNotifications,
                DoNotSendTaskOverdueNotifications = riskAssessor.DoNotSendTaskOverdueNotifications,
                FormattedName = riskAssessor.Employee.FullName,
            });
        }
예제 #18
0
        public void Given_site_id_and_HasAccessToAllSites_When_Add_Then_return_error()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                EmployeeId = Guid.NewGuid(),
                HasAccessToAllSites = true,
                SiteId = 123L
            };
            var target = GetTarget();

            // When
            dynamic result = target.Add(viewModel);

            // Then
            Assert.That(bool.Parse(result.Data.Success), Is.False);
        }
예제 #19
0
        public void Given_not_HasAccessToAllSites_and_no_site_name_When_Add_Then_return_error()
        {
            // Given
            var viewModel = new AddEditRiskAssessorViewModel()
            {
                EmployeeId = Guid.NewGuid(),
                HasAccessToAllSites = false,
                SiteId = null,
                RiskAssessorId = 555L
            };
            var target = GetTarget();

            // When
            dynamic result = target.Edit(viewModel);

            // Then
            Assert.That(bool.Parse(result.Data.Success), Is.False);
        }
        public JsonResult Edit(AddEditRiskAssessorViewModel viewModel)
        {
            Validate(viewModel);

            if (viewModel.RiskAssessorId.HasValue == false)
                throw new ArgumentNullException("RiskAssessorId not defined");

            if (!ModelState.IsValid)
            {
                return ModelStateErrorsWithKeysAsJson();
            }

            var request = new CreateEditRiskAssessorRequest()
                              {
                                  CompanyId = CurrentUser.CompanyId,
                                  CreatingUserId = CurrentUser.UserId,
                                  DoNotSendReviewDueNotification = viewModel.DoNotSendReviewDueNotification,
                                  DoNotSendTaskCompletedNotifications = viewModel.DoNotSendTaskCompletedNotifications,
                                  DoNotSendTaskOverdueNotifications = viewModel.DoNotSendTaskOverdueNotifications,
                                  EmployeeId = viewModel.EmployeeId.Value,
                                  HasAccessToAllSites = viewModel.HasAccessToAllSites,
                                  SiteId = viewModel.SiteId,
                                  RiskAssessorId = viewModel.RiskAssessorId.Value
                              };
            _riskAssessorService.Update(request);
            var riskAssessor = _riskAssessorService.GetByIdAndCompanyId(viewModel.RiskAssessorId.Value, CurrentUser.CompanyId);
            return Json(new
            {
                Success = true,
                RiskAssessorId = viewModel.RiskAssessorId.Value,
                Forename = riskAssessor.Employee.Forename,
                Surname = riskAssessor.Employee.Surname,
                SiteName = riskAssessor.SiteName,
                DoNotSendReviewDueNotification = riskAssessor.DoNotSendReviewDueNotification,
                DoNotSendTaskCompletedNotifications = riskAssessor.DoNotSendTaskCompletedNotifications,
                DoNotSendTaskOverdueNotifications = riskAssessor.DoNotSendTaskOverdueNotifications,
                FormattedName = riskAssessor.Employee.FullName,
            });
        }