Ejemplo n.º 1
0
        public void TestDeletePreferredParentRelationship()
        {
            var father = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(father);
            var mother = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(mother);
            var son = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(son);
            var chapr = tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(father, mother, son));

            cleanup.Add(chapr);
            var me = tree.ReadCurrentUser();

            // Ensure the target relationship exists
            var relationship = ((FamilyTreePersonParentsState)son.ReadParents()).ChildAndParentsRelationships.First();
            var state        = son.ReadChildAndParentsRelationship(relationship);

            tree.UpdatePreferredParentRelationship(me.User.TreeUserId, son.Person.Id, state);

            var state2 = tree.DeletePreferredParentRelationship(me.User.TreeUserId, son.Person.Id);

            Assert.AreEqual(HttpStatusCode.NoContent, state2.Response.StatusCode);
            Assert.IsNotNull(state2.Headers.Get("Content-Location").Single());
        }
Ejemplo n.º 2
0
        public void TestDeletePreferredSpouseRelationship()
        {
            var p = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(p);
            var s1 = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(s1);
            var s2 = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(s2);
            p.AddSpouse(s1);
            p.AddSpouse(s2);
            var me     = tree.ReadCurrentUser();
            var person = tree.ReadPersonById(p.Person.Id);

            // Ensure the target relationship exists
            person.LoadSpouseRelationships();
            var state = (IPreferredRelationshipState)person.ReadRelationship(person.Entity.Relationships[0]);

            tree.UpdatePreferredSpouseRelationship(me.User.TreeUserId, p.Person.Id, state);

            var state2 = tree.DeletePreferredSpouseRelationship(me.User.TreeUserId, p.Person.Id);

            Assert.AreEqual(HttpStatusCode.NoContent, state2.Response.StatusCode);
            Assert.IsNotNull(state2.Headers.Get("Content-Location").Single());
        }
Ejemplo n.º 3
0
        public void TestReadPersonDescendancyWithSpecifiedSpouse()
        {
            var father = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(father);
            var mother = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(mother);
            var son = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(son);
            var rel1 = father.AddSpouse(mother).AddFact(TestBacking.GetMarriageFact());

            cleanup.Add(rel1);
            var rel2 = tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(father, mother, son));

            cleanup.Add(rel2);
            var state = father.ReadDescendancy(FamilySearchOptions.SpouseId(mother.Headers.Get("X-ENTITY-ID").Single().Value.ToString()));

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
            Assert.IsNotNull(state.Tree);
            Assert.IsNotNull(state.Tree.Root);
            Assert.IsNotNull(state.Tree.Root.Person);
            Assert.IsNotNull(state.Tree.Root.Spouse);
            Assert.IsNotNull(state.Tree.Root.Children);
            Assert.AreEqual(1, state.Tree.Root.Children.Count);
            Assert.IsNotNull(state.Tree.Root.Children[0].Person);
            Assert.AreEqual(father.Person.Id, state.Tree.Root.Person.Id);
            Assert.AreEqual(mother.Headers.Get("X-ENTITY-ID").Single().Value.ToString(), state.Tree.Root.Spouse.Id);
            Assert.AreEqual(son.Headers.Get("X-ENTITY-ID").Single().Value.ToString(), state.Tree.Root.Children[0].Person.Id);
        }
        public void TestReadChildAndParentsRelationshipNotes()
        {
            var father       = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();
            var mother       = tree.AddPerson(TestBacking.GetCreateFemalePerson());
            var son          = tree.AddPerson(TestBacking.GetCreateMalePerson());
            var relationship = (ChildAndParentsRelationshipState)tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(father, mother, son)).Get();
            var state        = relationship.LoadNotes();

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
        }
Ejemplo n.º 5
0
        public void TestCreateCoupleRelationship()
        {
            var husband = (PersonState)collection.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = (PersonState)collection.AddPerson(TestBacking.GetCreateFemalePerson()).Get();

            cleanup.Add(wife);
            var state = husband.AddSpouse(wife);

            cleanup.Add(state);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.IsTrue(state.Response.StatusCode == System.Net.HttpStatusCode.Created);
        }
