Esempio n. 1
0
        public void Format_WhenQueryIn_ExpectSqlFormatted()
        {
            // Arrange
            var mockOrderByFormatter = new Mock <IOrderByFormatter>();
            var mockPageFormatter    = new Mock <IPageFormatter>();
            var mockWhereFormatter   = new Mock <IWhereFormatter>();
            var mockWhereParser      = new Mock <IWhereParser>();
            var mockSelectParser     = new Mock <ISelectParser>();

            mockWhereFormatter.Setup(r => r.Format(It.IsAny <WhereNode>())).Returns(new SqlDataResponse
            {
                Sql = "WHERE col1 = @col1",
            });

            mockOrderByFormatter.Setup(r => r.Format(It.IsAny <List <OrderByNode> >())).Returns("ORDER BY col1 asc");
            mockPageFormatter.Setup(r => r.Format(It.IsAny <PageNode>())).Returns(new SqlDataResponse
            {
                Sql = "OFFSET @offset LIMIT @limit",
            });

            mockSelectParser.Setup(r => r.Parse(It.IsAny <string>(), It.IsAny <char>())).Returns(new SelectNode
            {
                SelectAll     = true,
                SelectColumns = new List <string> {
                    "col_1", "col_2"
                },
            });

            var countCteFormatter = new CountCteFormatter(
                mockOrderByFormatter.Object,
                mockPageFormatter.Object,
                mockWhereFormatter.Object);

            var query = new Query(mockWhereParser.Object, mockSelectParser.Object);

            const string From = "table";

            // Act
            var stopwatch = Stopwatch.StartNew();
            var sqlEntity = countCteFormatter.Format(query, From);

            stopwatch.Stop();

            // Assert
            this.WriteTimeElapsed(stopwatch);

            Console.WriteLine(sqlEntity.Sql);

            Assert.That(sqlEntity, Is.Not.Null);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates this instance.
        /// </summary>
        /// <returns>The <see cref="IFormatter"/>.</returns>
        public static IFormatterFactory Create()
        {
            var orderByFormatter = new OrderByFormatter();
            var pageFormatter    = new PostgresPageFormatter();

            var equalsFormatter      = new EqualsFormatter();
            var lessThanFormatter    = new LessThanFormatter();
            var greaterThanFormatter = new GreaterThanFormatter();
            var rangeFormatter       = new RangeFormatter();

            var whereFormatter = new WhereFormatter(
                equalsFormatter,
                lessThanFormatter,
                greaterThanFormatter,
                rangeFormatter);

            var standardFormatter = new Formatter(orderByFormatter, pageFormatter, whereFormatter);
            var countCteFormatter = new CountCteFormatter(orderByFormatter, pageFormatter, whereFormatter);

            return(new FormatterFactory(standardFormatter, countCteFormatter));
        }