tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    84     void relationModel();
    84     void relationModel();
    85     void casing();
    85     void casing();
    86     void escapedRelations();
    86     void escapedRelations();
    87     void escapedTableName();
    87     void escapedTableName();
    88     void whiteSpaceInIdentifiers();
    88     void whiteSpaceInIdentifiers();
       
    89     void psqlSchemaTest();
    89 
    90 
    90 private:
    91 private:
    91     void dropTestTables( QSqlDatabase db );
    92     void dropTestTables( QSqlDatabase db );
    92 };
    93 };
    93 
    94 
   148     foreach (const QString &dbname, dbs.dbNames) {
   149     foreach (const QString &dbname, dbs.dbNames) {
   149         QSqlDatabase db=QSqlDatabase::database(dbname);
   150         QSqlDatabase db=QSqlDatabase::database(dbname);
   150         if (db.driverName().startsWith("QIBASE"))
   151         if (db.driverName().startsWith("QIBASE"))
   151             db.exec("SET DIALECT 3");
   152             db.exec("SET DIALECT 3");
   152         else if (tst_Databases::isSqlServer(db)) {
   153         else if (tst_Databases::isSqlServer(db)) {
   153             QSqlQuery q(db);
   154             db.exec("SET ANSI_DEFAULTS ON");
   154             QVERIFY_SQL(q, exec("SET ANSI_DEFAULTS ON"));
   155             db.exec("SET IMPLICIT_TRANSACTIONS OFF");
   155             QVERIFY_SQL(q, exec("SET IMPLICIT_TRANSACTIONS OFF"));
       
   156         }
   156         }
       
   157         else if(tst_Databases::isPostgreSQL(db))
       
   158             db.exec("set client_min_messages='warning'");
   157         recreateTestTables(db);
   159         recreateTestTables(db);
   158     }
   160     }
   159 }
   161 }
   160 
   162 
   161 void tst_QSqlRelationalTableModel::cleanupTestCase()
   163 void tst_QSqlRelationalTableModel::cleanupTestCase()
   179             << qTableName( "rel test6" )
   181             << qTableName( "rel test6" )
   180             << qTableName( "rel test7" )
   182             << qTableName( "rel test7" )
   181             << qTableName("CASETEST1" )
   183             << qTableName("CASETEST1" )
   182             << qTableName("casetest1" );
   184             << qTableName("casetest1" );
   183     tst_Databases::safeDropTables( db, tableNames );
   185     tst_Databases::safeDropTables( db, tableNames );
       
   186 
       
   187     db.exec("DROP SCHEMA "+qTableName("QTBUG_5373")+" CASCADE");
       
   188     db.exec("DROP SCHEMA "+qTableName("QTBUG_5373_s2")+" CASCADE");
   184 }
   189 }
   185 
   190 
   186 void tst_QSqlRelationalTableModel::init()
   191 void tst_QSqlRelationalTableModel::init()
   187 {
   192 {
   188 }
   193 }
  1116         QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
  1121         QCOMPARE(model.data(model.index(3,2)).toString(), QString("herr"));
  1117 
  1122 
  1118     }
  1123     }
  1119 }
  1124 }
  1120 
  1125 
  1121 void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers() {
  1126 void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers()
  1122 
  1127 {
  1123     QFETCH_GLOBAL(QString, dbName);
  1128     QFETCH_GLOBAL(QString, dbName);
  1124     QSqlDatabase db = QSqlDatabase::database(dbName);
  1129     QSqlDatabase db = QSqlDatabase::database(dbName);
  1125     CHECK_DATABASE(db);
  1130     CHECK_DATABASE(db);
  1126 
  1131 
  1127     if (!testWhiteSpaceNames(db.driverName()))
  1132     if (!testWhiteSpaceNames(db.driverName()))
  1191     QCOMPARE(model.data(model.index(0, 0)).toInt(), 4);
  1196     QCOMPARE(model.data(model.index(0, 0)).toInt(), 4);
  1192     QCOMPARE(model.data(model.index(0, 1)).toString(), QString("New York"));
  1197     QCOMPARE(model.data(model.index(0, 1)).toString(), QString("New York"));
  1193     QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
  1198     QCOMPARE(model.data(model.index(0, 2)).toInt(), 6);
  1194 }
  1199 }
  1195 
  1200 
       
  1201 void tst_QSqlRelationalTableModel::psqlSchemaTest()
       
  1202 {
       
  1203     QFETCH_GLOBAL(QString, dbName);
       
  1204     QSqlDatabase db = QSqlDatabase::database(dbName);
       
  1205     CHECK_DATABASE(db);
       
  1206 
       
  1207     if(!tst_Databases::isPostgreSQL(db)) {
       
  1208         QSKIP("Postgresql specific test", SkipSingle);
       
  1209         return;
       
  1210     }
       
  1211     QSqlRelationalTableModel model(0, db);
       
  1212     QSqlQuery q(db);
       
  1213     QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373")));
       
  1214     QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373_s2")));
       
  1215     QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373")+"."+qTableName("document")+"(document_id int primary key, relatingid int, userid int)"));
       
  1216     QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373_s2")+"."+qTableName("user")+"(userid int primary key, username char(40))"));
       
  1217     model.setTable(qTableName("QTBUG_5373")+"."+qTableName("document"));
       
  1218     model.setRelation(1, QSqlRelation(qTableName("QTBUG_5373_s2")+"."+qTableName("user"), "userid", "username"));
       
  1219     model.setRelation(2, QSqlRelation(qTableName("QTBUG_5373_s2")+"."+qTableName("user"), "userid", "username"));
       
  1220     QVERIFY_SQL(model, select());
       
  1221 }
       
  1222 
  1196 QTEST_MAIN(tst_QSqlRelationalTableModel)
  1223 QTEST_MAIN(tst_QSqlRelationalTableModel)
  1197 #include "tst_qsqlrelationaltablemodel.moc"
  1224 #include "tst_qsqlrelationaltablemodel.moc"