Ejemplo n.º 6
0
        public void TestCreateCoupleRelationship()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var state = husband.AddSpouse(wife);

            cleanup.Add(state);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.Created, state.Response.StatusCode);
        }
Ejemplo n.º 7
0
        public void TestReadPersonMergeConstraintCanMergeOtherOrderOnly()
        {
            var person1 = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(person1);
            var person2 = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateFemalePerson()).Get();

            cleanup.Add(person2);

            var state = person1.ReadMergeOptions(person2);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
            Assert.IsFalse(state.IsAllowed);
        }
Ejemplo n.º 8
0
        public void TestReadRelationshipsToSpousesWithPersons()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            husband.AddSpouse(wife);
            var state2 = husband.LoadSpouseRelationships(FamilySearchOptions.IncludePersons());

            Assert.DoesNotThrow(() => state2.IfSuccessful());
            Assert.IsNotNull(state2.Entity != null);
            Assert.IsNotNull(state2.Entity.Persons);
            Assert.AreEqual(2, state2.Entity.Persons.Count);
        }
Ejemplo n.º 9
0
        public void TestCreateCoupleRelationshipConclusion()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = husband.AddSpouse(wife);

            cleanup.Add(relationship);
            var state = relationship.AddFact(TestBacking.GetMarriageFact());

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.NoContent, state.Response.StatusCode);
        }
Ejemplo n.º 10
0
        public void TestReadPersonAncestryWithSpecifiedSpouseAndAdditionalPersonAndMarriageDetails()
        {
            var grandfather = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(grandfather);
            var father = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(father);
            var husband = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var rel1 = husband.AddSpouse(wife).AddFact(TestBacking.GetMarriageFact());

            cleanup.Add(rel1);
            var rel2 = tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(grandfather, null, father));

            cleanup.Add(rel2);
            var rel3 = tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(father, null, husband));

            cleanup.Add(rel3);
            husband = tree.ReadPersonById(husband.Person.Id);
            var state = husband.ReadAncestry(FamilySearchOptions.SpouseId(wife.Headers.Get("X-ENTITY-ID").Single().Value.ToString()), FamilySearchOptions.IncludePersonDetails(), FamilySearchOptions.IncludeMarriageDetails());

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
            Assert.IsNotNull(state.Tree);
            Assert.IsNotNull(state.Tree.Root);
            Assert.IsNotNull(state.Tree.Root.Mother);
            Assert.IsNotNull(state.Tree.Root.Mother.Person);
            Assert.IsNotNull(state.Tree.Root.Mother.Person.DisplayExtension);
            Assert.IsNotNull(state.Tree.Root.Mother.Person.DisplayExtension.MarriageDate);
            Assert.IsNotNull(state.Tree.Root.Father);
            Assert.IsNotNull(state.Tree.Root.Father.Person);
            Assert.IsNotNull(state.Tree.Root.Father.Father);
            Assert.IsNotNull(state.Tree.Root.Father.Father.Person);
            Assert.IsNotNull(state.Tree.Root.Father.Father.Father);
            Assert.IsNotNull(state.Tree.Root.Father.Father.Father.Person);
            Assert.IsNotNull(state.Tree.Root.Father.Person.Facts);
            Assert.IsNotNull(state.Tree.Root.Mother.Person.Facts);
            Assert.AreEqual(grandfather.GetSelfUri(), state.Tree.Root.Father.Father.Father.Person.GetLink("self").Href);
            Assert.AreEqual(father.GetSelfUri(), state.Tree.Root.Father.Father.Person.GetLink("self").Href);
            Assert.AreEqual(husband.GetSelfUri(), state.Tree.Root.Father.Person.GetLink("self").Href);
            Assert.AreEqual(wife.GetSelfUri(), state.Tree.Root.Mother.Person.GetLink("self").Href);
        }
Ejemplo n.º 11
0
        public void TestReadRelationshipsToSpouses()
        {
            var husband = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            husband.AddSpouse(wife);
            var state2 = husband.LoadSpouseRelationships();

            Assert.DoesNotThrow(() => state2.IfSuccessful());
            var spouses = state2.GetSpouseRelationships();

            Assert.IsNotNull(spouses);
            Assert.Greater(spouses.Count, 0);
        }
        public void TestDeleteChildAndParentsRelationship()
        {
            var father = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(father);
            var mother = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(mother);
            var son = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(son);
            var relationship = (ChildAndParentsRelationshipState)tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(father, mother, son)).Get();
            var state        = relationship.Delete();

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.NoContent, state.Response.StatusCode);
        }
