Пример #1
0
        public void ProduceEmptyStringForNoClauses()
        {
            var fakeQueryData = Builder.GetQueryData();

            var sut = new WhereGenerator(fakeQueryData);

            Assert.Equal("", sut.ToString());
        }
Пример #2
0
        public void ProduceAnAndOfOrStatementsForUnbalancedMultipleClauses()
        {
            var clauses1      = Builder.Pack <Clause>(new EqualClause("PropOne", IGNORE_ME), new NullClause("PropNull"));
            var clauses2      = Builder.Pack <Clause>(new BetweenClause("PropTwo", IGNORE_ME, IGNORE_ME));
            var fakeQueryData = Builder.GetQueryData(Builder.Pack(clauses1, clauses2));

            var sut = new WhereGenerator(fakeQueryData);

            Assert.Equal("WHERE ([PropOne] = @PropOne_EQUAL OR [PropNull] IS NULL) AND ([PropTwo] BETWEEN @PropTwo_START AND @PropTwo_END)", sut.ToString());
        }
Пример #3
0
        public void ProduceAnStatementForAnotherSingleClause()
        {
            var doublePack = Builder.DoublePack <Clause>(
                new EqualClause("Another_Good_Property", IGNORE_ME)
                );
            var fakeQueryData = Builder.GetQueryData(doublePack);

            var sut = new WhereGenerator(fakeQueryData);

            Assert.Equal("WHERE [Another_Good_Property] = @Another_Good_Property_EQUAL", sut.ToString());
        }
Пример #4
0
        public void ProduceAnOrStatementForMultipleClauses()
        {
            var clauses = Builder.DoublePack <Clause>(
                new EqualClause("PropOne", IGNORE_ME),
                new BetweenClause("PropTwo", IGNORE_ME, IGNORE_ME)
                );
            var fakeQueryData = Builder.GetQueryData(clauses);

            var sut = new WhereGenerator(fakeQueryData);

            Assert.Equal("WHERE [PropOne] = @PropOne_EQUAL OR [PropTwo] BETWEEN @PropTwo_START AND @PropTwo_END", sut.ToString());
        }
Пример #5
0
        public void ProduceAnEqualStatementForSingleClause()
        {
            var clauses = Builder.DoublePack <Clause>(
                new EqualClause("Some_Good_Property", IGNORE_ME)
                );

            var fakeQueryData = Builder.GetQueryData(clauses);

            var queryData = fakeQueryData;
            var sut       = new WhereGenerator(queryData);

            Assert.Equal("WHERE [Some_Good_Property] = @Some_Good_Property_EQUAL", sut.ToString());
        }
        public virtual (string, IEnumerable <(string, object)> parameter) BuildQuery(Query query, IValidColumns validColumns, string tableName)
        {
            var queryData        = new QueryData(query, validColumns, new ClauseFactory(validColumns), tableName);
            var whereGenerator   = new WhereGenerator(queryData);
            var groupByGenerator = new GroupByGenerator(queryData);
            var orderByGenerator = new OrderByGenerator(queryData);
            var parameter        = whereGenerator.GetParameters();

            return(
                new SqlQueryGenerator(
                    new SelectGenerator(queryData),
                    whereGenerator,
                    groupByGenerator,
                    orderByGenerator
                    ).ToString()
                , parameter);
        }
Пример #7
0
        public void ProduceAllParameters()
        {
            var fakeQueryData = Builder.GetQueryData(
                Builder.Pack(
                    Builder.Pack <Clause>(
                        new EqualClause("Param1", "One"),
                        new NullClause("Param2")
                        ),
                    Builder.Pack <Clause>(
                        new BetweenClause("Param3", 3, 4),
                        new NullClause("Param4")
                        ),
                    Builder.Pack <Clause>(
                        new GreaterThanClause("Param5", 600)
                        )
                    )
                );

            var sut = new WhereGenerator(fakeQueryData);

            var parameters = sut.GetParameters();

            Approvals.VerifyAll(parameters, "parameter");
        }