Exemple #1
0
        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"]);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }