public void TestSearchPersonsWithWarningsAndErrors()
        {
            GedcomxPersonSearchQueryBuilder query = new GedcomxPersonSearchQueryBuilder()
                .Param("givenNameMisspelled", "Israel");
            var state = collection.SearchForPersons(query);

            Assert.IsTrue(state.Warnings.Count > 0);
        }
        public void TestSearchPersons()
        {
            GedcomxPersonSearchQueryBuilder query = new GedcomxPersonSearchQueryBuilder()
                .MotherGivenName("Clarissa")
                .FatherSurname("Heaton")
                .MotherSurname("Hoyt")
                .Surname("Heaton")
                .GivenName("Israel")
                .FatherGivenName("Jonathan");

            var state = collection.SearchForPersons(query);

            Assert.DoesNotThrow(() => state.IfSuccessful());
        }
        public void TestReadNextPageOfSearchResults()
        {
            GedcomxPersonSearchQueryBuilder query = new GedcomxPersonSearchQueryBuilder()
                .Name("John Smith")
                .BirthDate("1 January 1900")
                .FatherName("Peter Smith");

            PersonSearchResultsState results = collection.SearchForPersons(query);

            var state = (PersonSearchResultsState)results.ReadNextPage();
            Assert.DoesNotThrow(() => state.IfSuccessful());
            PersonState person = state.ReadPerson(results.Results.Entries.FirstOrDefault());

            Assert.IsNotNull(person);
            Assert.DoesNotThrow(() => person.IfSuccessful());
        }
        public void TestSearchForPersonMatches()
        {
            var query = new GedcomxPersonSearchQueryBuilder()
                .FatherSurname("Heaton")
                .SpouseSurname("Cox")
                .Surname("Heaton")
                .GivenName("Israel")
                .BirthPlace("Orderville, UT")
                .DeathDate("29 August 1936")
                .DeathPlace("Kanab, Kane, UT")
                .SpouseGivenName("Charlotte")
                .MotherGivenName("Clarissa")
                .MotherSurname("Hoyt")
                .Gender("Male")
                .BirthDate("30 January 1880")
                .FatherGivenName("Jonathan");
            var state = tree.SearchForPersonMatches(query);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
        }
        public void TestReadMatchScoresForPersons()
        {
            var query = new GedcomxPersonSearchQueryBuilder()
                .GivenName("GedcomX")
                .Surname("User")
                .Gender("Male")
                .BirthDate("June 1800")
                .BirthPlace("Provo, Utah, Utah, United States")
                .DeathDate("July 14, 1900")
                .DeathPlace("Provo, Utah, Utah, United States");
            var state = tree.SearchForPersonMatches(query);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.IsNotNull(state.Results);
            Assert.IsNotNull(state.Results.Entries);
            Assert.Greater(state.Results.Entries.Count, 0);
            Assert.Greater(state.Results.Entries[0].Score, 0);
        }
 /// <summary>
 /// Searches for person matches based off the specified query.
 /// </summary>
 /// <param name="query">The query with search parameters to use.</param>
 /// <param name="options">The options to apply before executing the REST API call.</param>
 /// <returns>
 /// A <see cref="PersonMatchResultsState"/> instance containing the REST API response.
 /// </returns>
 /// <remarks>
 /// The REST API may not produce results if the query is lacking in any way. When this occurs, use the <see cref="P:PersonMatchResults.Warnings"/>
 /// collection to determine possible causes. The most common issue is not supplying a sufficient number of search parameters, in which case too
 /// many search results could return.
 /// </remarks>
 public PersonMatchResultsState SearchForPersonMatches(GedcomxPersonSearchQueryBuilder query, params IStateTransitionOption[] options)
 {
     return SearchForPersonMatches(query.Build(), options);
 }