public void TestAllFieldsOneMember() { string xml = XML_START + XML_ALL_FIELDS_DEFINED + XML_END; Stream s = GenerateStreamFromString(xml); ConventusAddressWrapper caw = new ConventusAddressWrapper(); List <ConventusMedlem> result = null; try { result = caw.getMembersFromXml(s); } catch (Exception e) { throw new AssertFailedException("Exception should not occur", e); } CollectionAssert.AllItemsAreNotNull(result); CollectionAssert.AllItemsAreUnique(result); Assert.IsTrue(result.Count == 1, "Only one result expected"); ConventusMedlem m = result[0]; Assert.AreEqual("Gammelgang 10", m.Adresse1); Assert.AreEqual("Testhus", m.Adresse2); Assert.AreEqual(137, m.AltID); Assert.AreEqual("*****@*****.**", m.Email, "Email is wrong"); Assert.AreEqual(new DateTime(1974, 2, 14), m.Foedselsdato); Assert.AreEqual(1002282, m.Id); Assert.AreEqual(ConventusMedlem.KoenTypes.Mand, m.Koen); Assert.AreEqual("22720203", m.Mobilnummer); Assert.AreEqual("Svend Frydenlund", m.Navn); Assert.IsTrue(m.OffentligAdresse, "offentlig adresse"); Assert.IsTrue(m.OffentligEmail, "Offentlig email"); Assert.IsTrue(m.OffentligTelefon, "Offentlig telefon"); Assert.IsTrue(m.OfffentligNavn, "Offentlig navn"); Assert.AreEqual("2300", m.Postnummer); Assert.AreEqual("København S", m.PostnummerBy); Assert.IsFalse(m.Slettet, "Slettet"); Assert.AreEqual("35373691", m.Telefonnummer); }
/// <summary> /// Create a member object for a single member node in the xml-structure /// </summary> /// <param name="member">An Xml node representing a single member</param> /// <returns>An object with the parameters set. Empty or undefinded values are set to null for integers and to empty string for strings, booleans are set to <code>false</code>.</returns> private ConventusMedlem createMember(XmlNode member) { // TODO 2: Robustness: Catch and log exceptions on parsing of single members // Create new ConventusMedlem object ConventusMedlem cm = new ConventusMedlem(); // Conventus is expected to return an int value (non null) for all members cm.Id = int.Parse(member[ID].InnerText); // Adresse1 is not mandatory but logged as a warning if not present if (member[ADRESSE1] != null) { cm.Adresse1 = setValueOrEmpty(member[ADRESSE1].InnerText); } else { logger.Warn("MemberID " + cm.Id + " has no Adresse1 defined"); } if (member[ADRESSE2] != null) { cm.Adresse2 = setValueOrEmpty(member[ADRESSE2].InnerText); } if (member[ALT_ID] != null) { cm.AltID = setValueOrNull(member[ALT_ID].InnerText); } // Email is not mandatory but logged as a warning if not present if (member[EMAIL] != null) { cm.Email = setValueOrEmptyWith0AsEmpty(member[EMAIL].InnerText); } else { logger.Warn("MemberID " + cm.Id + " has no email defined"); } if (member[BIRTH] != null) { cm.Foedselsdato = setDateValueOrNull(member[BIRTH].InnerText); } else { cm.Foedselsdato = null; logger.Warn("MemberID " + cm.Id + " has no birth defined"); } // Set the sex of the member if (member[KOEN] != null) { string sexString = member[KOEN].InnerText; switch (sexString) { case "kvinde": cm.Koen = ConventusMedlem.KoenTypes.Kvinde; break; case "mand": cm.Koen = ConventusMedlem.KoenTypes.Mand; break; default: cm.Koen = ConventusMedlem.KoenTypes.Ukendt; logger.Warn("MemberID " + cm.Id + " has no sex defined. It has been set to Unknown"); break; } } else { cm.Koen = ConventusMedlem.KoenTypes.Ukendt; logger.Warn("MemberID " + cm.Id + " has no sex defined. It has been set to Unknown"); } // Mobil is not mandatory but a warning is logged later on if no phone number is present for the member. if (member[MOBIL] != null) { cm.Mobilnummer = setValueOrEmptyWith0AsEmpty(member[MOBIL].InnerText); } if (member[NAVN] != null) { cm.Navn = setValueOrEmpty(member[NAVN].InnerText); } else { logger.Warn("MemberID " + cm.Id + " has no name defined. It has been set to empty"); } cm.OffentligAdresse = isPublicAdresss(member); if (member[OFF_EMAIL] != null) { cm.OffentligEmail = setValueOrFalse(member[OFF_EMAIL].InnerText); } else { cm.OffentligEmail = false; } if (member[OFF_MOBIL] != null) { cm.OffentligMobil = setValueOrFalse(member[OFF_MOBIL].InnerText); } else { cm.OffentligMobil = false; } if (member[OFF_NAVN] != null) { cm.OfffentligNavn = setValueOrFalse(member[OFF_NAVN].InnerText); } else { cm.OffentligMobil = false; } if (member[OFF_TLF] != null) { cm.OffentligTelefon = setValueOrFalse(member[OFF_TLF].InnerText); } else { cm.OffentligTelefon = false; } if (member[POSTNR] != null) { cm.Postnummer = setEmptyIfzero(member[POSTNR].InnerText); } else { cm.Postnummer = string.Empty; } if (member[POSTNRBY] != null) { cm.PostnummerBy = setValueOrEmpty(member[POSTNRBY].InnerText); } else { cm.PostnummerBy = string.Empty; } if (member[SLETTET] != null) { cm.Slettet = setValueOrFalse(member[SLETTET].InnerText); } else { cm.Slettet = false; logger.Error("MemberID " + cm.Id + " has no Slettet defined. It has been set to not slettet"); } if (member[TLF] != null) { cm.Telefonnummer = setValueOrEmptyWith0AsEmpty(member[TLF].InnerText); } // We should have at least one phone number for the member. If not log a warning if (string.IsNullOrEmpty(cm.Telefonnummer) && string.IsNullOrEmpty(cm.Mobilnummer)) { logger.Warn("MemberID " + cm.Id + " has neither phone or mobile defined."); } return(cm); }