public void FragmentedQuery_AppendFragment_WithFragmentAndAfter_Success() { var query = new FragmentedQuery(); query.Name = "unit.test.query"; // Set up the fragment query.SQL = "before"; query.Fragments[QueryFragmentType.Where] = "unit.test.fragment"; query.AfterFragment[QueryFragmentType.Where] = "afterwards"; var fragments = new Dictionary <string, QueryFragment>(); fragments["unit.test.fragment"] = new QueryFragment { SQL = "the fragment" }; fragments["unit.test.fragment"].Parameters["unit.test.parameter"] = DbType.String; var sql = new StringBuilder(); // Assemble this fragment query.AppendFragment(QueryFragmentType.Where, sql, fragments); // Check the results Assert.AreEqual(" the fragment afterwards", sql.ToString()); Assert.AreEqual(1, query.Parameters.Count); Assert.IsTrue(query.Parameters.ContainsKey("unit.test.parameter")); Assert.AreEqual(DbType.String, query.Parameters["unit.test.parameter"]); }
public void FragmentedQuery_AppendFragment_NoFragment_Success() { var query = new FragmentedQuery(); query.Name = "unit.test.query"; // Set up the fragment query.SQL = "before"; var fragments = new Dictionary <string, QueryFragment>(); fragments["unit.test.fragment"] = new QueryFragment { SQL = "the fragment" }; fragments["unit.test.fragment"].Parameters["unit.test.parameter"] = DbType.String; var sql = new StringBuilder(); // Assemble this fragment query.AppendFragment(QueryFragmentType.From, sql, fragments); // Check the results Assert.AreEqual(String.Empty, sql.ToString()); Assert.AreEqual(0, query.Parameters.Count); }
public void FragmentedQuery_AppendFragment_NonExistentFragment_Failure() { var query = new FragmentedQuery(); query.Name = "unit.test.query"; // Set up the fragment query.SQL = "before"; query.Fragments[QueryFragmentType.Where] = "unit.test.fragment"; query.Fragments[QueryFragmentType.OrderBy] = "non.existent.fragment"; var fragments = new Dictionary <string, QueryFragment>(); fragments["unit.test.fragment"] = new QueryFragment { SQL = "the fragment" }; fragments["unit.test.fragment"].Parameters["unit.test.parameter"] = DbType.String; try { query.AppendFragment(QueryFragmentType.OrderBy, new StringBuilder(), fragments); Assert.Fail("AppendFragment should have thrown an exeception for a non-existent fragment"); } catch (KeyNotFoundException exception) { Assert.AreEqual( "Unable to find OrderBy query fragment non.existent.fragment defined in query unit.test.query", exception.Message); } }