mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-23 18:32:49 +00:00

once upon a time it was either part of it or was separated from it Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
115 lines
4.1 KiB
C++
115 lines
4.1 KiB
C++
/* This file is part of the KDE libraries
|
|
Copyright (c) 2012 David Faure <faure@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License or ( at
|
|
your option ) version 3 or, at the discretion of KDE e.V. ( which shall
|
|
act as a proxy as in section 14 of the GPLv3 ), any later version.
|
|
|
|
This library 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
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include <ktempdir.h>
|
|
#include <qtest_kde.h>
|
|
|
|
#include <QDialog>
|
|
#include <QLineEdit>
|
|
#include <QMenu>
|
|
#include <knameandurlinputdialog.h>
|
|
#include <kactioncollection.h>
|
|
#include <kdebug.h>
|
|
#include <knewfilemenu.h>
|
|
|
|
class KNewFileMenuTest : public QObject
|
|
{
|
|
Q_OBJECT
|
|
private Q_SLOTS:
|
|
void initTestCase()
|
|
{
|
|
m_first = true;
|
|
}
|
|
|
|
void cleanupTestCase()
|
|
{
|
|
}
|
|
|
|
void test_data()
|
|
{
|
|
QTest::addColumn<QString>("actionText");
|
|
QTest::addColumn<QString>("typedFilename");
|
|
QTest::addColumn<QString>("expectedFilename");
|
|
|
|
QTest::newRow("text file") << "Text File" << "tmp_knewfilemenutest.txt" << "tmp_knewfilemenutest.txt";
|
|
QTest::newRow("text file with jpeg extension") << "Text File" << "foo.jpg" << "foo.jpg.txt";
|
|
QTest::newRow("url desktop file") << "Link to Location " << "tmp_link.desktop" << "tmp_link.desktop";
|
|
QTest::newRow("url desktop file no extension") << "Link to Location " << "tmp_link" << "tmp_link";
|
|
QTest::newRow("url desktop file .pl extension") << "Link to Location " << "tmp_link.pl" << "tmp_link.pl.desktop";
|
|
QTest::newRow("symlink") << "Basic link" << "thelink" << "thelink";
|
|
}
|
|
|
|
void test()
|
|
{
|
|
QFETCH(QString, actionText);
|
|
QFETCH(QString, typedFilename);
|
|
QFETCH(QString, expectedFilename);
|
|
|
|
QWidget parentWidget;
|
|
KComponentData comp("foo");
|
|
KActionCollection coll(this, comp);
|
|
KNewFileMenu menu(&coll, "the_action", this);
|
|
menu.setModal(false);
|
|
menu.setParentWidget(&parentWidget);
|
|
KUrl u(m_tmpDir.name());
|
|
KUrl::List lst(u);
|
|
menu.setPopupFiles(lst);
|
|
menu.checkUpToDate();
|
|
QAction* action = coll.action("the_action");
|
|
QVERIFY(action);
|
|
QAction* textAct = 0;
|
|
Q_FOREACH(QAction* act, action->menu()->actions()) {
|
|
qDebug() << act << act->text() << act->data();
|
|
if (act->text().contains(actionText))
|
|
textAct = act;
|
|
}
|
|
if (!textAct && m_first) {
|
|
const QString err = "action with text" + actionText + "not found. kde-baseapps not installed?";
|
|
QSKIP(qPrintable(err), SkipAll);
|
|
}
|
|
textAct->trigger();
|
|
QDialog* dialog = parentWidget.findChild<QDialog *>();
|
|
QVERIFY(dialog);
|
|
KNameAndUrlInputDialog* nauiDialog = qobject_cast<KNameAndUrlInputDialog *>(dialog);
|
|
if (nauiDialog) {
|
|
nauiDialog->setSuggestedName(typedFilename);
|
|
nauiDialog->setSuggestedUrl(KUrl("file:///etc"));
|
|
} else {
|
|
QLineEdit* lineEdit = dialog->findChild<QLineEdit *>();
|
|
QVERIFY(lineEdit);
|
|
lineEdit->setText(typedFilename);
|
|
}
|
|
dialog->accept();
|
|
QSignalSpy spy(&menu, SIGNAL(fileCreated(KUrl)));
|
|
QTest::kWaitForSignal(&menu, SIGNAL(fileCreated(KUrl)));
|
|
const KUrl url = spy.at(0).at(0).value<KUrl>();
|
|
const QString path = m_tmpDir.name() + expectedFilename;
|
|
QCOMPARE(url.toLocalFile(), path);
|
|
QFile::remove(path);
|
|
m_first = false;
|
|
}
|
|
private:
|
|
KTempDir m_tmpDir;
|
|
bool m_first;
|
|
};
|
|
|
|
QTEST_KDEMAIN( KNewFileMenuTest, GUI )
|
|
|
|
#include "knewfilemenutest.moc"
|