Ejemplo n.º 13
0
        public void TestRestoreCoupleRelationship()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = (FamilyTreeRelationshipState)husband.AddSpouse(wife).Get();

            cleanup.Add(relationship);
            relationship = (FamilyTreeRelationshipState)relationship.Delete().IfSuccessful().Get();
            var state = relationship.Restore();

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.NoContent, state.Response.StatusCode);
        }
Ejemplo n.º 14
0
        public void TestReadCoupleRelationshipConditional()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = husband.AddSpouse(wife);

            cleanup.Add(relationship);
            var @get  = (RelationshipState)relationship.Get();
            var cache = new CacheDirectives(@get);
            var state = relationship.Get(cache);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.NotModified, state.Response.StatusCode);
        }
Ejemplo n.º 15
0
        public void TestReadCoupleRelationshipSourceReferences()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = husband.AddSpouse(wife);

            cleanup.Add(relationship);
            relationship.AddSourceReference(TestBacking.GetPersonSourceReference());
            var state = ((RelationshipState)relationship.Get()).LoadSourceReferences();

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
            Assert.IsNotNull(state.SourceReference);
        }
Ejemplo n.º 16
0
        public void TestUpdateCoupleRelationshipNote()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = (RelationshipState)husband.AddSpouse(wife).Get();

            cleanup.Add(relationship);
            relationship.AddNote(TestBacking.GetCreateNote());
            var notes = relationship.LoadNotes();
            var state = relationship.UpdateNote(TestBacking.GetCreateNote());

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.Created, state.Response.StatusCode);
        }
Ejemplo n.º 17
0
        public void TestReadSpousesOfAPerson()
        {
            var person = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(person);
            var spouse = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(spouse);
            person.AddSpouse(spouse);
            var state  = tree.ReadPerson(new Uri(person.GetSelfUri()));
            var state2 = state.ReadSpouses();

            Assert.DoesNotThrow(() => state2.IfSuccessful());
            Assert.IsNotNull(state2.Persons);
            Assert.IsNotNull(state2.Relationships);
            Assert.Greater(state2.Persons.Count, 0);
            Assert.Greater(state2.Relationships.Count, 0);
        }
Ejemplo n.º 18
0
        public void TestUpdatePersonsOfACoupleRelationship()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = (RelationshipState)husband.AddSpouse(wife).Get();

            cleanup.Add(relationship);
            var wife2 = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife2);
            relationship.Relationship.Person2 = new ResourceReference(wife2.GetSelfUri());
            var state = relationship.Post(relationship.Entity);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.NoContent, state.Response.StatusCode);
        }
Ejemplo n.º 19
0
        public void TestUpdateIllegalCoupleRelationship()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = (RelationshipState)husband.AddSpouse(wife).Get();

            cleanup.Add(relationship);
            var invalid = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(invalid);
            relationship.Relationship.Person2 = new ResourceReference(invalid.GetSelfUri());
            var state = relationship.Post(relationship.Entity);

            Assert.Throws <GedcomxApplicationException>(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.BadRequest, state.Response.StatusCode);
        }
Ejemplo n.º 20
0
        public void TestReadCoupleRelationshipChangeHistory()
        {
            var husband = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = (FamilyTreeRelationshipState)husband.AddSpouse(wife).Get();

            cleanup.Add(relationship);
            relationship.AddFact(TestBacking.GetMarriageFact());
            cleanup.Add(relationship);
            var state = relationship.ReadChangeHistory();

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
            Assert.IsNotNull(state.Page);
            Assert.IsNotNull(state.Page.Entries);
            Assert.Greater(state.Page.Entries.Count, 0);
        }
