public void Given_a_Valid_ActionPlan_Exists_Then_Create_Actions_For_ActionPlan()
        {
            

            _timescaleRepositories.Setup(x => x.GetById(It.IsAny<long>()))
                .Returns(new Timescale() {Id = 1, Name = "One Month"});

            var category1 = new CategoryViewModel();
            category1.Id = Guid.NewGuid();
            category1.Title = "Category 1";
            var category2 = new CategoryViewModel();
            category2.Id = Guid.NewGuid();
            category2.Title = "Category 2";

            //Get view model
            var questions = GetListOfQuestions();

            var checklistViewModel = GetChecklistViewModelFromQuestions(questions);
            checklistViewModel.SiteId = 234234;
            checklistViewModel.ClientId = 11;
            checklistViewModel.CoveringLetterContent = "Letter content";
            checklistViewModel.Categories = new List<CategoryQuestionAnswerViewModel>();
            checklistViewModel.Questions = new List<QuestionAnswerViewModel>();
            checklistViewModel.CreatedOn = DateTime.Now;
            checklistViewModel.CreatedBy = "user";
            checklistViewModel.SiteId = 1;
            checklistViewModel.Id = Guid.NewGuid();

            checklistViewModel.Site = new SiteViewModel
            {
                Id = checklistViewModel.SiteId.Value,
                Address1 = "1 Green Lane",
                Postcode = "M1 1AA"
            };

            checklistViewModel.SiteVisit = new SiteVisitViewModel
            {
                VisitDate = "14/02/2000"
            };

            checklistViewModel.Submit = true;

            var responseId = Guid.NewGuid();

            var questionAnswer1 = new QuestionAnswerViewModel();
            questionAnswer1.Question = new QuestionViewModel();
            questionAnswer1.Question.Id = Guid.NewGuid();
            questionAnswer1.Question.Text = "Question 1";
            questionAnswer1.Question.PossibleResponses = new List<QuestionResponseViewModel>();
            questionAnswer1.Question.PossibleResponses.Add(item: new QuestionResponseViewModel { Id = responseId, ResponseType = ResponseType.ImprovementRequired.ToString(), Title = "Improvement Required" });
            questionAnswer1.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer1.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });

            questionAnswer1.Question.Category = category1;
            questionAnswer1.Question.CategoryId = category1.Id;
            questionAnswer1.Answer = new AnswerViewModel();
            questionAnswer1.Answer.QuestionId = questionAnswer1.Question.Id;
            questionAnswer1.Answer.ActionRequired = "ActionRequired 1";
            questionAnswer1.Answer.GuidanceNotes = "GuidanceNotes 1.1";
            questionAnswer1.Answer.Timescale = new TimescaleViewModel() { Id = 1, Name = "One Month" };
            questionAnswer1.Answer.AssignedTo = new AssignedToViewModel()
            {
                Id = Guid.NewGuid(),
                NonEmployeeName = "Name 1"
            };
            questionAnswer1.Answer.SelectedResponseId = responseId;

            var questions1 = new List<QuestionAnswerViewModel>();
            questions1.Add(questionAnswer1);

            var responseId2 = Guid.NewGuid();

            var questionAnswer2 = new QuestionAnswerViewModel();
            questionAnswer2.Question = new QuestionViewModel();
            questionAnswer2.Question.Id = Guid.NewGuid();
            questionAnswer2.Question.Text = "Question 2";
            questionAnswer2.Question.PossibleResponses = new List<QuestionResponseViewModel>();
            questionAnswer2.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = responseId2, ResponseType = ResponseType.ImprovementRequired.ToString(), Title = "Improvement Required" });
            questionAnswer2.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer2.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer2.Question.Category = category2;
            questionAnswer2.Question.CategoryId = category2.Id;
            questionAnswer2.Answer = new AnswerViewModel();
            questionAnswer2.Answer.QuestionId = questionAnswer2.Question.Id;
            questionAnswer2.Answer.ActionRequired = "ActionRequired 2";
            questionAnswer2.Answer.GuidanceNotes = "GuidanceNotes 2.2";
            questionAnswer2.Answer.Timescale = new TimescaleViewModel() { Id = 1, Name = "One Month" };
            questionAnswer2.Answer.AssignedTo = new AssignedToViewModel()
            {
                Id = Guid.NewGuid(),
                NonEmployeeName = "Name 2"
            };
            questionAnswer2.Answer.SelectedResponseId = responseId2;
            
            checklistViewModel.Questions.Add(questionAnswer1);
            checklistViewModel.Questions.Add(questionAnswer2);
            
            Checklist savedChecklist = null;
            _checklistRepository.Setup(x => x.SaveOrUpdate(It.IsAny<Checklist>()))
                .Callback(
                    delegate(Checklist x)
                    {
                        savedChecklist = x;
                    }
                );

            _categoryRepository
                   .Setup(x => x.GetById(It.IsAny<Guid>()))
                   .Returns(new Category());

            var controller = GetTarget();
            var response = controller.PostChecklist(checklistViewModel.Id, checklistViewModel);
            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            Assert.That(savedChecklist.ActionPlan.Actions, Is.Not.Null);
            Assert.That(savedChecklist.ActionPlan.Title, Is.EqualTo("Visit Report - 1 Green Lane - M1 1AA - 14/02/2000"));
            Assert.That(savedChecklist.ActionPlan.Actions.Count(), Is.EqualTo(2));
        }
        //TODO: finish
        public void Given_a_valid_view_model_is_supplied_When_PostChecklist_is_called_Then_the_checklist_is_created()
        {
            var category1 = new CategoryViewModel();
            category1.Id = Guid.NewGuid();
            category1.Title = "Category 1";
            var category2 = new CategoryViewModel();
            category2.Id = Guid.NewGuid();
            category2.Title = "Category 2";

            var checklistViewModel = new ChecklistViewModel()
                                         {
                                             Id = Guid.NewGuid(),
                                             ClientId = 21323,
                                             SiteId = 2313
                                         };

            var questionAnswer1 = new QuestionAnswerViewModel();
            questionAnswer1.Question = new QuestionViewModel();
            questionAnswer1.Question.Id = Guid.NewGuid();
            questionAnswer1.Question.Text = "Question 1";
            questionAnswer1.Question.PossibleResponses = new List<QuestionResponseViewModel>();
            questionAnswer1.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer1.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer1.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer1.Question.Category = category1;
            questionAnswer1.Question.CategoryId = category1.Id;
            questionAnswer1.Answer = new AnswerViewModel();
            questionAnswer1.Answer.QuestionId = questionAnswer1.Question.Id;

            var questionAnswer2 = new QuestionAnswerViewModel();
            questionAnswer2.Question = new QuestionViewModel();
            questionAnswer2.Question.Id = Guid.NewGuid();
            questionAnswer2.Question.Text = "Question 2";
            questionAnswer2.Question.PossibleResponses = new List<QuestionResponseViewModel>();
            questionAnswer2.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer2.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer2.Question.PossibleResponses.Add(new QuestionResponseViewModel { Id = Guid.NewGuid() });
            questionAnswer2.Question.Category = category2;
            questionAnswer2.Question.CategoryId = category2.Id;
            questionAnswer2.Answer = new AnswerViewModel();
            questionAnswer2.Answer.QuestionId = questionAnswer2.Question.Id;

            var controller = GetTarget();

            var response = controller.PostChecklist(checklistViewModel.Id, checklistViewModel);
        }