public void NodeWithName_Should_Select_Node_And_REturn_Expression() {
            var fromNode = MockRepository.GenerateMock<IGraphNode>();

            var graph = MockRepository.GenerateMock<IGraph>();
            var nodeLookup = MockRepository.GenerateMock<INodeTracker>();

            graph.Expect(x => x.NodeLookup).Return(nodeLookup);
            nodeLookup.Expect(x => x.GetNodeByName("b")).Return(fromNode);
            
            var edgeExpression = new EdgeSourceExpression(graph).FromNodeWithName("b");

            graph.VerifyAllExpectations();
            nodeLookup.VerifyAllExpectations();
            
            Assert.IsNotNull(edgeExpression);
        }
        public void NewNode_Should_AddNode_To_Graph_And_Apply_Configuration()
        {
            var graph = MockRepository.GenerateMock<IGraph>();

            graph.Expect(x => x.AddNode(null))
                .IgnoreArguments()
                .Constraints(
                Is.Matching<IGraphNode>(x =>
                                        x.Name == "a")
                );

            var edgeExpression = new EdgeSourceExpression(graph).FromNewNode("a", x => x.WithLabel("b"));
            graph.VerifyAllExpectations();

            Assert.IsNotNull(edgeExpression);
        }
        public void RecordWithTag_Should_Select_Node_And_Return_Expression() {
            var fromNode = MockRepository.GenerateMock<IRecordNode>();

            var graph = MockRepository.GenerateMock<IGraph>();
            var nodeLookup = MockRepository.GenerateMock<INodeTracker>();
            var elementTracker = MockRepository.GenerateMock<IElementTracker>();

            graph.Expect(x => x.NodeLookup).Return(nodeLookup);
            nodeLookup.Expect(x => x.GetNodeByTag("tag")).Return(fromNode);

            fromNode.Expect(x => x.ElementTracker).Return(elementTracker);
            elementTracker.Expect(x => x.ContainsElement("c")).Return(true);

            var edgeExpression = new EdgeSourceExpression(graph).FromRecordWithTag("tag", "c");

            graph.VerifyAllExpectations();
            nodeLookup.VerifyAllExpectations();

            Assert.IsNotNull(edgeExpression);
        }