public void Given_new_answers_when_UpdateAnswers_then_new_answers_added_to_the_database()
        {
            // Given
            var newAnswer = new ChecklistAnswer()
                                {
                                    Id = Guid.NewGuid(),
                                    ActionRequired = "the action required",
                                    AssignedTo = new BusinessSafe.Domain.Entities.Employee() {Id = Guid.NewGuid()}
                                    ,
                                    EmployeeNotListed = "employee not listed",
                                    GuidanceNotes = "the guidance notes",
                                    SupportingEvidence = "the supporting evidence",
                                    Question = new Question() {Id = new Guid()}
                                    , Response = new QuestionResponse(){Id = Guid.NewGuid()}
                                    , Timescale = new Timescale(){ Id = 2L}
                                };
            var newAnswers = new List<ChecklistAnswer>() { newAnswer };

            var checklist = new Checklist();

           checklist.UpdateAnswers(newAnswers,new UserForAuditing());

            // When
            Assert.That(checklist.Answers.Count, Is.EqualTo(1));
            Assert.That(checklist.Answers.First().ActionRequired, Is.EqualTo(newAnswer.ActionRequired));
            Assert.That(checklist.Answers.First().AssignedTo, Is.EqualTo(newAnswer.AssignedTo));
            Assert.That(checklist.Answers.First().EmployeeNotListed, Is.EqualTo(newAnswer.EmployeeNotListed));
            Assert.That(checklist.Answers.First().GuidanceNotes, Is.EqualTo(newAnswer.GuidanceNotes));
            Assert.That(checklist.Answers.First().SupportingEvidence, Is.EqualTo(newAnswer.SupportingEvidence));
            Assert.That(checklist.Answers.First().Question, Is.EqualTo(newAnswer.Question));
            Assert.That(checklist.Answers.First().Response, Is.EqualTo(newAnswer.Response));
            Assert.That(checklist.Answers.First().Timescale, Is.EqualTo(newAnswer.Timescale));
            Assert.That(checklist.Answers.First().LastModifiedBy, Is.Not.Null);
            Assert.That(checklist.Answers.First().LastModifiedOn, Is.Not.Null);

        }
Пример #2
0
        public void Setup()
        {
            ResourceUrl = string.Format("{0}{1}/", ApiBaseUrl, "Checklists");

            _checklistRepository = ObjectFactory.GetInstance<ICheckListRepository>();
            _questionRepository = ObjectFactory.GetInstance<IQuestionRepository>();
            _questionResponseRepository = ObjectFactory.GetInstance<IQuestionResponseRepository>();
            _userForAuditingRepository = ObjectFactory.GetInstance<IUserForAuditingRepository>();

            //Creats a new checklist if does not exist.
            _checklist = _checklistRepository.GetById(ApiTestChecklistId);

            if (_checklist == null)
            {

                _checklist = new SC.Checklist()
                {
                    Id = ApiTestChecklistId,
                    ClientId = ApiTestClientId,
                    SiteId = APiTestSiteId,
                    CoveringLetterContent = ApiTestCoveringLetterContents,
                    CreatedBy = _userForAuditingRepository.GetSystemUser(),
                   CreatedOn = DateTime.Now,
                    LastModifiedBy = _userForAuditingRepository.GetSystemUser(),
                    LastModifiedOn = DateTime.Now
                };

                var questions = _questionRepository.GetAll().Take(1).ToList();

                //_checklist.UpdateQuestions(questions, new UserForAuditing());
                foreach (var question in questions)
                {
                    _checklist.Questions.Add(new ChecklistQuestion
                    {
                        Checklist = _checklist,
                        Question = question,
                        CreatedBy = _userForAuditingRepository.GetSystemUser(),
                        CreatedOn = DateTime.Now,
                        LastModifiedBy = _userForAuditingRepository.GetSystemUser(),
                        LastModifiedOn = DateTime.Now
                    });
                }

                var response = questions.First().PossibleResponses
                    .Where(r => r.ResponseType.Equals("Positive"))
                    .Select(
                        r => new SC.ChecklistAnswer()
                        {
                            SupportingEvidence = r.SupportingEvidence,
                            ActionRequired = r.ActionRequired,
                            Question = questions.First(),
                            Response = r,
                            CreatedBy = _userForAuditingRepository.GetSystemUser(),
                            CreatedOn = DateTime.Now,
                            LastModifiedBy = _userForAuditingRepository.GetSystemUser(),
                            LastModifiedOn = DateTime.Now
                        })
                    .ToList();

                _checklist.UpdateAnswers(response, _userForAuditingRepository.GetSystemUser());

                _checklistRepository.SaveOrUpdate(_checklist);
            }

            _totalNumberOfChecklistQuestions = _checklist.Questions.Count();
            _totalNumberOfChecklistAnswers = _checklist.Answers.Count();

            ObjectFactory.Container.GetInstance<IBusinessSafeSessionManager>().CloseSession();
        }
