コード例 #1
0
        public void Generate_WithMockedDependencies_GeneratesCorrectSelectAndJoinSyntax()
        {
            var parsedLambdaFake = new Mock<IParsedLambda>();
            var lamdaParserFake = new Mock<ILambdaParser>();
            lamdaParserFake.Setup(x => x.Parse(It.IsAny<Expression<Func<MyClass, bool>>>())).Returns(parsedLambdaFake.Object);
            var sqlQueryFake = new Mock<ISqlQuery>();
            sqlQueryFake.Setup(x => x.Sql).Returns("1 = 1");
            sqlQueryFake.Setup(x => x.Parameters).Returns(new List<IQueryParameter>());
            var parsedLambdaProcessorFake = new Mock<IParsedLambdaProcessor<ISqlQuery>>();
            parsedLambdaProcessorFake.Setup(x => x.Process(It.IsAny<IParsedLambda>())).Returns(sqlQueryFake.Object);
            var schemaFake = new Mock<IStructureSchema>();
            schemaFake.Setup(x => x.Name).Returns("MyClass");

            var generator = new SqlQueryGenerator(lamdaParserFake.Object, parsedLambdaProcessorFake.Object);
            var sqlQuery = generator.Generate<MyClass>(m => m.Int1 == 42, schemaFake.Object);

            var expectedSql = "select s.Json from [dbo].[MyClassStructure] as s "
                + "inner join [dbo].[MyClassIndexes] as si on si.StructureId = s.Id where 1 = 1";
            Assert.AreEqual(expectedSql, sqlQuery.Sql);
        }