Exemple #1
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 #2
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 #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);
            }
        }
Exemple #4
0
        public void FragmentedQuery_Fragments_Empty_Success()
        {
            var query = new FragmentedQuery();

            Assert.IsNotNull(query.Fragments, "Fragment dictionary should not be null");
            Assert.IsNotNull(query.AfterFragment, "After Fragment dictionary should not be null");

            Assert.AreEqual(0, query.Fragments.Count, "Fragment dictionary should be empty");
            Assert.AreEqual(0, query.AfterFragment.Count, "After Fragment dictionary should be empty");
        }
Exemple #5
0
            private FragmentedQuery AFragmentedQuery()
            {
                var query = new FragmentedQuery {
                    SQL = "SELECT"
                };

                query.Fragments.Add(QueryFragmentType.From, "test.from");
                query.AfterFragment.Add(QueryFragmentType.From, "after_from");

                return(query);
            }
Exemple #6
0
        /// <summary>
        /// Get a fragmented query with all fragments used
        /// </summary>
        /// <returns>
        /// A fragmented query with all fragments used
        /// </returns>
        private FragmentedQuery AllFragmentsUsed()
        {
            var query = new FragmentedQuery();

            query.Fragments[QueryFragmentType.Select]  = "unit.test.select";
            query.Fragments[QueryFragmentType.From]    = "unit.test.from";
            query.Fragments[QueryFragmentType.Where]   = "unit.test.where";
            query.Fragments[QueryFragmentType.OrderBy] = "unit.test.orderby";
            query.Fragments[QueryFragmentType.Insert]  = "unit.test.insert";
            query.Fragments[QueryFragmentType.Update]  = "unit.test.update";
            query.Fragments[QueryFragmentType.Delete]  = "unit.test.delete";

            query.AfterFragment[QueryFragmentType.Select]  = "after-select";
            query.AfterFragment[QueryFragmentType.Insert]  = "after-insert";
            query.AfterFragment[QueryFragmentType.Update]  = "after-update";
            query.AfterFragment[QueryFragmentType.Delete]  = "after-delete";
            query.AfterFragment[QueryFragmentType.From]    = "after-from";
            query.AfterFragment[QueryFragmentType.Where]   = "after-where";
            query.AfterFragment[QueryFragmentType.OrderBy] = "after-orderby";

            return(query);
        }