public void FindAppointments_Valid()
        {
            var fromDate = new DateTime(2012, 06, 20);
            var toDate   = fromDate.AddDays(5);
            var siteCode = "GKGZ";

            var inModel = new AppointmentSearchCriteriaModel {
                AppointmentDateFrom = fromDate, AppointmentDateTo = toDate, SiteCode = siteCode
            };
            var request  = MappingEngine.Map <AppointmentListCriteria>(inModel);
            var response = new AppointmentListResponse
            {
                Appointment = new[] { new Appointment {
                                          AppointmentID = 1, JobSeekerID = 3, SessionID = 2, CreationSite = siteCode
                                      } },
                ExecutionResult = new ExecutionResult {
                    Status = ExecuteStatus.Success
                }
            };
            var outModel = MappingEngine.Map <IEnumerable <AppointmentModel> >(response.Appointment);

            mockMappingEngine.Setup(m => m.Map <AppointmentListCriteria>(inModel)).Returns(request);
            mockDiaryAppointmentWcf.Setup(m => m.List(request)).Returns(response);
            mockMappingEngine.Setup(m => m.Map <IEnumerable <AppointmentModel> >(response.Appointment)).Returns(outModel);

            var result = SystemUnderTest().FindAppointments(inModel);

            Assert.IsTrue(result.Count() == outModel.Count());
            Assert.IsTrue(result.First().AppointmentID == outModel.First().AppointmentID);
            Assert.IsTrue(result.First().CreationSiteCode == outModel.First().CreationSiteCode);

            mockDiaryAppointmentWcf.Verify(m => m.List(It.IsAny <AppointmentListCriteria>()), Times.Once());
            mockMappingEngine.Verify(m => m.Map <IEnumerable <AppointmentModel> >(response.Appointment), Times.Once());
        }
        public void FindAppointments_WcfThrowsFaultException_ThrowsServiceValidationException()
        {
            var exception = new FaultException(new FaultReason("reason"), new FaultCode("code"));

            var fromDate = new DateTime(2012, 06, 20);
            var toDate   = fromDate.AddDays(5);
            var siteCode = "GKGZ";

            var inModel = new AppointmentSearchCriteriaModel {
                AppointmentDateFrom = fromDate, AppointmentDateTo = toDate, SiteCode = siteCode
            };
            var request = MappingEngine.Map <AppointmentListCriteria>(inModel);

            mockMappingEngine.Setup(m => m.Map <AppointmentListCriteria>(inModel)).Returns(request);
            mockDiaryAppointmentWcf.Setup(m => m.List(request)).Throws(exception);

            SystemUnderTest().FindAppointments(inModel);
        }
        public void FindAppointments_WcfThrowsFaultExceptionValidationFault_ThrowsServiceValidationException()
        {
            var exception = new FaultException <ValidationFault>(new ValidationFault {
                Details = new List <ValidationDetail> {
                    new ValidationDetail {
                        Key = "Key", Message = "Message"
                    }
                }
            });

            var fromDate = new DateTime(2012, 06, 20);
            var toDate   = fromDate.AddDays(5);
            var siteCode = "GKGZ";

            var inModel = new AppointmentSearchCriteriaModel {
                AppointmentDateFrom = fromDate, AppointmentDateTo = toDate, SiteCode = siteCode
            };
            var request = MappingEngine.Map <AppointmentListCriteria>(inModel);

            mockMappingEngine.Setup(m => m.Map <AppointmentListCriteria>(inModel)).Returns(request);
            mockDiaryAppointmentWcf.Setup(m => m.List(request)).Throws(exception);

            SystemUnderTest().FindAppointments(inModel);
        }