kde-extraapps/amarok/tests/importers/TestSimpleImporterConfigWidget.cpp

250 lines
7.9 KiB
C++
Raw Normal View History

2015-01-31 00:30:50 +00:00
/****************************************************************************************
* Copyright (c) 2013 Konrad Zemek <konrad.zemek@gmail.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. *
* *
* This program is distributed in the hope that it will be useful, but WITHOUT ANY *
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A *
* PARTICULAR PURPOSE. See the GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License along with *
* this program. If not, see <http://www.gnu.org/licenses/>. *
****************************************************************************************/
#include "TestSimpleImporterConfigWidget.h"
#include "importers/SimpleImporterConfigWidget.h"
#include <QComboBox>
#include <QLabel>
#include <QLineEdit>
#include <QSpinBox>
#include <qtest_kde.h>
QTEST_KDEMAIN( TestSimpleImporterConfigWidget, GUI )
using namespace StatSyncing;
void
TestSimpleImporterConfigWidget::constructorShouldCreateTargetNameRow()
{
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
const QLabel *label = 0;
const QLineEdit *field = 0;
foreach( const QObject *obj, widget.children() )
{
if( qobject_cast<const QLabel*>( obj ) )
label = qobject_cast<const QLabel*>( obj );
else if( qobject_cast<const QLineEdit*>( obj ) )
field = qobject_cast<const QLineEdit*>( obj );
}
QVERIFY( label );
QVERIFY( field );
QVERIFY( !label->text().isEmpty() );
QCOMPARE( label->buddy(), field );
}
void
TestSimpleImporterConfigWidget::targetNameShouldBeSetToDefaultValue()
{
const QString targetName = "testTargetName";
SimpleImporterConfigWidget widget( targetName, QVariantMap() );
const QLineEdit *field = 0;
foreach( const QObject *obj, widget.children() )
if( qobject_cast<const QLineEdit*>( obj ) )
field = qobject_cast<const QLineEdit*>( obj );
QVERIFY( field );
QCOMPARE( field->text(), targetName );
}
void
TestSimpleImporterConfigWidget::targetNameShouldBeSetToConfigValueIfExists()
{
const QString targetName = "nameOverride";
QVariantMap cfg;
cfg.insert( "name", targetName );
SimpleImporterConfigWidget widget( "testTargetName", cfg );
const QLineEdit *field = 0;
foreach( const QObject *obj, widget.children() )
if( qobject_cast<const QLineEdit*>( obj ) )
field = qobject_cast<const QLineEdit*>( obj );
QVERIFY( field );
QCOMPARE( field->text(), targetName );
}
void
TestSimpleImporterConfigWidget::addFieldShouldTakeFieldOwnership()
{
QPointer<QWidget> lineEdit( new QLineEdit() );
{
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
widget.addField( "configVal", "label", lineEdit.data(), "text" );
QVERIFY( !lineEdit.isNull() );
}
QVERIFY( lineEdit.isNull() );
}
void
TestSimpleImporterConfigWidget::addFieldShouldAddNewRow()
{
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
QWidget *field = new QLineEdit;
widget.addField( "configVal", "testLabel", field, "text" );
bool foundField = false;
bool foundLabel = false;
foreach( const QObject *obj, widget.children() )
{
if( obj == field )
foundField = true;
else if( const QLabel *candidate = qobject_cast<const QLabel*>( obj ) )
if( candidate->text() == "testLabel" )
foundLabel = true;
}
QVERIFY( foundField );
QVERIFY( foundLabel );
}
void
TestSimpleImporterConfigWidget::addFieldShouldAssociateLabelWithField()
{
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
QWidget *field = new QLineEdit;
widget.addField( "configVal", "testLabel", field, "text" );
const QLabel *label = 0;
foreach( const QObject *obj, widget.children() )
if( const QLabel *candidate = qobject_cast<const QLabel*>( obj ) )
if( candidate->text() == "testLabel" )
label = candidate;
QVERIFY( label );
QCOMPARE( label->buddy(), field );
}
void
TestSimpleImporterConfigWidget::addFieldShouldNotBreakOnNullField()
{
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
widget.addField( "configVal", "testLabel", 0, "text" );
}
void
TestSimpleImporterConfigWidget::addedFieldShouldNotModifyFieldValueIfConfigDoesNotExist()
{
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
const QString value = "myValue";
QLineEdit *field = new QLineEdit( value );
widget.addField( "configVal", "testLabel", field, "text" );
QCOMPARE( field->text(), value );
}
void
TestSimpleImporterConfigWidget::addedFieldShouldBeSetToConfigValueIfExists()
{
const QString configName = "configVal";
const QString value = "myValue";
QVariantMap cfg;
cfg.insert( configName, value );
SimpleImporterConfigWidget widget( "testTargetName", cfg );
QLineEdit *field = new QLineEdit( "overrideMe" );
widget.addField( configName, "testLabel", field, "text" );
QCOMPARE( field->text(), value );
}
void
TestSimpleImporterConfigWidget::addedFieldShouldNotBreakOnValueSetIfPropertyDoesNotExist()
{
const QString configName = "configVal";
QVariantMap cfg;
cfg.insert( configName, "value" );
SimpleImporterConfigWidget widget( "testTargetName", cfg );
widget.addField( configName, "testLabel", new QLineEdit, "There's No Such Property" );
}
void
TestSimpleImporterConfigWidget::configShouldContainName()
{
const QString name = "testTargetName";
SimpleImporterConfigWidget widget( name, QVariantMap() );
QCOMPARE( widget.config().value( "name" ).toString(), name );
}
void
TestSimpleImporterConfigWidget::configShouldNotBreakOnNullField()
{
const QString configName = "configVal";
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
widget.addField( configName, "testLabel", 0, "text" );
QVERIFY( widget.config().value( configName ).toString().isEmpty() );
}
void
TestSimpleImporterConfigWidget::configShouldContainAddedFieldsValues()
{
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
QLineEdit *lineEdit = new QLineEdit;
lineEdit->setText( "textValue" );
QSpinBox *spinBox = new QSpinBox;
spinBox->setValue( 57 );
QComboBox *comboBox = new QComboBox;
comboBox->insertItem( 0, "item1" );
comboBox->insertItem( 1, "item2" );
comboBox->insertItem( 2, "item3" );
comboBox->setCurrentIndex( 1 );
widget.addField( "text", "text", lineEdit, "text" );
widget.addField( "int", "int", spinBox, "value" );
widget.addField( "combo", "combo", comboBox, "currentText" );
const QVariantMap cfg = widget.config();
QCOMPARE( cfg.value( "text" ).toString(), QString( "textValue" ) );
QCOMPARE( cfg.value( "int" ).toInt(), 57 );
QCOMPARE( cfg.value( "combo" ).toString(), QString( "item2" ) );
}
void
TestSimpleImporterConfigWidget::configShouldNotBreakOnNonexistentProperty()
{
const QString configName = "configName";
SimpleImporterConfigWidget widget( "testTargetName", QVariantMap() );
widget.addField( configName, "label", new QLineEdit, "No property" );
QVERIFY( widget.config().value( configName ).toString().isEmpty() );
}