Пример #3
0
        public void given_checklist_when_copyWithResponses_with_question_marked_as_acceptable_then_SupportingDocumentationDate_is_not_set()
        {
            //given
            var siteId = 213123;
            var clientId = 54321;
            var userForAuditing = new UserForAuditing() { Id = Guid.NewGuid() };
            var copiedByUserName = "******";

            var question = Question.Create(Guid.NewGuid(), "Title",
              new Category() { Id = Guid.NewGuid(), Title = "Care" }, false, userForAuditing);
            
            var answer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                AssignedTo = new BusinessSafe.Domain.Entities.Employee() { Id = Guid.NewGuid() },
                EmployeeNotListed = "employee not listed",
                Timescale = new Timescale() { Id = 2L },
                Question = question,
                Response = new QuestionResponse()
                {
                    Id = Guid.NewGuid(),
                    SupportingEvidence = "sp",
                    GuidanceNotes = "the guidance notes",
                    ActionRequired = "the action required",
                    ResponseType = "Positive",
                    Question = question

                },
                SupportingDocumentationDate = DateTime.Now.Date,
                SupportingDocumentationStatus = "SS",
                SupportingEvidence = "se"
            };

            var answersList = new List<ChecklistAnswer>() { answer };
            var checklist = new Checklist() { Id = Guid.NewGuid() };

            checklist.Questions.Add(new ChecklistQuestion() { Id = Guid.NewGuid(), Question = question, Checklist = checklist, CategoryNumber = 1, QuestionNumber = 4 });
            checklist.UpdateAnswers(answersList, new UserForAuditing());

            //when
            var result = checklist.CopyToSiteWithResponses(siteId, clientId, userForAuditing, copiedByUserName, false);

            //then
            Assert.That(result.Answers.Count, Is.EqualTo(1));
            Assert.That(result.Answers[0].Question.Id, Is.EqualTo(checklist.Answers[0].Question.Id));
            Assert.AreEqual(null, result.Answers[0].SupportingDocumentationDate);            
        }