Ejemplo n.º 21
0
        public void TestCreateChildAndParentsRelationshipConclusion()
        {
            var father = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(father);
            var mother = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(mother);
            var son = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(son);
            var relationship = (ChildAndParentsRelationshipState)tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(father, mother, son)).Get();

            cleanup.Add(relationship);
            var state = relationship.AddFatherFact(TestBacking.GetBiologicalParentFact());

            Assert.DoesNotThrow(() => state.IfSuccessful());

            // TODO: likely this should now be created
            //Assert.AreEqual(HttpStatusCode.NoContent, state.Response.StatusCode);
            Assert.AreEqual(HttpStatusCode.Created, state.Response.StatusCode);
        }
Ejemplo n.º 22
0
        public void TestReadChildAndParentsRelationshipChangeHistory()
        {
            var father = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(father);
            var mother = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(mother);
            var son = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(son);
            var relationship = (ChildAndParentsRelationshipState)tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(father, mother, son)).Get();

            cleanup.Add(relationship);
            var state = relationship.ReadChangeHistory();

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
            Assert.IsNotNull(state.Entity);
            Assert.IsNotNull(state.Entity.Entries);
            Assert.Greater(state.Entity.Entries.Count, 0);
        }
Ejemplo n.º 23
0
        public void TestUpdatePreferredSpouseRelationship()
        {
            var p = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(p);
            var s1 = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(s1);
            var s2 = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(s2);
            p.AddSpouse(s1);
            p.AddSpouse(s2);
            var me     = tree.ReadCurrentUser();
            var person = tree.ReadPersonById(p.Person.Id);

            person.LoadSpouseRelationships();
            var state  = (IPreferredRelationshipState)person.ReadRelationship(person.Entity.Relationships[0]);
            var state2 = tree.UpdatePreferredSpouseRelationship(me.User.TreeUserId, p.Person.Id, state);

            Assert.AreEqual(HttpStatusCode.NoContent, state2.Response.StatusCode);
        }
Ejemplo n.º 24
0
        public void TestUpdateCoupleRelationshipConclusion()
        {
            var husband = (PersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(husband);
            var wife = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(wife);
            var relationship = husband.AddSpouse(wife);

            cleanup.Add(relationship);
            var update = (RelationshipState)relationship.AddFact(TestBacking.GetMarriageFact()).Get();

            update.Fact.Date.Original = "4 Apr 1930";
            update.Fact.Attribution   = new Attribution()
            {
                ChangeMessage = "Change message2",
            };
            var state = relationship.UpdateFact(update.Fact);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.NoContent, state.Response.StatusCode);
        }
Ejemplo n.º 25
0
        public void TestReadChildAndParentsRelationshipSourceReferences()
        {
            var father = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(father);
            var mother = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(mother);
            var son = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(son);
            var temp = TestBacking.GetCreateChildAndParentsRelationship(father, mother, son);

            temp.AddSource(TestBacking.GetPersonSourceReference());
            var relationship = (ChildAndParentsRelationshipState)tree.AddChildAndParentsRelationship(temp).Get();

            cleanup.Add(relationship);
            var state = relationship.LoadSourceReferences();

            var relationship2 = (ChildAndParentsRelationshipState)relationship.Get();

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.OK, state.Response.StatusCode);
        }
        public void TestUpdateChildAndParentsRelationshipConclusion()
        {
            var father = (FamilyTreePersonState)tree.AddPerson(TestBacking.GetCreateMalePerson()).Get();

            cleanup.Add(father);
            var mother = tree.AddPerson(TestBacking.GetCreateFemalePerson());

            cleanup.Add(mother);
            var son = tree.AddPerson(TestBacking.GetCreateMalePerson());

            cleanup.Add(son);
            var relationship = (ChildAndParentsRelationshipState)tree.AddChildAndParentsRelationship(TestBacking.GetCreateChildAndParentsRelationship(father, mother, son)).Get();

            cleanup.Add(relationship);
            var update = relationship.AddFatherFact(TestBacking.GetBiologicalParentFact());

            relationship = (ChildAndParentsRelationshipState)relationship.Get();
            relationship.LoadConclusions();
            relationship.FatherFact.KnownType = FactType.AdoptiveParent;
            var state = relationship.UpdateFatherFact(relationship.FatherFact);

            Assert.DoesNotThrow(() => state.IfSuccessful());
            Assert.AreEqual(HttpStatusCode.NoContent, state.Response.StatusCode);
        }