public void MatchRelationshipWithProperty()
        {
            var addressRelationship = new HomeAddressRelationship(DateTimeOffset.Parse("2015-08-05 12:00"), "agent", "homeAddress");
            var q = GetFluentQuery()
                    .MatchRelationship(addressRelationship);
            var text = q.GetFormattedDebugText();

            Console.WriteLine(text);

            Assert.AreEqual(@"MATCH (agent)-[agenthomeAddress:HOME_ADDRESS {dateEffective:{agenthomeAddressMatchKey}.dateEffective}]->(homeAddress)", text);
        }
        public void CreateRelationshipWithNoIdentifier()
        {
            var homeRelationship = new HomeAddressRelationship(string.Empty, "a", "ha");

            var q = GetFluentQuery()
                .CreateRelationship(homeRelationship);
            
            var text = q.GetFormattedDebugText();
            Console.WriteLine(text);

            Assert.AreEqual("CREATE (a)-[:HOME_ADDRESS]->(ha)", text);
        }
        public void OptionalMatchRelationship()
        {
            var person = SampleDataFactory.GetWellKnownPerson(7);
            var homeAddressRelationship = new HomeAddressRelationship();
            var q = GetFluentQuery()
                .MatchEntity(person)
                .OptionalMatchRelationship(homeAddressRelationship, MatchRelationshipOptions.Create().WithNoProperties());
            var text = q.GetFormattedDebugText();
            Console.WriteLine(text);

            Assert.AreEqual(@"MATCH (person:SecretAgent {id:{
  id: 7
}.id})
OPTIONAL MATCH (person)-[personaddress:HOME_ADDRESS]->(address)", text);
        }
        public ICypherFluentQuery OneDeepMergeByRelationshipAct()
        {
            //setup
            var testPerson = SampleDataFactory.GetWellKnownPerson(7);

            var homeAddressRelationship = new HomeAddressRelationship("person", "homeAddress");
            var workAddressRelationship = new WorkAddressRelationship("person", "workAddress");

            // perhaps this would be modelled on the address node but serves to show how to attach relationship property
            homeAddressRelationship.DateEffective = DateTime.Parse("2011-01-10T08:00:00+10:00");

            //act
            var q = GetFluentQuery()
                .MergeEntity(testPerson)
                .MergeEntity(testPerson.HomeAddress, MergeOptions.ViaRelationship(homeAddressRelationship))
                .MergeEntity(testPerson.WorkAddress, MergeOptions.ViaRelationship(workAddressRelationship));

            return q;
        }
        public ICypherFluentQuery CreateComplexAct()
        {
            var agent = SampleDataFactory.GetWellKnownPerson(7);
            var homeRelationship = new HomeAddressRelationship("myHomeRelationshipIdentifier", "a", "ha");
            homeRelationship.DateEffective = DateTimeOffset.Parse("2015-08-05 12:00+00:00");

            var q = GetFluentQuery()
                .CreateEntity(agent, "a")
                .CreateEntity(agent.HomeAddress, "ha")
                .CreateEntity(agent.WorkAddress, "wa")
                .CreateRelationship(homeRelationship)
                .CreateRelationship(new WorkAddressRelationship("a", "wa"));
            
            return q;
        }