예제 #1
0
        public void HasTheParameterWithTheSameName_OverwritesIt()
        {
            // arrange
            var sut = new SqlClause();


            var parameter = new SqlParameter {
                ParameterName = "@name"
            };
            var parameter2 = new SqlParameter {
                ParameterName = "@name"
            };

            sut.Add(parameter);

            var clause = new SqlClause();

            clause.Add(parameter2);


            // act
            sut.Add(clause);
            var result = sut.GetParameters();


            // arrange
            result.Should().Equal(parameter2);
        }
예제 #2
0
        public void ToNotEmptyClause_AddingNotEmptyClause_ReturnsCorrectParametersList()
        {
            // arrange
            var sut = new SqlClause();


            var parameter = new SqlParameter {
                ParameterName = "@name"
            };
            var parameter2 = new SqlParameter {
                ParameterName = "@name2"
            };

            sut.Add(parameter);

            var clause = new SqlClause();

            clause.Add(parameter2);


            // act
            sut.Add(clause);
            var result = sut.GetParameters();


            // arrange
            result.Should().Equal(parameter, parameter2);
        }
예제 #3
0
        public void GetParameters_WithKey_NoParameterWithTheSameKey_WithOverwrite_AddsTheParameter()
        {
            // arrange
            var sut = new SqlClause();

            var parameter = new SqlParameter {
                ParameterName = "@test"
            };

            sut.Add("key", "a");
            sut.Add(parameter);

            var parameter2 = new SqlParameter {
                ParameterName = "@test2"
            };


            // act
            sut.Add("key", "b", parameter2, overwrite: true);

            var result = sut.GetParameters();


            // arrange
            result.Should().Equal(parameter, parameter2);
        }
예제 #4
0
        public void GetSql_NoPrefix_NoSuffix_NoSeparator_TwoExpressions_ReturnsCorrectSql()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("a");
            sut.Add("b");


            // act
            var result = sut.GetSql();


            // arrange
            result.Should().Be("ab");
        }
예제 #5
0
        public void AddKeyed_WithPreviousExpressionWithTheSameKey_WithOverwrite_OverwritesTheExpression()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("key", "a");


            // act
            sut.Add("key", "b", overwrite: true);
            var result = sut.GetSql();


            // arrange
            result.Should().Be("b");
        }
예제 #6
0
        public void AddKeyed_WithPreviousExpressionWithTheSameKey_ByDefault_AddsNothing()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("key", "a");


            // act
            sut.Add("key", "b");
            var result = sut.GetSql();


            // arrange
            result.Should().Be("a");
        }
예제 #7
0
        public void ToString_WithDateParameter_ReplacesParameterWithItsValue()
        {
            // arrange
            var sut  = new SqlClause();
            var date = new DateTime(2000, 1, 2, 3, 4, 5);

            sut.Add("@p1 @p2 @p3",
                    new SqlParameter {
                ParameterName = "@p1", SqlDbType = SqlDbType.DateTime, Value = date
            },
                    new SqlParameter {
                ParameterName = "@p2", SqlDbType = SqlDbType.Date, Value = (DateTime?)date
            },
                    new SqlParameter {
                ParameterName = "@p3", SqlDbType = SqlDbType.Time, Value = (DateTime?)date
            });


            // act
            var result = sut.ToString();


            // arrange
            result.Should().Be("'2000-01-02 03:04:05' " +
                               "'2000-01-02' " +
                               "'03:04:05'");
        }
예제 #8
0
        public void ToString_WithPrefix_WithSuffix_WithSeparator_TwoExpressions_ReturnsCorrectSql()
        {
            // arrange
            var sut = new SqlClause();

            sut.Prefix = "prefix ";
            sut.ExpressionsSeparator = " and ";
            sut.Suffix = " suffix";
            sut.Add("a");
            sut.Add("b");


            // act
            var result = sut.ToString();


            // arrange
            result.Should().Be("prefix a and b suffix");
        }
예제 #9
0
        public void ToNotEmptyClause_AddingNotEmptyClause_ReturnsCorrectSql()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("a");

            var clause = new SqlClause();

            clause.Add("b");


            // act
            sut.Add(clause);
            var result = sut.GetSql();


            // arrange
            result.Should().Be("ab");
        }
예제 #10
0
        public void WithKey_HasExpressionWithTheSameKey_ByDefault_AddsNothing()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("key", "a");

            var clause = new SqlClause();

            clause.Add("b");


            // act
            sut.Add("key", clause);
            var result = sut.GetSql();


            // arrange
            result.Should().Be("a");
        }
예제 #11
0
        public void WithKey_HasExpressionWithTheSameKey_WithOverwrite_OverwritesTheExpression()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("key", "a");

            var clause = new SqlClause();

            clause.Add("b");


            // act
            sut.Add("key", clause, overwrite: true);
            var result = sut.GetSql();


            // arrange
            result.Should().Be("b");
        }
예제 #12
0
        public void GetParameters_WithKey_HasExpressionWithTheSameKey_ByDefault_AddsNothing()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("key", "a");

            var parameter = new SqlParameter {
                ParameterName = "@test"
            };


            // act
            sut.Add("key", "b", parameter);

            var result = sut.GetParameters();


            // arrange
            result.Should().BeEmpty();
        }
