Example #1
0
        public void SmartSqlBuilder_ShouldUseTheGeneratorsInTheAppropriateOrder()
        {
            var mockSqlBuilder = new Mock <ISqlQuery>(MockBehavior.Strict);
            var seq            = new MockSequence();

            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference2))),
                       It.Is <PropertyInfo>(y => y == typeof(Goal_Node).GetProperty(nameof(Goal_Node.Id)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.LeftJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == typeof(Node5).GetProperty(nameof(Node5.Reference)))));

            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Goal_Node).GetProperty(nameof(Goal_Node.Reference))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.SimpleColumnSelection)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.IdSelection)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Foo))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.SelectionFromAlreadyJoinedTable)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Node5).GetProperty(nameof(Node5.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.SelectionFromAnotherRoute)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Node5).GetProperty(nameof(Node5.Reference))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View1> .Type.GetProperty(nameof(View1.SecondSelectionFromAnotherRoute)))));

            Config.Use(new SpecifiedDataTables(typeof(Start_Node), typeof(Goal_Node), typeof(Node2), typeof(Node4), typeof(Node5), typeof(Node6), typeof(Node7), typeof(Node8)));

            SmartSqlBuilder <View1> .Build(_ => mockSqlBuilder.Object);

            mockSqlBuilder.Verify(x => x.InnerJoin(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Exactly(2));
            mockSqlBuilder.Verify(x => x.LeftJoin(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Once);
            mockSqlBuilder.Verify(x => x.Select(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Exactly(5));
        }
Example #2
0
        public void SmartSqlBuilder_GenerateBuildAction_GroupBy_Test()
        {
            var mockSqlBuilder = new Mock <ISqlQuery>(MockBehavior.Strict);

            mockSqlBuilder
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Id)))));
            mockSqlBuilder
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Foo)))));
            mockSqlBuilder
            .Setup(x => x.SelectCount(
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Count)))));

            mockSqlBuilder
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference)))));

            mockSqlBuilder
            .Setup(x => x.GroupBy(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id)))));
            mockSqlBuilder
            .Setup(x => x.GroupBy(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute)))));

            Config.Use(new SpecifiedDataTables(typeof(Start_Node), typeof(Goal_Node), typeof(Node2), typeof(Node4), typeof(Node5), typeof(Node6), typeof(Node7), typeof(Node8)));

            SmartSqlBuilder <View2> .Build(_ => mockSqlBuilder.Object);

            mockSqlBuilder.Verify(x => x.InnerJoin(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Once);
            mockSqlBuilder.Verify(
                x => x.Select(
                    It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                    It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Id)))),
                Times.Once);
            mockSqlBuilder.Verify(
                x => x.Select(
                    It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute))),
                    It.Is <PropertyInfo>(y => y == UnwrappedView <View2> .Type.GetProperty(nameof(View2.Foo)))),
                Times.Once);
            mockSqlBuilder.Verify(x => x.SelectCount(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Once);
            mockSqlBuilder.Verify(x => x.GroupBy(typeof(Start_Node).GetProperty(nameof(Start_Node.Id))), Times.Once);
            mockSqlBuilder.Verify(x => x.GroupBy(typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute))), Times.Once);
        }
Example #3
0
        public void SmartSqlBuilder_ShouldWorkWithComplexViews()
        {
            Config.Use(new SpecifiedDataTables(typeof(Start_Node), typeof(Goal_Node), typeof(Node2), typeof(Node4), typeof(Node5), typeof(Node6), typeof(Node7), typeof(Node8)));

            var mockSqlBuilder = new Mock <ISqlQuery>(MockBehavior.Strict);
            var seq            = new MockSequence();

            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.InnerJoin(
                       It.Is <PropertyInfo>(y => y == typeof(Node2).GetProperty(nameof(Node2.Reference2))),
                       It.Is <PropertyInfo>(y => y == typeof(Goal_Node).GetProperty(nameof(Goal_Node.Id)))));

            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Goal_Node).GetProperty(nameof(Goal_Node.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <Extension1> .Type.GetProperty(nameof(Extension1.IdSelection)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.Id))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <Extension1> .Type.GetProperty(nameof(Extension1.Id)))));
            mockSqlBuilder
            .InSequence(seq)
            .Setup(x => x.Select(
                       It.Is <PropertyInfo>(y => y == typeof(Start_Node).GetProperty(nameof(Start_Node.ReferenceWithoutAttribute))),
                       It.Is <PropertyInfo>(y => y == UnwrappedView <Extension1> .Type.GetProperty(nameof(Extension1.ReferenceWithoutAttribute)))));

            SmartSqlBuilder <Extension1> .Build(_ => mockSqlBuilder.Object);

            mockSqlBuilder.Verify(x => x.InnerJoin(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Exactly(2));
            mockSqlBuilder.Verify(x => x.Select(It.IsAny <PropertyInfo>(), It.IsAny <PropertyInfo>()), Times.Exactly(3));
        }