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); } } }