public void Given_a_qaAdvisor_when_GetNextQaAdvisorInTheRotation_then_returns_next_qaAdvisor_in_rotation()
        {
            var qaAdvisor = new QaAdvisor() { Id = Guid.NewGuid(), Forename = "Alan", Surname = "Ball", InRotation = true };
            var expectedAdvisor = new QaAdvisor() { Id = Guid.NewGuid(), Forename = "John", Surname = "Virgo", InRotation = true };

            //GIVEN
            _lastQaAdvisorAssignedRepo.Setup(x => x.GetAll())
                .Returns(() => new List<LastQaAdvisorAssigned>() { new LastQaAdvisorAssigned() { QaAdvisor = qaAdvisor } });

            _lastQaAdvisorAssignedRepo.Setup(x => x.GetById(It.IsAny<int>()))
               .Returns(() => new LastQaAdvisorAssigned { QaAdvisor = qaAdvisor });

            _qaAdvisorRepo.Setup(x => x.GetAll())
                .Returns(() => new List<QaAdvisor>() {
                    new QaAdvisor() { Forename="Bob", Surname="Smith", InRotation=false}
                    ,qaAdvisor
                    ,expectedAdvisor}
                );

            var target = GetTarget();

            //WHEN
            var result = target.GetNextQaAdvisorInTheRotation(qaAdvisor);

            //THEN
            Assert.That(result.Forename, Is.EqualTo(expectedAdvisor.Forename));
            Assert.That(result, Is.EqualTo(expectedAdvisor));
        }
        public void SetUp()
        {
            _emailSender = new Mock<IEmailSender>();
            _checklistRepository = new Mock<ICheckListRepository>();
            _qaRepository = new Mock<IQaAdvisorRepository>();

            _urlConfiguration = new Mock<ISafeCheckEmailLinkBaseUrlConfiguration>();
            _urlConfiguration.Setup(x => x.GetBaseUrl()).Returns(string.Empty);

            var checklistId = Guid.NewGuid();
            var assignedToId = Guid.NewGuid();
            _checklist = new Checklist() {ClientId = 1111, Id = checklistId, ChecklistCompletedBy = "Gareth Wilby"};

            _checklistRepository.Setup(x => x.GetById(It.IsAny<Guid>())).Returns(_checklist);

            var qaAdvisor = new QaAdvisor() {Id = Guid.NewGuid()};
            _qaRepository.Setup(x => x.GetById(It.IsAny<Guid>())).Returns(qaAdvisor);
        }
        public static ChecklistIndexViewModel Map(this Checklist checklist, SiteAddressResponse visitSite, string clientAccountNumber, QaAdvisor qaAdvisor)
        {
            var checklistViewModel = checklist.Map(visitSite);
            checklistViewModel.CAN = clientAccountNumber;
            checklistViewModel.HasQaComments = checklist.Answers.Any(x => !string.IsNullOrEmpty(x.QaComments) && x.QaSignedOffBy == null);
            checklistViewModel.Deleted = checklist.Deleted;

            if (qaAdvisor != null)
            {
                checklistViewModel.QaAdvisor = new QaAdvisorViewModel()
                {
                    Id = qaAdvisor.Id,
                    Forename = qaAdvisor.Forename,
                    Email = qaAdvisor.Email,
                    Fullname = qaAdvisor.Forename + ' ' + qaAdvisor.Surname,
                    Initials = qaAdvisor.Forename + ' ' +  (qaAdvisor.Surname.Length > 0 ? qaAdvisor.Surname.Substring(0, 1) : "")
                };    
            }

            return checklistViewModel;
        }
        public void Given_a_draft_checklist_when_assigning_then_status_is_Assigned()
        {
            //GIVN
            var checklist = new Checklist() {Status = "Draft"};
            var qaAdvisor = new QaAdvisor();

            _checklistRepository
               .Setup(x => x.GetById(It.IsAny<Guid>()))
               .Returns(() => checklist);

            _qaAdvisorRepository
               .Setup(x => x.GetById(It.IsAny<Guid>()))
               .Returns(() => qaAdvisor);

            var target = GetTarget();
            var viewModel = new QaAdvisorViewModel();
            viewModel.Id = Guid.NewGuid();

            //WHEN
            target.AssignChecklistToQaAdvisor(Guid.NewGuid(), viewModel);

            Assert.That(checklist.Status,Is.EqualTo("Assigned"));
        }
        public void Given_a_checklist_when_assigning_then_updated_required_is_added()
        {
            //GIVN
            var checklist = new Checklist() {Id = Guid.NewGuid()};
            var qaAdvisor = new QaAdvisor();

            _checklistRepository
               .Setup(x => x.GetById(It.IsAny<Guid>()))
               .Returns(() => checklist);

            _qaAdvisorRepository
               .Setup(x => x.GetById(It.IsAny<Guid>()))
               .Returns(() => qaAdvisor);

            var target = GetTarget();
            var viewModel = new QaAdvisorViewModel();
            viewModel.Id = Guid.NewGuid();

            //WHEN
            target.SendUpdateRequiredEmailNotification(checklist.Id);

            Assert.That(checklist.UpdatesRequiredLog.Count, Is.EqualTo(1));
        }
        public void Given_QA_Advisors_exists_when_Post_then_qaAdvisor_is_updated()
        {
            QaAdvisor savedQaAdvisor = null;

            // Given
            var qaAdvisor = new QaAdvisor() { Id = Guid.NewGuid() };
            var model = new QaAdvisorViewModel(){Id = qaAdvisor.Id, Forename= "Stansa", Surname="Stark", InRotation = true};
            var target = new QaAdvisorController(_dependencyFactory.Object);

            _qaAdvisorRepository.Setup(x => x.GetById(qaAdvisor.Id))
                .Returns(() => qaAdvisor);

            _qaAdvisorRepository.Setup(x => x.SaveOrUpdate(It.IsAny<QaAdvisor>()))
                .Callback<QaAdvisor>(x => savedQaAdvisor = x);

            // When
            target.Post(model);

            // Then
            Assert.That(savedQaAdvisor.Id,Is.EqualTo(model.Id));
            Assert.That(savedQaAdvisor.InRotation, Is.EqualTo(model.InRotation));
            Assert.That(savedQaAdvisor.Forename, Is.EqualTo(model.Forename));
            Assert.That(savedQaAdvisor.Surname, Is.EqualTo(model.Surname));
        }
        public void Setup()
        {
            _consultant = Consultant.Create("Tywin", "Lannister");
            _qaAdvisor = QaAdvisor.Create("Jon", "Stark", "*****@*****.**");
            _qaAdvisor.Id = Guid.NewGuid();

            _bus = new Mock<IBus>();
            _clientDetailsService = new Mock<IClientDetailsService>();
            _dependencyFactory = new Mock<IDependencyFactory>();
            _consultantRepo = new Mock<IConsultantRepository>();
            _lastQaAdvisorAssignedRepo = new Mock<IRepository<LastQaAdvisorAssigned, int>>();

            _qaAdvisorRepo = new Mock<IQaAdvisorRepository>();

            _consultantRepo.Setup(x=> x.GetByFullname(It.IsAny<string>()))
                .Returns(() => _consultant);

            _qaAdvisorRepo.Setup(x => x.GetById(It.IsAny<Guid>()))
                .Returns(() => _qaAdvisor);

            _getCompletedChecklistQuery = new Mock<IGetCompleteChecklistsQuery>();

            _dependencyFactory.Setup(x => x.GetInstance<IBus>())
                .Returns(() => _bus.Object);

            _dependencyFactory.Setup(x => x.GetInstance<IConsultantRepository>())
                .Returns(() => _consultantRepo.Object);

            _dependencyFactory.Setup(x => x.GetInstance<IGetCompleteChecklistsQuery>())
                .Returns(() => _getCompletedChecklistQuery.Object);

            _dependencyFactory.Setup(x => x.GetInstance<IRepository<LastQaAdvisorAssigned, int>>())
                .Returns(() => _lastQaAdvisorAssignedRepo.Object);

            _dependencyFactory.Setup(x => x.GetInstance<IQaAdvisorRepository>())
                .Returns(() => _qaAdvisorRepo.Object);
        }
        public void AssignChecklistToQaAdvisor(Checklist checklist, QaAdvisor qaAdvisor)
        {
            if (checklist.Status == Checklist.STATUS_SUBMITTED)
                return;

            if (checklist.QaAdvisor == null)
            {
                checklist.QaAdvisorAssignedOn = DateTime.Now;
            }

            checklist.QaAdvisor = qaAdvisor;
            checklist.Status = Checklist.STATUS_ASSIGNED;

            var sendChecklistAssignedEmail = new SendChecklistAssignedEmail
            {
                ChecklistId = checklist.Id,
                AssignedToId = qaAdvisor.Id
            };

            if (checklist.ClientId.HasValue)
            {
                var clientDetail = _clientDetailsService.Get(checklist.ClientId.Value);

                var site = checklist.SiteId.HasValue
                    ? _clientDetailsService.GetSite(checklist.ClientId.Value, checklist.SiteId.Value)
                    : null;

                var postcode = site != null ? site.Postcode : "";

                sendChecklistAssignedEmail.Can = clientDetail.CAN;
                sendChecklistAssignedEmail.SiteName = site != null ? site.SiteName : "";
                sendChecklistAssignedEmail.Address1 = site != null ? site.Address1 : "";
                sendChecklistAssignedEmail.Address2 = site != null ? site.Address2 : "";
                sendChecklistAssignedEmail.Address3 = site != null ? site.Address3 : "";
                sendChecklistAssignedEmail.Address4 = site != null ? site.Address4 : "";
                sendChecklistAssignedEmail.Address5 = site != null ? site.Address5 : "";
                sendChecklistAssignedEmail.Postcode = postcode;
            }
            else
            {
                sendChecklistAssignedEmail.Can = "Not specified";
                sendChecklistAssignedEmail.Postcode = "Not specified";
            }

            _bus.Send(sendChecklistAssignedEmail);
        }
        public void UpdateLastQaAdvisorAssigned(QaAdvisor qaAdvisor)
        {
            var nextQaAdvisorList = _lastQaAdvisorAssignedRepository.GetAll();

            var nextQaAdvisor = nextQaAdvisorList.Count() == 0 ? new LastQaAdvisorAssigned() { Id = 1 } : nextQaAdvisorList.First();
            nextQaAdvisor.QaAdvisor = qaAdvisor;

            _lastQaAdvisorAssignedRepository.SaveOrUpdate(nextQaAdvisor);
        }
        /// <summary>
        /// returns the next qaAdvisor in the rotation after the specified qaAdvisor
        /// </summary>
        /// <param name="precedingQaAdvisor"></param>
        /// <returns></returns>
        public QaAdvisor GetNextQaAdvisorInTheRotation(QaAdvisor precedingQaAdvisor)
        {
            var orderNumber = 1;
            var orderedAdvisors = _qaAdvisorRepository.GetAll()
                    .OrderBy(x => x.Forename)
                    .ThenBy(x => x.Surname)
                    .Select(x => new {QaAdvisor = x, OrderNumber = orderNumber++})
                    .ToList();

            var positionOfQaAdvisor = orderedAdvisors.First(x => x.QaAdvisor.Id == precedingQaAdvisor.Id).OrderNumber;

            var nextQaAdvisor = orderedAdvisors
                    .Where(x => x.OrderNumber > positionOfQaAdvisor)
                    .Where(x => !x.QaAdvisor.Deleted && x.QaAdvisor.InRotation)
                    .OrderBy(x => x.OrderNumber)
                    .FirstOrDefault();

            //if we are at the end of the list then we need to return to the start

            if (nextQaAdvisor != null)
            {
                return nextQaAdvisor.QaAdvisor;
            }
            else
            {
                return orderedAdvisors.FirstOrDefault(x => !x.QaAdvisor.Deleted && x.QaAdvisor.InRotation) !=null ? orderedAdvisors.FirstOrDefault(x => !x.QaAdvisor.Deleted && x.QaAdvisor.InRotation).QaAdvisor: null;
            }
        }
        public void Given_that_the_next_qaAdvisor_is_NOT_set_when_GetNextQaAdvisorInTheRotation_then_returns_null()
        {
            var expectedAdvisor = new QaAdvisor() { Id = Guid.NewGuid(), Forename = "Alan", Surname = "Ball" };

            //GIVEN
            _lastQaAdvisorAssignedRepo.Setup(x => x.GetAll())
                .Returns(() => new List<LastQaAdvisorAssigned>());

            _lastQaAdvisorAssignedRepo.Setup(x => x.GetById(It.IsAny<int>()))
                .Returns(() => null);

            _qaAdvisorRepo.Setup(x => x.GetAll())
                .Returns(() => new List<QaAdvisor>() {
                    new QaAdvisor() { Forename="Sarah", Surname="Vaughan"}
                    ,expectedAdvisor}
                );

            var target = GetTarget();

            //WHEN
            var result = target.GetNextQaAdvisorInTheRotation();

            //THEN
            Assert.That(result, Is.Null);
            //Assert.That(result, Is.EqualTo(expectedAdvisor));
        }
        public void given_qaAdvisor_has_no_email_address_when_sent_then_no_CCRecipents()
        {
            //GIVEN
            // var handler = GetTarget();
            var handler = new SendSubmitChecklistEmailHandler(_emailSender.Object, _checklistRepository.Object, _urlConfiguration.Object, _docLibraryService.Object, _clientDocumentService.Object, _clientService.Object);
            var message = new SendSubmitChecklistEmail() { ChecklistId = Guid.NewGuid() };
            var qaAdvisor = new QaAdvisor() { Id = Guid.NewGuid(), Email = "" };

            var checklist = new Checklist()
            {
                Id = message.ChecklistId,
                MainPersonSeenName = "Test User",
                EmailAddress = "*****@*****.**",
                Jurisdiction = "UK",
                ClientId = 123123,
                VisitDate = new DateTime(2014, 05, 01),
                SiteId = 1,
                QaAdvisor = qaAdvisor
            };

            var siteAddress = new SiteAddressDto() { AddressLine1 = "Address", Postcode = "M1 1AA" };

            _checklistRepository.Setup(c => c.GetById(It.IsAny<Guid>()))
                .Returns(() => checklist);

            _clientService.Setup(x => x.GetSite(It.IsAny<long>(), It.IsAny<long>()))
                .Returns(() => siteAddress);

            RazorEmailResult sentEmail = null;

            _emailSender.Setup(x => x.SendWithDifferentAttachmentName(It.IsAny<RazorEmailResult>(), It.IsAny<AttachmentType[]>()))
                .Callback<RazorEmailResult, AttachmentType[]>(
                    (emailResult, attachments) => sentEmail = emailResult);

            //WHEN
            handler.Handle(message);

            //THEN
            Assert.That(sentEmail.Mail.CC.Count, Is.EqualTo(0));
        }
Esempio n. 13
0
        private void BuildQuery(string checklistCreatedBy, string status, bool includeDeleted, bool excludeSubmitted,
            DateTime? statusFromDate, DateTime? statusToDate, DateTime? nullableValidVisitDate,
            int? clientDetailId, string consultantToSearchFor, QaAdvisor qaAdvisorToSearchFor)
        {
            var query = _getChecklistsQuery
                .WithClientId(clientDetailId.HasValue ? clientDetailId.Value : default(int))
                .WithConsultantName(checklistCreatedBy)
                .WithStatus(status)
                .WithStatusDateBetween(statusFromDate, statusToDate);

            if (nullableValidVisitDate.HasValue)
            {
                query.WithVisitDate(nullableValidVisitDate.Value);
            }

            if (includeDeleted)
            {
                query.WithDeletedOnly();
            }

            if (excludeSubmitted)
            {
                query.ExcludeSubmitted();
            }

            if (!String.IsNullOrEmpty(consultantToSearchFor ))
            {
                query.WithConsultantName(consultantToSearchFor);
            }

            if (qaAdvisorToSearchFor != null)
            {
                query.WithQaAdvisor(qaAdvisorToSearchFor.Id);
            }
        }