Пример #4
0
        public void given_checklist_when_copyWithResponses_then_Answers_to_all_non_mandatory_questions_are_set()
        {
            //given
            var siteId = 213123;
            var clientId = 54321;
            var userForAuditing = new UserForAuditing() { Id = Guid.NewGuid() };
            var copiedByUserName = "******";
            

            var question1 = Question.Create(Guid.NewGuid(), "Title",
               new Category() { Id = Guid.NewGuid(), Title = "Care" }, true, userForAuditing);

            var responseId = Guid.NewGuid();
            var questionResponse1 = new QuestionResponse() {
                    Id = responseId,
                    Title = "Acceptable",
                    SupportingEvidence = "sp",
                    GuidanceNotes = "the guidance notes",
                    ActionRequired = "the action required",
                    ResponseType = "Positive",
                    Question = question1,
                };
            var questionResponse2 = new QuestionResponse() { Id = Guid.NewGuid(), Question = question1, Title = "Unacceptable", ResponseType = "Negative"};

            question1.PossibleResponses.Add(questionResponse1);
            question1.PossibleResponses.Add(questionResponse2);

           
            var answer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                AssignedTo = new BusinessSafe.Domain.Entities.Employee() { Id = Guid.NewGuid() },
                EmployeeNotListed = "employee not listed",
                Timescale = new Timescale() { Id = 2L },
                Question = question1,
                Response = new QuestionResponse()
                {
                    Id = responseId,
                    Title = "Acceptable",
                    SupportingEvidence = "sp",
                    GuidanceNotes = "the guidance notes",
                    ActionRequired = "the action required",
                    ResponseType = "Positive",
                    Question = question1,
                },
                SupportingDocumentationDate = DateTime.Now.Date,
                SupportingDocumentationStatus = "SS",
                SupportingEvidence = "se"
            };

            
            var answersList = new List<ChecklistAnswer>() { answer };
            var checklist = new Checklist() { Id = Guid.NewGuid() };

            checklist.Questions.Add(new ChecklistQuestion() { Id = Guid.NewGuid(), Question = question1, Checklist = checklist, CategoryNumber = 1, QuestionNumber = 4 });
            
            checklist.UpdateAnswers(answersList, new UserForAuditing());

            //when
            var result = checklist.CopyToSiteWithResponses(siteId, clientId, userForAuditing, copiedByUserName, false);

            Assert.That(result.Answers.Count, Is.EqualTo(checklist.Answers.Count()));

            Assert.That(result.Answers[0].Id, Is.Not.EqualTo(checklist.Answers[0].Id));
            Assert.That(result.Answers[0].Question.Id, Is.Not.EqualTo(checklist.Answers[0].Question.Id));
            Assert.That(result.Answers[0].Timescale, Is.EqualTo(null));
            Assert.That(result.Answers[0].AssignedTo, Is.EqualTo(null));
            Assert.That(result.Answers[0].EmployeeNotListed, Is.EqualTo(checklist.Answers[0].EmployeeNotListed));


            Assert.That(result.Answers[0].Response.Question.Id, Is.Not.EqualTo(checklist.Answers[0].Question.Id));
            Assert.That(result.Answers[0].Response.Title, Is.EqualTo(checklist.Answers[0].Response.Title));
            Assert.That(result.Answers[0].Response.ActionRequired, Is.EqualTo(checklist.Answers[0].Response.ActionRequired));
            Assert.That(result.Answers[0].Response.GuidanceNotes, Is.EqualTo(checklist.Answers[0].Response.GuidanceNotes));
            Assert.That(result.Answers[0].Response.SupportingEvidence, Is.EqualTo(checklist.Answers[0].Response.SupportingEvidence));
            Assert.That(result.Answers[0].Response.SupportingEvidence, Is.EqualTo(checklist.Answers[0].Response.SupportingEvidence));
            Assert.That(result.Answers[0].Response.ResponseType, Is.EqualTo(checklist.Answers[0].Response.ResponseType));
            
        }
        public void Given_answer_has_previously_been_given_when_a_question_without_an_answer_is_saved_then_original_answer_is_not_removed()
        {
            var originalResponseId = Guid.NewGuid();
            var originalLastModifiedOn = DateTime.Now.AddDays(-5);

            // Given
            var originalAnswer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                Question = new Question() {Id = new Guid()},
                LastModifiedOn = originalLastModifiedOn,
                SupportingDocumentationStatus = "Reported",
                Response = new QuestionResponse() {Id = originalResponseId}
            };

            var newAnswer = new ChecklistAnswer()
            {
                Id = originalAnswer.Id,
                Question = originalAnswer.Question,
                Response = null
            };

            var newAnswers = new List<ChecklistAnswer>() {newAnswer};

            var checklist = new Checklist();
            checklist.Answers.Add(originalAnswer);
            checklist.UpdateAnswers(newAnswers, new UserForAuditing());


            Assert.That(checklist.Answers.First().SupportingDocumentationStatus, Is.EqualTo("Reported"));
            Assert.That(checklist.Answers.First().LastModifiedOn.Value, Is.EqualTo(originalLastModifiedOn));
            Assert.That(checklist.Answers.First().Response.Id, Is.EqualTo(originalResponseId));
        }
        public void Given_answer_supporting_documentation_date_changed_then_supporting_documentation_date_updated()
        {
            var originalLastModifiedOn = DateTime.Now.AddDays(-5);

            // Given
            var originalAnswer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                Question = new Question() { Id = new Guid() },
                Response = new QuestionResponse() { Id = Guid.NewGuid() }
                ,
                LastModifiedOn = originalLastModifiedOn,
                SupportingDocumentationStatus = "Reported"
            };

            var newAnswer = new ChecklistAnswer()
            {
                Id = originalAnswer.Id,
                Question = originalAnswer.Question,
                SupportingDocumentationStatus = "Reported",
                SupportingDocumentationDate =  DateTime.Now.AddDays(-51),
                Response = originalAnswer.Response

            };

            var newAnswers = new List<ChecklistAnswer>() { newAnswer };

            var checklist = new Checklist();
            checklist.Answers.Add(originalAnswer);
            checklist.UpdateAnswers(newAnswers, new UserForAuditing());

            Assert.That(checklist.Answers.First().SupportingDocumentationDate, Is.EqualTo(newAnswer.SupportingDocumentationDate));
            Assert.That(checklist.Answers.First().LastModifiedOn.Value.Date, Is.EqualTo(DateTime.Now.Date));
        }
        public void Given_answer_area_of_non_compliance_changed_then_area_of_non_compliance_updated()
        {
            var originalLastModifiedOn = DateTime.Now.AddDays(-5);

            // Given
            var originalAnswer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                Question = new Question() { Id = new Guid() }
                ,Response = new QuestionResponse(){Id = Guid.NewGuid()}
                ,LastModifiedOn = originalLastModifiedOn
            };

            var newAnswer = new ChecklistAnswer()
            {
                Id = originalAnswer.Id,
                Question = originalAnswer.Question,
                Response = originalAnswer.Response,
                AreaOfNonCompliance = "you have 1 second to comply"
            };

            var newAnswers = new List<ChecklistAnswer>() { newAnswer };

            var checklist = new Checklist();
            checklist.Answers.Add(originalAnswer);
            checklist.UpdateAnswers(newAnswers, new UserForAuditing());

            Assert.That(checklist.Answers.First().AreaOfNonCompliance, Is.EqualTo(newAnswer.AreaOfNonCompliance));
            Assert.That(checklist.Answers.First().LastModifiedOn.Value.Date, Is.EqualTo(DateTime.Now.Date));
        }
        public void Given_answer_QA_signed_off_date_is_null_then_lastmodifed_not_changed()
        {
            var originalLastModifiedOn = DateTime.Now.AddDays(-5);

            // Given
            var originalAnswer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                Question = new Question() { Id = new Guid() }
                ,
                LastModifiedOn = originalLastModifiedOn
            };

            var newAnswer = new ChecklistAnswer()
            {
                Id = originalAnswer.Id,
                Question = originalAnswer.Question,
            };

            var newAnswers = new List<ChecklistAnswer>() { newAnswer };

            var checklist = new Checklist();
            checklist.Answers.Add(originalAnswer);
            checklist.UpdateAnswers(newAnswers, new UserForAuditing());

            Assert.That(checklist.Answers.First().LastModifiedOn, Is.EqualTo(originalLastModifiedOn));
        }
        public void Given_answer_QA_signed_off_date_has_been_removed_then_date_is_null()
        {
            var originalQaSignedOffDate = new DateTime(2013, 12, 01, 15, 15, 15, 123);

            // Given
            var originalAnswer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                Question = new Question() { Id = new Guid() },
                LastModifiedBy = new UserForAuditing() { Id = Guid.NewGuid() },
                LastModifiedOn = DateTime.Now.AddDays(-5),
                QaSignedOffBy = "David Brieley",
                QaSignedOffDate = originalQaSignedOffDate,
                Response = new QuestionResponse() { Id = Guid.NewGuid() },
            };

            var newAnswer = new ChecklistAnswer()
            {
                Id = originalAnswer.Id,
                Question = originalAnswer.Question,
                QaSignedOffBy = "David Brieley",
                QaSignedOffDate = null,
                Response = originalAnswer.Response
            };

            var newAnswers = new List<ChecklistAnswer>() { newAnswer };

            var checklist = new Checklist();
            checklist.Answers.Add(originalAnswer);
            checklist.UpdateAnswers(newAnswers, new UserForAuditing());

            Assert.That(checklist.Answers.First().QaSignedOffDate, Is.Null);
        }
        public void Given_answer_QA_signed_off_date_hasnt_change_then_qa_name_and_date_are_not_saved()
        {
            var originalQaSignedOffDate = new DateTime(2013, 12, 01, 15, 15, 15, 123);
            var originalLastModifiedOn = DateTime.Now.AddDays(-5);


            // Given
            var originalAnswer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                Question = new Question() { Id = new Guid() },
                LastModifiedBy = new UserForAuditing() { Id = Guid.NewGuid() },
                LastModifiedOn = originalLastModifiedOn,
                QaSignedOffBy = "David Brieley"
                ,
                QaSignedOffDate = originalQaSignedOffDate
            };

            var newAnswer = new ChecklistAnswer()
            {
                Id = originalAnswer.Id,
                Question = originalAnswer.Question,
                QaSignedOffBy = "David Brieley"
                ,
                QaSignedOffDate = new DateTime(2013, 12, 01, 15, 15, 15, 12)

            };

            var newAnswers = new List<ChecklistAnswer>() { newAnswer };

            var checklist = new Checklist();
            checklist.Answers.Add(originalAnswer);
            checklist.UpdateAnswers(newAnswers, new UserForAuditing());

            Assert.That(checklist.Answers.First().LastModifiedOn, Is.EqualTo(originalLastModifiedOn));
            Assert.That(checklist.Answers.First().QaSignedOffDate.Value, Is.EqualTo(originalQaSignedOffDate));
        }
        public void Given_answer_is_signed_off_by_a_QA_then_qa_name_and_date_are_saved()
        {

            // Given
            var originalAnswer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                Question = new Question() { Id = new Guid() },
                Response = new QuestionResponse(){Id = Guid.NewGuid()}
                ,LastModifiedBy = new UserForAuditing() { Id = Guid.NewGuid() },
                LastModifiedOn = DateTime.Now.AddDays(-5)
            };

            var newAnswer = new ChecklistAnswer()
            {
                Id = originalAnswer.Id,
                Question = originalAnswer.Question,
                QaSignedOffBy = "David Brieley"
                ,QaSignedOffDate = DateTime.Now
                ,Response= originalAnswer.Response
            };

            
            var newAnswers = new List<ChecklistAnswer>() { newAnswer };

            var checklist = new Checklist();
            checklist.Answers.Add(originalAnswer);
            checklist.UpdateAnswers(newAnswers, new UserForAuditing());


            Assert.That(checklist.Answers.First().QaSignedOffBy, Is.EqualTo(newAnswer.QaSignedOffBy));
            Assert.That(checklist.Answers.First().QaSignedOffDate.Value, Is.EqualTo(newAnswer.QaSignedOffDate.Value));

        }
        public void Given_timescale_changed_when_UpdateAnswers_then_lastmodifiedDate_updated()
        {
            var originalLastModifiedByDate = DateTime.Now.AddDays(-5);

            // Given
            var originalAnswer = new ChecklistAnswer()
            {
                Id = Guid.NewGuid(),
                ActionRequired = null,
                AssignedTo = new BusinessSafe.Domain.Entities.Employee() { Id = Guid.NewGuid() },
                EmployeeNotListed = "employee not listed",
                GuidanceNotes = "the guidance notes",
                SupportingEvidence = "the supporting evidence",
                Question = new Question() { Id = new Guid() },
                Response = new QuestionResponse() { Id = Guid.NewGuid() },
                Timescale = new Timescale() { Id = 2L },
                LastModifiedBy = new UserForAuditing() { Id = Guid.NewGuid() },
                LastModifiedOn = originalLastModifiedByDate
            };

            var newAnswer = new ChecklistAnswer()
            {
                Id = originalAnswer.Id,
                ActionRequired = originalAnswer.ActionRequired,
                AssignedTo = originalAnswer.AssignedTo,
                EmployeeNotListed = originalAnswer.EmployeeNotListed,
                GuidanceNotes = originalAnswer.GuidanceNotes,
                SupportingEvidence = originalAnswer.SupportingEvidence,
                Question = originalAnswer.Question,
                Response = originalAnswer.Response,
                Timescale = new Timescale() { Id = 12L }
            };

            var newAnswers = new List<ChecklistAnswer>() { newAnswer };

            var checklist = new Checklist();
            checklist.Answers.Add(originalAnswer);
            checklist.UpdateAnswers(newAnswers, new UserForAuditing());

            // When
            Assert.That(checklist.Answers.Count, Is.EqualTo(1));
            Assert.That(checklist.Answers.First().Timescale, Is.EqualTo(newAnswer.Timescale));
            Assert.That(checklist.Answers.First().LastModifiedOn.Value.Date, Is.EqualTo(DateTime.Now.Date));
        }