Example #1
0
        public void test_DataView()
        {
            var rs = Dalc.LoadAllRecords(new Query("users_view", (QField)"role_name" == (QConst)"user"));

            Assert.AreEqual(1, rs.Length, "Load data from data view failed");
            Assert.AreEqual("user", rs[0]["role_name"].ToString(), "Load data from data view failed");

            // check order by
            Assert.AreEqual(4, Dalc.RecordsCount(new Query("users_view")), "Invalid record count for dalc view");


            var testSet = new Dictionary <Query, string>()
            {
                { new Query("users_view")
                  {
                      Fields = new QField[] { "id" }
                  }, @"
select u.*,r.role as role_name from users u
left join roles r on (u.role=r.id)

order by u.id desc".Trim() },

                { new Query("users2_view")
                  {
                      Sort = new QSort[] { "role_name desc" },
                      ExtendedProperties = new Dictionary <string, object>()
                      {
                          { "customParam", "u.id as u_id" }
                      }
                  }, @"
select u.*,r.role as role_name, u.id as u_id from users u
left join roles r on (u.role=r.id)

order by r.role desc".Trim() }
            };

            foreach (var testCase in testSet)
            {
                var testView = ((DbCommandGenerator)Dalc.CommandGenerator).Views.Where(v => v.IsMatchTable(testCase.Key.Table)).First();
                using (var testCmd = Dalc.DbFactory.CreateCommand()) {
                    var sqlFactory = Dalc.DbFactory.CreateSqlBuilder(testCmd);
                    var s          = testView.ComposeSelect(testCase.Key, sqlFactory);
                    Assert.AreEqual(testCase.Value, s);
                }
            }
        }