public void TestThatDateTimePropertyIsDeserialisedCorrectly() { var body = new HyperFindQuery { HyperFindQueryName = "All Home", VisibilityCode = "Public", QueryDateStart = new DateTime(2017, 2, 11), QueryDateEnd = new DateTime(2017, 2, 12) }; var response = @"<WFC> <Response Status='Success' Timeout='1800' PersonNumber='SUPERUSER' Action='Logon' PersonKey='-1' Username='******' Object='System'> </Response> <Response Status='Success' Action='RunQuery'> <HomeAccount EffectiveDate='1/27/2018' ExpirationDate='12/7/2016'/> <HomeAccount EffectiveDate='01/07/2018' ExpirationDate=''/> <HomeAccount EffectiveDate='1/7/2018' ExpirationDate='12/30/2016'/> </Response> <Response Status='Success' Action='Logoff' Object='System'> </Response></WFC>"; _webRequest.Setup(w => w.GetResponse(It.IsAny <string>(), new byte[] { It.IsAny <byte>() }, It.IsAny <string>(), It.IsAny <string>())); _webRequest.SetReturnsDefault(response); var xmlService = new XmlApiService <HyperFindQuery, List <HomeAccount> >(_apiSettings, _webRequest.Object); var result = xmlService.GetResponse(body, "RunQuery"); Assert.NotNull(result); Assert.AreEqual(new DateTime(2018, 1, 27), result[0].EffectiveDate); Assert.AreEqual(new DateTime(2016, 12, 7), result[0].ExpirationDate); Assert.AreEqual(new DateTime(2018, 1, 7), result[1].EffectiveDate); Assert.AreEqual(null, result[1].ExpirationDate); Assert.AreEqual(new DateTime(2018, 1, 7), result[2].EffectiveDate); Assert.AreEqual(new DateTime(2016, 12, 30), result[2].ExpirationDate); }
public void TestMappingForQueryAndResult() { var modelQuery = new HyperFindQuery { HyperFindQueryName = "query name", VisibilityCode = "code", QueryDateStart = new DateTime(2017, 03, 12), QueryDateEnd = new DateTime(2017, 03, 14) }; var apiQuery = _mapper.GetQueryWrapper(modelQuery); Assert.AreEqual(modelQuery.QueryDateStart, apiQuery.QueryDateStart); Assert.AreEqual(modelQuery.QueryDateEnd, apiQuery.QueryDateEnd); Assert.AreEqual(modelQuery.VisibilityCode, apiQuery.VisibilityCode); Assert.AreEqual(modelQuery.HyperFindQueryName, apiQuery.HyperFindQueryName); var apiResult = new HyperFindResult { FullName = "Vasya Pupkin", PersonNumber = "MIH67868" }; var modelResult = _mapper.GetResultWrapper(apiResult); Assert.AreEqual(apiResult.PersonNumber, modelResult.PersonNumber); Assert.AreEqual(apiResult.FullName, modelResult.FullName); }
public void TestThatXmlApiServiceThrowsAnExceptionIsResultBodyStatusIsNotSuccess() { var body = new HyperFindQuery { HyperFindQueryName = "All Home", VisibilityCode = "Public", QueryDateStart = new DateTime(2017, 2, 11), QueryDateEnd = new DateTime(2017, 2, 12) }; var responseString = @"<WFC> <Response Status='Success' Timeout='1800' PersonNumber='SUPERUSER' Action='Logon' PersonKey='-1' Username='******' Object='System'> </Response> <Response Status='Failed' Action='RunQuery'> <HyperFindResult FullName='Gallo, Leo' PersonNumber='46'/> </Response> <Response Status='Success' Action='Logoff' Object='System'> </Response></WFC>"; _webRequest.Setup(w => w.GetResponse(It.IsAny <string>(), new byte[] { It.IsAny <byte>() }, It.IsAny <string>(), It.IsAny <string>())); _webRequest.SetReturnsDefault(responseString); var xmlService = new XmlApiService <HyperFindQuery, List <HyperFindResult> >(_apiSettings, _webRequest.Object); Assert.Throws <ServerException>(() => xmlService.GetResponse(body, "RunQuery")); }
public void TestThatDecimalPropertyIsDeserialisedCorrectly() { var body = new HyperFindQuery { HyperFindQueryName = "All Home", VisibilityCode = "Public", QueryDateStart = new DateTime(2017, 2, 11), QueryDateEnd = new DateTime(2017, 2, 12) }; var response = @"<WFC> <Response Status='Success' Timeout='1800' PersonNumber='SUPERUSER' Action='Logon' PersonKey='-1' Username='******' Object='System'> </Response> <Response Status='Success' Action='RunQuery'> <Person BaseWageHourly='2.4535'/> <Person/> </Response> <Response Status='Success' Action='Logoff' Object='System'> </Response></WFC>"; _webRequest.Setup(w => w.GetResponse(It.IsAny <string>(), new byte[] { It.IsAny <byte>() }, It.IsAny <string>(), It.IsAny <string>())); _webRequest.SetReturnsDefault(response); var xmlService = new XmlApiService <HyperFindQuery, List <Contracts.Responses.Person> >(_apiSettings, _webRequest.Object); var result = xmlService.GetResponse(body, "RunQuery"); Assert.NotNull(result); Assert.AreEqual(2.4535, result[0].BaseWageHourly); Assert.AreEqual(null, result[1].BaseWageHourly); }
public void SerializeApiRequestListToXml() { var body = new HyperFindQuery { HyperFindQueryName = "All Home", VisibilityCode = "Public", QueryDateStart = new DateTime(2017, 2, 11), QueryDateEnd = new DateTime(2017, 2, 12) }; var list = new List <HyperFindQuery>(); list.Add(body); var body2 = new HyperFindQuery { HyperFindQueryName = "All Home2", VisibilityCode = "Public2", QueryDateStart = new DateTime(2017, 2, 11), QueryDateEnd = new DateTime(2017, 2, 12) }; list.Add(body2); var xmlRequest = new XmlApiRequest <List <HyperFindQuery> >(list, "RunQuery", "user", "passowrd"); var xs = new XmlSerializer(typeof(XmlApiRequest <List <HyperFindQuery> >)); var xmlnsEmpty = new XmlSerializerNamespaces(); xmlnsEmpty.Add(string.Empty, string.Empty); using (var buffer = new MemoryStream()) { xs.Serialize(buffer, xmlRequest, xmlnsEmpty); var xml = new XmlDocument(); xml.LoadXml(Encoding.UTF8.GetString(buffer.ToArray())); Assert.NotNull(xml); Assert.AreEqual("WFC", xml.DocumentElement.Name); Assert.AreEqual("1.0", xml.DocumentElement.Attributes["version"].Value); var logon = xml.DocumentElement.SelectNodes("Request")[0]; Assert.NotNull(logon); Assert.AreEqual("Logon", logon.Attributes["Action"].Value); var logoff = xml.DocumentElement.SelectNodes("Request")[2]; Assert.NotNull(logoff); Assert.AreEqual("Logoff", logoff.Attributes["Action"].Value); var bodyRequest = xml.DocumentElement.SelectNodes("Request")[1].SelectNodes("HyperFindQuery")[0]; Assert.NotNull(bodyRequest); Assert.AreEqual("All Home", bodyRequest.Attributes["HyperFindQueryName"].Value); Assert.AreEqual("Public", bodyRequest.Attributes["VisibilityCode"].Value); Assert.AreEqual("2/11/2017-2/12/2017", bodyRequest.Attributes["QueryDateSpan"].Value); var bodyRequest2 = xml.DocumentElement.SelectNodes("Request")[1].SelectNodes("HyperFindQuery")[1]; Assert.NotNull(bodyRequest2); Assert.AreEqual("All Home2", bodyRequest2.Attributes["HyperFindQueryName"].Value); Assert.AreEqual("Public2", bodyRequest2.Attributes["VisibilityCode"].Value); } }
public void DeserialiseXmlToApiResponseEntity() { var body = new HyperFindQuery { HyperFindQueryName = "All Home", VisibilityCode = "Public", QueryDateStart = new DateTime(2017, 2, 11), QueryDateEnd = new DateTime(2017, 2, 12) }; _webRequest.Setup(w => w.GetResponse(It.IsAny <string>(), new byte[] { It.IsAny <byte>() }, It.IsAny <string>(), It.IsAny <string>())); _webRequest.SetReturnsDefault(_responseString); var xmlService = new XmlApiService <HyperFindQuery, HyperFindResult>(_apiSettings, _webRequest.Object); var result = xmlService.GetResponse(body, "RunQuery"); Assert.NotNull(result); Assert.AreEqual("Gallo, Leo", result.FullName); Assert.AreEqual("46", result.PersonNumber); }
public void TestThatBoolPropertyIsDeserialisedCorrectly() { var body = new HyperFindQuery { HyperFindQueryName = "All Home", VisibilityCode = "Public", QueryDateStart = new DateTime(2017, 2, 11), QueryDateEnd = new DateTime(2017, 2, 12) }; var response = @"<WFC> <Response Status='Success' Timeout='1800' PersonNumber='SUPERUSER' Action='Logon' PersonKey='-1' Username='******' Object='System'> </Response> <Response Status='Success' Action='RunQuery'> <AccessAssignment ManagerPayCodeName='Gallo, Leo' ApproveOvertimeFlag='false'/> <AccessAssignment ManagerPayCodeName='Gallo, Leo' ApproveOvertimeFlag='true'/> <AccessAssignment ManagerPayCodeName='Gallo, Leo' ApproveOvertimeFlag=''/> <AccessAssignment ManagerPayCodeName='Gallo, Leo' ApproveOvertimeFlag='FALSE'/> <AccessAssignment ManagerPayCodeName='Gallo, Leo' ApproveOvertimeFlag='TRUE'/> </Response> <Response Status='Success' Action='Logoff' Object='System'> </Response></WFC>"; _webRequest.Setup(w => w.GetResponse(It.IsAny <string>(), new byte[] { It.IsAny <byte>() }, It.IsAny <string>(), It.IsAny <string>())); _webRequest.SetReturnsDefault(response); var xmlService = new XmlApiService <HyperFindQuery, List <AccessAssignment> >(_apiSettings, _webRequest.Object); var result = xmlService.GetResponse(body, "RunQuery"); Assert.NotNull(result); Assert.AreEqual(false, result[0].ApproveOvertimeFlag); Assert.AreEqual(true, result[1].ApproveOvertimeFlag); Assert.AreEqual(null, result[2].ApproveOvertimeFlag); Assert.AreEqual(false, result[3].ApproveOvertimeFlag); Assert.AreEqual(true, result[4].ApproveOvertimeFlag); }
public List <HyperFindResult> GetEmployeesPersonIdentities(HyperFindQuery query) { var xmlApiService = new XmlApiService <HyperFindQuery, List <HyperFindResult> >(_apiSettings, _webRequest); return(xmlApiService.GetResponse(query, "RunQuery")); }
public XmlApi.Contracts.Requests.HyperFindQuery GetQueryWrapper(HyperFindQuery data) { return(Mapper.Map <HyperFindQuery, XmlApi.Contracts.Requests.HyperFindQuery>(data)); }
public List <HyperFindResult> Execute(HyperFindQuery criteria) { var result = _apiProxy.GetEmployeesPersonIdentities(_hyperFindMapper.GetQueryWrapper(criteria)); return(_hyperFindMapper.GetResultWrapper(result)); }
public JobStatus Run(GetEmployeeCriteria criteria) { try { var hyperFindQuery = new HyperFindQuery { HyperFindQueryName = "All Home", VisibilityCode = "Public", QueryDateStart = DateTime.Now, QueryDateEnd = DateTime.Now }; _statusTracker.ShowInitialStep(JobStepDescription.GetEmployeeNumbers); _logger.Info(JobStepDescription.GetEmployeeNumbers); var fullPersonNumbersData = _commandExecutor.Execute <HyperFindQuery, List <HyperFindResult> >(hyperFindQuery); // if EmployeesCount is a number employees person numbers we want to get // if EmployeesCount is 0 - all employees var personNumbers = criteria.EmployeesCount == 0 ? fullPersonNumbersData : fullPersonNumbersData.Take(criteria.EmployeesCount).ToList(); List <Employee> fullEmployeesData = new List <Employee>(); // read full employee data passing a portion of pers numbers int portion = criteria.EmployeesPerPageNumber == default(int) ? DefaultEmployeesPerPageNumber : criteria.EmployeesPerPageNumber; int pageCount = Convert.ToInt32(Math.Ceiling((double)personNumbers.Count / portion)); var stepsCount = pageCount + 7; _statusTracker.Initialize(stepsCount); for (int i = 0; i < pageCount; i++) { string stepDescription; if (i == 0) { stepDescription = string.Format(JobStepDescription.GetFirstBunchOfFullEmployeeData, criteria.EmployeesCount < portion ? criteria.EmployeesCount : portion); } else { stepDescription = string.Format(JobStepDescription.GetNextBunchOfFullEmployeeData, portion); } _statusTracker.NotifyNewStep(stepDescription); _logger.Info(stepDescription); var personNumberPortion = personNumbers.Skip(i * portion).Take(portion).ToList(); var employeesPortion = _commandExecutor.Execute <List <HyperFindResult>, List <Employee> >(personNumberPortion); fullEmployeesData.AddRange(employeesPortion); } _statusTracker.NotifyNewStep(string.Format(JobStepDescription.ExportFile, EmployeeListFileName)); _logger.Info(string.Format(JobStepDescription.ExportFile, EmployeeListFileName)); EmployeeListStep(fullEmployeesData, criteria.ShowWage, EmployeeListFileName); _statusTracker.NotifyNewStep(string.Format(JobStepDescription.ExportFile, EmployeeListLicenseFileName)); EmployeeLicenseStep(fullEmployeesData, EmployeeListLicenseFileName); _statusTracker.NotifyNewStep(string.Format(JobStepDescription.ExportFile, EmployeeListCustomFields)); EmployeeCustomFieldStep(fullEmployeesData, EmployeeListCustomFields); _statusTracker.NotifyNewStep(string.Format(JobStepDescription.ExportFile, EmployeeListCustomDateFileName)); EmployeeCustomDateStep(fullEmployeesData, EmployeeListCustomDateFileName); EmployeePayRuleStep(fullEmployeesData); return(JobStatus.Success); } catch (FileNotAccessibleException ex) { _logger.Error(ex, GetType().Name); throw ex; } catch (Exception ex) { _logger.Error(ex, GetType().Name); return(JobStatus.Failed); } }