public void AddJoin_WithWhere_AlsoAddWhere_AddAnotherJoin() { //---------------Set up test pack------------------- const string startSql = "select * from bob WHERE that = this"; var builder = new SqlStatementBuilder(_connection, startSql); const string expectedSql = "select DISTINCT * from (bob LEFT JOIN [bobby] ON bobs = bobbys) " + "LEFT JOIN [bobbin] ON bobbys = bobbins WHERE that = this AND this = that"; //---------------Execute Test ---------------------- builder.AddJoin("left join", "bobby", "bobs = bobbys"); builder.AppendCriteria("this = that"); builder.AddJoin("left join", "bobbin", "bobbys = bobbins"); var actual = builder.GetStatement().Statement.ToString(); //---------------Test Result ----------------------- Assert.AreEqual(expectedSql, actual); }
public void AddJoin_WithNoWhere_InnerJoin() { //---------------Set up test pack------------------- const string startSql = "select * from bob"; var builder = new SqlStatementBuilder(_connection, startSql); const string expectedSql = "select * from bob INNER JOIN [bobby] ON bobs = bobbys"; //---------------Execute Test ---------------------- builder.AddJoin("inner join", "bobby", "bobs = bobbys"); var actual = builder.GetStatement().Statement.ToString(); //---------------Test Result ----------------------- Assert.AreEqual(expectedSql, actual); }
public void AddJoin_Complex() { //---------------Set up test pack------------------- const string startSql = "select [FALSE FROM CLAUSE], [FALSE WHERE CLAUSE] from bob WHERE that = this"; var builder = new SqlStatementBuilder(_connection, startSql); const string expectedSql = "select DISTINCT [FALSE FROM CLAUSE], [FALSE WHERE CLAUSE] from bob LEFT JOIN [bobby] ON bobs = bobbys WHERE that = this AND this = that"; //---------------Execute Test ---------------------- builder.AddJoin("left join", "bobby", "bobs = bobbys"); builder.AppendCriteria("this = that"); var actual = builder.GetStatement().Statement.ToString(); //---------------Test Result ----------------------- Assert.AreEqual(expectedSql, actual); }
public void AddJoin_WithEmptyStatement() { //---------------Set up test pack------------------- const string startSql = ""; var builder = new SqlStatementBuilder(_connection, startSql); //---------------Execute Test ---------------------- try { builder.AddJoin("left join", "bobby", "bobs = bobbys"); Assert.Fail("Expected to throw an SqlStatementException"); } //---------------Test Result ----------------------- catch (SqlStatementException ex) { StringAssert.Contains("Cannot add a join clause to a SQL statement that does not contain a from clause", ex.Message); } }