public void Given_a_consultant_all_checklists_that_are_visited_by_consultant_are_returned()
        {
            //given
            var consultantToFind = "Mr H&S";
            var expectedIdOfFoundChecklist = Guid.NewGuid();
            var checklists = new List<Checklist>
                                 {
                                     new Checklist() {ClientId = 14145135, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                     , new Checklist() {Id= expectedIdOfFoundChecklist, ClientId = 14145135, VisitBy = consultantToFind, ChecklistCreatedBy = consultantToFind, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                     , new Checklist() {ClientId = 23452435, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                 };

           
            _queryableWrapper.Setup(x => x.Queryable())
                .Returns(() => checklists.AsQueryable());


            var target = new GetChecklistsQuery(_queryableWrapper.Object);

            //when
            var result = target.WithConsultantName(consultantToFind)
                .Execute();

            //then
            Assert.That(result.Count, Is.EqualTo(1));
            Assert.That(result.First().Id, Is.EqualTo(expectedIdOfFoundChecklist));
        }
        public void Given_a_clientId_all_checklists_that_are_linked_to_client_are_returned()
        {
            //given
            var clientIdForTEST002 = 14145135;
            var checklists = new List<Checklist>
                                 {
                                     new Checklist() {ClientId = 5257647, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                     ,
                                     new Checklist() {ClientId = clientIdForTEST002, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                     ,
                                     new Checklist() {ClientId = 23452435, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                 };

            _queryableWrapper.Setup(x => x.Queryable())
                .Returns(() => checklists.AsQueryable());


            var target = new GetChecklistsQuery(_queryableWrapper.Object);
            
            //when
            var result = target
                .WithClientId(clientIdForTEST002)
                .Execute();

            //then
            Assert.That(result.Count,Is.EqualTo(1));
            Assert.That(result.First().ClientId, Is.EqualTo(clientIdForTEST002));

        }
        public void Given_a_visit_date_all_checklists_that_are_visited_by_consultant_are_returned()
        {
            var visitDate = DateTime.Now;
            var expectedIdOfFoundChecklist = Guid.NewGuid();
            var consultant = "Mr H&S";
            var checklists = new List<Checklist>
                                 {
                                       new Checklist() {ClientId = 14145135, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                     , new Checklist() {Id= expectedIdOfFoundChecklist, ClientId = 14145135, VisitBy = consultant, VisitDate = visitDate, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                     , new Checklist() {ClientId = 23452435, QaAdvisor = new QaAdvisor{Id = Guid.NewGuid(), Forename = "Test", Surname = "Test"}}
                                 };
            
            _queryableWrapper.Setup(x => x.Queryable())
                .Returns(() => checklists.AsQueryable());
            
            var target = new GetChecklistsQuery(_queryableWrapper.Object);
            var result = target
                .WithVisitDate(visitDate)
                .Execute();

            Assert.That(result.Count, Is.EqualTo(1));
            Assert.That(result.First().VisitDate, Is.EqualTo(visitDate));
            Assert.That(result.First().Id, Is.EqualTo(expectedIdOfFoundChecklist));
        }
        public void Given_qaAdvisor_is_entered_then_do_not_throw_exception()
        {
            var target = new GetChecklistsQuery(_queryableWrapper.Object);
            Assert.DoesNotThrow(() => target.Execute());

        }
        public void Given_with_deleted_and_status_date_when_execute_then_result_returns_correct_count()
        {
            //given
            var expectedDate = new DateTime(2014, 01, 01);

            var checklists = new List<Checklist>
                                 {
                                     new Checklist{Status = Checklist.STATUS_DRAFT, ChecklistCreatedOn = DateTime.Now, LastModifiedOn = expectedDate, Deleted = false},
                                     new Checklist{Status = Checklist.STATUS_DRAFT, ChecklistCreatedOn = DateTime.Now, LastModifiedOn = DateTime.Now, Deleted = true},
                                     new Checklist{Status = Checklist.STATUS_DRAFT, ChecklistCreatedOn = DateTime.Now, LastModifiedOn = expectedDate, Deleted = true},
                                     new Checklist{Status = Checklist.STATUS_COMPLETED, ChecklistCompletedOn = DateTime.Now},
                                     new Checklist{Status = Checklist.STATUS_ASSIGNED, QaAdvisorAssignedOn = DateTime.Now},
                                     new Checklist{Status = Checklist.STATUS_SUBMITTED, ChecklistSubmittedOn = DateTime.Now}
                                 };

            _queryableWrapper.Setup(x => x.Queryable())
                .Returns(checklists.AsQueryable);

            //when
            var target = new GetChecklistsQuery(_queryableWrapper.Object);
            var result = target
                .WithDeletedOnly()
                .WithStatusDateBetween(expectedDate, expectedDate.AddDays(1))
                .Execute();
            //then

            Assert.That(result.Count, Is.EqualTo(1));
        }
        public void Given_with_status_of_completed_when_execute_then_result_returns_correct_count()
        {
            //given
            var expectedDate = new DateTime(2014, 01, 01);

            var checklists = new List<Checklist>
                                 {
                                     new Checklist{Status = Checklist.STATUS_DRAFT, ChecklistCreatedOn = DateTime.Now },
                                     new Checklist{Status = Checklist.STATUS_COMPLETED, ChecklistCompletedOn = expectedDate},
                                     new Checklist{Status = Checklist.STATUS_COMPLETED, ChecklistCompletedOn = DateTime.Now},
                                     new Checklist{Status = Checklist.STATUS_SUBMITTED, ChecklistSubmittedOn = DateTime.Now}
                                 };

            _queryableWrapper.Setup(x => x.Queryable())
                .Returns(() => checklists.AsQueryable());

            //when
            var target = new GetChecklistsQuery(_queryableWrapper.Object);
            var result = target
                .WithStatus(Checklist.STATUS_COMPLETED)
                .WithStatusDateBetween(expectedDate, expectedDate.AddDays(1))
                .Execute();
            //then

            Assert.That(result.Count, Is.EqualTo(1));
        }
        public void Given_with_status_when_execute_then_result_returns_correct_count()
        {
            //given
            var checklists = new List<Checklist>
                                 {
                                     new Checklist{Status = Checklist.STATUS_DRAFT},
                                     new Checklist{Status = Checklist.STATUS_SUBMITTED}
                                 };

            _queryableWrapper.Setup(x => x.Queryable())
                .Returns(() => checklists.AsQueryable());

            //when
            var target = new GetChecklistsQuery(_queryableWrapper.Object);
            var result = target.WithStatus(Checklist.STATUS_SUBMITTED).Execute();
            //then

            Assert.That(result.Count, Is.EqualTo(1));
        }