/**************************************************************************************** * Copyright (c) 2013 Konrad Zemek * * * * 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 . * ****************************************************************************************/ #include "TestSimpleImporterConfigWidget.h" #include "importers/SimpleImporterConfigWidget.h" #include #include #include #include #include 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( obj ) ) label = qobject_cast( obj ); else if( qobject_cast( obj ) ) field = qobject_cast( 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( obj ) ) field = qobject_cast( 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( obj ) ) field = qobject_cast( obj ); QVERIFY( field ); QCOMPARE( field->text(), targetName ); } void TestSimpleImporterConfigWidget::addFieldShouldTakeFieldOwnership() { QPointer 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( 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( 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() ); }