/// <summary> /// Check WriteResultItem of Bulk Write test cases /// </summary> /// <param name="expectedType"></param> /// <param name="actualItem"></param> public static void VerifyBulkWriteResultItem(BulkWriteInputType expectedType, WriteResultItem actualItem) { if (expectedType == BulkWriteInputType.InvalidItem) { Assert.That(actualItem.Code, Is.Not.EqualTo(Enums.PublicAPIResultCode.Success), Enums.Message.WRONG_ERROR_CODE); } else { Assert.That(actualItem.Code, Is.EqualTo(Enums.PublicAPIResultCode.Success), Enums.Message.WRONG_ERROR_CODE); Assert.That(actualItem.Id, Is.Not.Null.And.Not.Empty, "The id is null or empty"); } }
/// <summary> /// Parse an XML string to object /// </summary> /// <typeparam name="T">Support: ReadResponseData, List of WriteItem and ErrorCode</typeparam> /// <param name="xmlString">String for parsing</param> /// <param name="resourceElementName">Usually name of Resource: Client, Contract...</param> /// <exception cref="NotImplementedException">An exception will be thrown in case of unsupported type</exception> /// <returns></returns> public static T ParseXMLString <T>(string xmlString, string resourceElementName = null) where T : class, new() { T result = null; XDocument xmlDoc = XDocument.Parse(xmlString); Type type = typeof(T); string resourceName = type.Name; if (resourceName.Contains("ReadResponseData")) { Type[] elementType = type.GetTypeInfo().GetGenericArguments(); MethodInfo method = typeof(XmlHelper).GetTypeInfo().GetMethod("GetResourcesFromXML", BindingFlags.NonPublic | BindingFlags.Static); MethodInfo generic = method.MakeGenericMethod(elementType[0]); object[] parameters = new object[] { xmlDoc }; result = (T)generic.Invoke(null, parameters); } else if (type.GetTypeInfo().IsGenericType&& type.FullName.Contains("List")) { List <WriteResultItem> resultList = new List <WriteResultItem>(); XElement root = xmlDoc.Root; foreach (XElement item in root.Elements(XML_ITEM)) { WriteResultItem temp = new WriteResultItem(); temp.Code = int.Parse(item.Element(XML_CODE).Value); temp.Id = item.Element(XML_ID).Value; resultList.Add(temp); } result = resultList as T; } else if (resourceName.Contains("ErrorCode")) { IEnumerable <XElement> codeList = xmlDoc.Descendants(XML_CODE); if (codeList == null || codeList.Count() <= 0) { Log.Warn("Code element is not found!"); } else { ErrorCode temp = new ErrorCode(); XElement codeElement = codeList.First(); temp.Code = int.Parse(codeElement.Value); temp.Type = codeElement.Parent.Name.ToString(); result = temp as T; } } else if (resourceName.Contains("Authentication")) { Authentication temp = new Authentication(); //temp.DictionaryValues = new Dictionary<string, object>(); foreach (XNode prop in xmlDoc.Root.Nodes()) { if (prop.NodeType == XmlNodeType.Element) { ParseResource <T>((XElement)prop, temp.DictionaryValues); } } return(temp as T); } else { throw new NotImplementedException("Parsing XML method for this type is not implemented!"); } return(result); }