1
0
mirror of https://github.com/qgis/QGIS.git synced 2025-03-28 00:04:04 -04:00
QGIS/tests/src/gui/testqgsvaluerelationwidgetwrapper.cpp

111 lines
3.6 KiB
C++

/***************************************************************************
testqgsvaluerelationwidgetwrapper.cpp
--------------------------------------
Date : 21 07 2017
Copyright : (C) 2017 Paul Blottiere
Email : paul dot blottiere at oslandia dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "qgstest.h"
#include <QScrollBar>
#include <editorwidgets/core/qgseditorwidgetregistry.h>
#include <qgsapplication.h>
#include <qgsproject.h>
#include <qgsvectorlayer.h>
#include "qgseditorwidgetwrapper.h"
#include <editorwidgets/qgsvaluerelationwidgetwrapper.h>
#include "qgsgui.h"
class TestQgsValueRelationWidgetWrapper : public QObject
{
Q_OBJECT
public:
TestQgsValueRelationWidgetWrapper() = default;
private slots:
void initTestCase(); // will be called before the first testfunction is executed.
void cleanupTestCase(); // will be called after the last testfunction was executed.
void init(); // will be called before each testfunction is executed.
void cleanup(); // will be called after every testfunction.
void testScrollBarUnlocked();
};
void TestQgsValueRelationWidgetWrapper::initTestCase()
{
QgsApplication::init();
QgsApplication::initQgis();
QgsGui::editorWidgetRegistry()->initEditors();
}
void TestQgsValueRelationWidgetWrapper::cleanupTestCase()
{
QgsApplication::exitQgis();
}
void TestQgsValueRelationWidgetWrapper::init()
{
}
void TestQgsValueRelationWidgetWrapper::cleanup()
{
}
void TestQgsValueRelationWidgetWrapper::testScrollBarUnlocked()
{
// create a vector layer
QgsVectorLayer vl1( QStringLiteral( "LineString?crs=epsg:3111&field=pk:int&field=fk|:int" ), QStringLiteral( "vl1" ), QStringLiteral( "memory" ) );
QgsProject::instance()->addMapLayer( &vl1, false, false );
// build a value relation widget wrapper
QListWidget lw;
QWidget editor;
QgsValueRelationWidgetWrapper w( &vl1, 0, &editor, nullptr );
w.setEnabled( true );
w.initWidget( &lw );
// add an item virtually
QListWidgetItem item;
item.setText( QStringLiteral( "MyText" ) );
w.mListWidget->addItem( &item );
QCOMPARE( w.mListWidget->item( 0 )->text(), QString( "MyText" ) );
// when the widget wrapper is enabled, the container should be enabled
// as well as items
w.setEnabled( true );
QCOMPARE( w.widget()->isEnabled(), true );
bool itemEnabled = w.mListWidget->item( 0 )->flags() & Qt::ItemIsEnabled;
QCOMPARE( itemEnabled, true );
// when the widget wrapper is disabled, the container should still be enabled
// to keep the scrollbar available but items should be disabled to avoid
// edition
w.setEnabled( false );
itemEnabled = w.mListWidget->item( 0 )->flags() & Qt::ItemIsEnabled;
QCOMPARE( itemEnabled, false );
QCOMPARE( w.widget()->isEnabled(), true );
// recheck after re-enabled
w.setEnabled( true );
QCOMPARE( w.widget()->isEnabled(), true );
itemEnabled = w.mListWidget->item( 0 )->flags() & Qt::ItemIsEnabled;
QCOMPARE( itemEnabled, true );
}
QGSTEST_MAIN( TestQgsValueRelationWidgetWrapper )
#include "testqgsvaluerelationwidgetwrapper.moc"