예제 #13
0
        public void GetSql_WithKey_HasExpressionWithTheSameKey_WithOverwrite_OverwritesTheExpression()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("key", "a");

            var parameter = new SqlParameter {
                ParameterName = "@test"
            };


            // act
            sut.Add("key", "b", parameter, overwrite: true);

            var result = sut.GetSql();


            // arrange
            result.Should().Be("b");
        }
예제 #14
0
        public void ContainsExpressions_OneExpression_ReturnsTrue()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("key", "a");


            // act
            var result = sut.ContainsExpression("key");


            // arrange
            result.Should().BeTrue();
        }
예제 #15
0
        public void AddKeyed_NoPreviousExpressions_ReturnsCorrectSql()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("key", "a");


            // act
            var result = sut.GetSql();


            // arrange
            result.Should().Be("a");
        }
예제 #16
0
        public void ToString_WithObjectParameter_ReplacesParameterWithItsToStringRepresentation()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("@p", new SqlParameter("@p", new { x = 1 }));


            // act
            var result = sut.ToString();


            // arrange
            result.Should().Be("'{ x = 1 }'");
        }
예제 #17
0
        public void ContainsExpressions_HasNotKeyedExpression_ReturnsFalse()
        {
            // arrange
            var sut = new SqlClause();

            sut.Add("a");


            // act
            var result = sut.ContainsExpression("key");


            // arrange
            result.Should().BeFalse();
        }
예제 #18
0
        public void ToEmptyClause_AddingEmptyClause_ReturnsEmptyString()
        {
            // arrange
            var sut = new SqlClause();

            var clause = new SqlClause();


            // act
            sut.Add(clause);
            var result = sut.GetSql();


            // arrange
            result.Should().BeEmpty();
        }
예제 #19
0
        public void GetParameters_OneParameter_NoName_Throws()
        {
            // arrange
            var sut = new SqlClause();

            var parameter = new SqlParameter();


            // act
            Action action = () => sut.Add(parameter);


            // arrange
            action.Should().Throw <ArgumentNullException> ()
            .And.ParamName.Should().Be("parameter.ParameterName");
        }
예제 #20
0
        public void ToEmptyClause_AddingEmptyClause_ReturnsEmptyParametersList()
        {
            // arrange
            var sut = new SqlClause();

            var clause = new SqlClause();


            // act
            sut.Add(clause);
            var result = sut.GetParameters();


            // arrange
            result.Should().BeEmpty();
        }
예제 #21
0
        public void ContainsParameters_OneParameter_ReturnsTrue()
        {
            // arrange
            var sut = new SqlClause();

            var parameter = new SqlParameter {
                ParameterName = "@test"
            };

            sut.Add(parameter);


            // act
            var result = sut.ContainsParameter("@test");


            // arrange
            result.Should().BeTrue();
        }
예제 #22
0
        public void GetParameters_OneParameter_ReturnsCorrectList()
        {
            // arrange
            var sut = new SqlClause();

            var parameter = new SqlParameter {
                ParameterName = "@test"
            };

            sut.Add(parameter);


            // act
            var result = sut.GetParameters();


            // arrange
            result.Should().Equal(parameter);
        }
예제 #23
0
        public void GetParameters_ToEmptyClause_ReturnsCorrectParametersList()
        {
            // arrange
            var sut = new SqlClause();

            var parameter = new SqlParameter {
                ParameterName = "@test"
            };


            // act
            sut.Add("a", parameter);

            var result = sut.GetParameters();


            // arrange
            result.Should().Equal(parameter);
        }
예제 #24
0
        public void ToString_WithParameter_ReplacesParameterWithItsValue(object value, Type type, string expected)
        {
            // arrange
            if (value != null)
            {
                value = Convert.ChangeType(value, type);
            }

            var sut = new SqlClause();

            sut.Add("@p", new SqlParameter("@p", value));


            // act
            var result = sut.ToString();


            // arrange
            result.Should().Be(expected);
        }
        public void AddNotExists_WhereClause_AddsCorrectPredicate()
        {
            // arrange
            var sut       = SqlClauseBuilder.Where();
            var parameter = new SqlParameter {
                ParameterName = "@x"
            };

            var clause = new SqlClause("select * from Table2");

            clause.Add(parameter);


            // act
            sut.AddNotExists(clause);
            var sql        = sut.GetSql();
            var parameters = sut.GetParameters();


            // assert
            sql.Should().BeEquivalentToSql("where (not exists (select * from Table2))");
            parameters.Should().Equal(parameter);
        }
        public void AddNotExists_ByDefault_AddsCorrectPredicate()
        {
            // arrange
            var sut       = new SqlClause();
            var parameter = new SqlParameter {
                ParameterName = "@x"
            };

            var clause = new SqlClause("select * from Table2");

            clause.Add(parameter);


            // act
            sut.AddNotExists(clause);
            var sql        = sut.GetSql();
            var parameters = sut.GetParameters();


            // assert
            sql.Should().Be("not exists (select * from Table2)");
            parameters.Should().Equal(parameter);
        }