@@ -33,6 +33,9 @@ class TestQgsValueRelationWidgetWrapper : public QObject
33
33
public:
34
34
TestQgsValueRelationWidgetWrapper () = default ;
35
35
36
+ private:
37
+ QTemporaryDir tempDir;
38
+
36
39
private slots:
37
40
void initTestCase (); // will be called before the first testfunction is executed.
38
41
void cleanupTestCase (); // will be called after the last testfunction was executed.
@@ -45,6 +48,7 @@ class TestQgsValueRelationWidgetWrapper : public QObject
45
48
// ! Checks that a related value of 0 is not interpreted as a NULL
46
49
void testZeroIndexInRelatedTable ();
47
50
void testWithJsonInPostgres ();
51
+ void testWithJsonInGPKG ();
48
52
};
49
53
50
54
void TestQgsValueRelationWidgetWrapper::initTestCase ()
@@ -389,7 +393,7 @@ void TestQgsValueRelationWidgetWrapper::testWithJsonInPostgres()
389
393
390
394
QCOMPARE ( vl_json->fields ().at ( 1 ).type (), QVariant::Map );
391
395
392
- // build a value relation widget wrapper for bikes
396
+ // build a value relation widget wrapper
393
397
QgsValueRelationWidgetWrapper w_favoriteauthors ( vl_json, vl_json->fields ().indexOf ( QStringLiteral ( " jvalue" ) ), nullptr , nullptr );
394
398
QVariantMap cfg_favoriteautors;
395
399
cfg_favoriteautors.insert ( QStringLiteral ( " Layer" ), vl_authors->id () );
@@ -450,5 +454,98 @@ void TestQgsValueRelationWidgetWrapper::testWithJsonInPostgres()
450
454
QCOMPARE ( w_favoriteauthors.mTableWidget ->item ( 5 , 0 )->checkState (), Qt::Checked );
451
455
}
452
456
457
+
458
+ void TestQgsValueRelationWidgetWrapper::testWithJsonInGPKG ()
459
+ {
460
+ /* prepared - functionality needs to be integrated first
461
+
462
+ // create ogr gpkg layers
463
+ QString myFileName( TEST_DATA_DIR ); //defined in CmakeLists.txt
464
+ QString myTempDirName = tempDir.path();
465
+ QFile::copy( myFileName + "/provider/test_json.gpkg", myTempDirName + "/test_json.gpkg" );
466
+ QString myTempFileName = myTempDirName + "/test_json.gpkg";
467
+ QFileInfo myMapFileInfo( myTempFileName );
468
+ QgsVectorLayer *vl_json = new QgsVectorLayer( myMapFileInfo.filePath()+"|layername=reader", "test", QStringLiteral( "ogr" ) );
469
+ QgsVectorLayer *vl_authors = new QgsVectorLayer( myMapFileInfo.filePath()+"|layername=author", "test", QStringLiteral( "ogr" ) );
470
+ QVERIFY( vl_json->isValid() );
471
+ QVERIFY( vl_authors->isValid() );
472
+
473
+ QgsProject::instance()->addMapLayer( vl_json, false, false );
474
+ QgsProject::instance()->addMapLayer( vl_authors, false, false );
475
+
476
+ // build a value relation widget wrapper for bikes
477
+ QgsValueRelationWidgetWrapper w_favoriteauthors( vl_json, vl_json->fields().indexOf( QStringLiteral( "json_content" ) ), nullptr, nullptr );
478
+ QVariantMap cfg_favoriteautors;
479
+ cfg_favoriteautors.insert( QStringLiteral( "Layer" ), vl_authors->id() );
480
+ cfg_favoriteautors.insert( QStringLiteral( "Key" ), QStringLiteral( "fid" ) );
481
+ cfg_favoriteautors.insert( QStringLiteral( "Value" ), QStringLiteral( "NAME" ) );
482
+ cfg_favoriteautors.insert( QStringLiteral( "AllowMulti" ), true );
483
+ cfg_favoriteautors.insert( QStringLiteral( "NofColumns" ), 1 );
484
+ cfg_favoriteautors.insert( QStringLiteral( "AllowNull" ), false );
485
+ cfg_favoriteautors.insert( QStringLiteral( "OrderByValue" ), false );
486
+ cfg_favoriteautors.insert( QStringLiteral( "UseCompleter" ), false );
487
+ w_favoriteauthors.setConfig( cfg_favoriteautors );
488
+ w_favoriteauthors.widget();
489
+ w_favoriteauthors.setEnabled( true );
490
+
491
+ //check if set up nice
492
+ QCOMPARE( w_favoriteauthors.mTableWidget->rowCount(), 6 );
493
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 0, 0 )->text(), QStringLiteral( "Erich Gamma" ) );
494
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 0, 0 )->data( Qt::UserRole ).toString(), QStringLiteral( "1" ) );
495
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 1, 0 )->text(), QStringLiteral( "Richard Helm" ) );
496
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 1, 0 )->data( Qt::UserRole ).toString(), QStringLiteral( "2" ) );
497
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 2, 0 )->text(), QStringLiteral( "Ralph Johnson" ) );
498
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 2, 0 )->data( Qt::UserRole ).toString(), QStringLiteral( "3" ) );
499
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 3, 0 )->text(), QStringLiteral( "John Vlissides" ) );
500
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 3, 0 )->data( Qt::UserRole ).toString(), QStringLiteral( "4" ) );
501
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 4, 0 )->text(), QStringLiteral( "Douglas Adams" ) );
502
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 4, 0 )->data( Qt::UserRole ).toString(), QStringLiteral( "5" ) );
503
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 5, 0 )->text(), QStringLiteral( "Ken Follett" ) );
504
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 5, 0 )->data( Qt::UserRole ).toString(), QStringLiteral( "6" ) );
505
+
506
+ //check if first feature checked correctly [4]
507
+ w_favoriteauthors.setFeature( vl_json->getFeature( 1 ) );
508
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 0, 0 )->text(), QStringLiteral( "Erich Gamma" ) );
509
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 0, 0 )->checkState(), Qt::Unchecked );
510
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 1, 0 )->text(), QStringLiteral( "Richard Helm" ) );
511
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 1, 0 )->checkState(), Qt::Unchecked );
512
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 2, 0 )->text(), QStringLiteral( "Ralph Johnson" ) );
513
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 2, 0 )->checkState(), Qt::Unchecked );
514
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 3, 0 )->text(), QStringLiteral( "John Vlissides" ) );
515
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 3, 0 )->checkState(), Qt::Unchecked );
516
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 4, 0 )->text(), QStringLiteral( "Douglas Adams" ) );
517
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 4, 0 )->checkState(), Qt::Checked );
518
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 5, 0 )->text(), QStringLiteral( "Ken Follett" ) );
519
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 5, 0 )->checkState(), Qt::Unchecked );
520
+
521
+ //check other authors
522
+ w_favoriteauthors.mTableWidget->item( 0, 0 )->setCheckState( Qt::Checked);
523
+ w_favoriteauthors.mTableWidget->item( 2, 0 )->setCheckState( Qt::Checked);
524
+ w_favoriteauthors.mTableWidget->item( 5, 0 )->setCheckState( Qt::Checked);
525
+
526
+ //check if first feature checked correctly 0, 2, 4, 5
527
+ w_favoriteauthors.setFeature( vl_json->getFeature( 1 ) );
528
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 0, 0 )->text(), QStringLiteral( "Erich Gamma" ) );
529
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 0, 0 )->checkState(), Qt::Checked );
530
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 1, 0 )->text(), QStringLiteral( "Richard Helm" ) );
531
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 1, 0 )->checkState(), Qt::Unchecked );
532
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 2, 0 )->text(), QStringLiteral( "Ralph Johnson" ) );
533
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 2, 0 )->checkState(), Qt::Checked );
534
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 3, 0 )->text(), QStringLiteral( "John Vlissides" ) );
535
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 3, 0 )->checkState(), Qt::Unchecked );
536
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 4, 0 )->text(), QStringLiteral( "Douglas Adams" ) );
537
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 4, 0 )->checkState(), Qt::Checked );
538
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 5, 0 )->text(), QStringLiteral( "Ken Follett" ) );
539
+ QCOMPARE( w_favoriteauthors.mTableWidget->item( 5, 0 )->checkState(), Qt::Checked );
540
+
541
+ // check if stored correctly
542
+ vl_json->commitChanges();
543
+ QVariantList expected_vl;
544
+ expected_vl << 0 << 2 << 4 << 5;
545
+ QCOMPARE( vl_json->getFeature( 1 ).attribute( QStringLiteral( "json_content" ) ), expected_vl );
546
+ */
547
+ }
548
+
549
+
453
550
QGSTEST_MAIN ( TestQgsValueRelationWidgetWrapper )
454
551
#include " testqgsvaluerelationwidgetwrapper.moc"
0 commit comments