public void given_checklist_when_copyWithoutResponses_then_new_client_id_set()
        {
            //given
            var userForAuditing = new UserForAuditing() { Id = Guid.NewGuid() };
            var copiedByUserName = "******";
            var checklist = new Checklist() { Id = Guid.NewGuid(), ClientId = 11111, ChecklistCreatedBy = "previousCreatedBy", CreatedOn = DateTime.Now.AddDays(-10), ChecklistCreatedOn = DateTime.Now.AddDays(-10) };


            var siteId = 213123;
            var clientID = 99999;

            //when
            var result = checklist.CopyToSiteWithoutResponses(siteId, clientID, userForAuditing, copiedByUserName, false);

            //then
            Assert.That(result.Id, Is.Not.EqualTo(checklist.Id));
            Assert.That(result.ClientId, Is.EqualTo(clientID));
        }
        public void given_checklist_when_copyWithoutResponses_then_initial_Values_set()
        {
            //given
            var clientId = 123;
            var userForAuditing = new UserForAuditing() { Id = Guid.NewGuid() };
            var copiedByUserName = "******";
            var checklist = new Checklist()
            {
                Id = Guid.NewGuid(), 
                ChecklistCreatedBy = "previousCreatedBy", 
                CreatedOn = DateTime.Now.AddDays(-10), 
                ChecklistCreatedOn = DateTime.Now.AddDays(-10),
                Jurisdiction = "UK",
                Status = "Submitted",
                ClientId = clientId,
                ChecklistTemplate = new ChecklistTemplate() { Id=Guid.NewGuid()}
            };

            var siteId = 213123;            

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

            //then
            Assert.That(result.Id, Is.Not.EqualTo(checklist.Id));
            Assert.That(result.ClientId, Is.EqualTo(clientId));
            Assert.That(result.Jurisdiction, Is.EqualTo(checklist.Jurisdiction));
            Assert.That(result.Status, Is.EqualTo("Draft"));
            Assert.That(result.ChecklistCreatedBy, Is.EqualTo(copiedByUserName));
            Assert.That(result.ChecklistCreatedOn.Value.Date, Is.Not.EqualTo(checklist.CreatedOn.Value.Date));

        }
        public void given_checklist_when_copyWithoutResponses_then_deleted_questions_not_set()
        {
            //given
            var siteId = 213123;
            var clientId = 123;
            var userForAuditing = new UserForAuditing() { Id = Guid.NewGuid() };
            var copiedByUserName = "******";

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

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

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

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

            var checklist = new Checklist()
            {
                Id = Guid.NewGuid(),
                ChecklistCreatedBy = "previousCreatedBy",
                CreatedOn = DateTime.Now.AddDays(-10),
                ChecklistCreatedOn = DateTime.Now.AddDays(-10),
                Jurisdiction = "UK",
                Status = "Submitted",
                ClientId = clientId,
                ChecklistTemplate = new ChecklistTemplate() { Id = Guid.NewGuid() }
            };

            checklist.Questions.Add(new ChecklistQuestion() { Id = Guid.NewGuid(), Question = question1, Checklist = checklist, CategoryNumber = 1, QuestionNumber = 4 });
            checklist.Questions.Add(new ChecklistQuestion() { Id = Guid.NewGuid(), Question = question2, Checklist = checklist, CategoryNumber = 2, QuestionNumber = 3 });
            checklist.Questions.Add(new ChecklistQuestion() { Id = Guid.NewGuid(), Question = question3, Checklist = checklist, CategoryNumber = 3, QuestionNumber = 2 });
            checklist.Questions.Add(new ChecklistQuestion() { Id = Guid.NewGuid(), Question = question4, Checklist = checklist, CategoryNumber = 4, QuestionNumber = 1});

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

            //then
            Assert.That(result.Questions.Count, Is.EqualTo(2));
        }
        public void given_checklist_when_copyWithoutResponses_then_non_mandatory_questions_set()
        {
            //given
            var siteId = 213123;
            var clientId = 123;
            var userForAuditing = new UserForAuditing() { Id = Guid.NewGuid() };
            var copiedByUserName = "******";
            var question = Question.Create(Guid.NewGuid(), "Title",
                new Category() { Id = Guid.NewGuid(), Title = "Care" }, true, userForAuditing);

            var checklist = new Checklist()
            {
                Id = Guid.NewGuid(),
                ChecklistCreatedBy = "previousCreatedBy",
                CreatedOn = DateTime.Now.AddDays(-10),
                ChecklistCreatedOn = DateTime.Now.AddDays(-10),
                Jurisdiction = "UK",
                Status = "Submitted",
                ClientId = clientId,
                ChecklistTemplate = new ChecklistTemplate() { Id = Guid.NewGuid() }
            };

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

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

            //then
            Assert.That(result.Questions.Count, Is.EqualTo(checklist.Questions.Count));
            Assert.That(result.Questions[0].Id, Is.Not.EqualTo(checklist.Questions[0].Id));
            Assert.That(result.Questions[0].Question.Id, Is.Not.EqualTo(checklist.Questions[0].Question.Id));
            Assert.That(result.Questions[0].CategoryNumber, Is.EqualTo(checklist.Questions[0].CategoryNumber));
            Assert.That(result.Questions[0].QuestionNumber, Is.EqualTo(checklist.Questions[0].QuestionNumber));
            Assert.That(result.Questions[0].Question.CustomQuestion, Is.EqualTo(checklist.Questions[0].Question.CustomQuestion));
            Assert.That(result.Questions[0].Question.Category.Id, Is.EqualTo(checklist.Questions[0].Question.Category.Id));
        }