File indexing completed on 2024-04-28 05:45:22

0001 /*
0002  * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "views/viewproperties.h"
0008 #include "dolphin_generalsettings.h"
0009 #include "testdir.h"
0010 
0011 #include <QTest>
0012 
0013 class ViewPropertiesTest : public QObject
0014 {
0015     Q_OBJECT
0016 
0017 private Q_SLOTS:
0018     void initTestCase();
0019     void init();
0020     void cleanup();
0021 
0022     void testReadOnlyBehavior();
0023     void testAutoSave();
0024 
0025 private:
0026     bool m_globalViewProps;
0027     TestDir *m_testDir;
0028 };
0029 
0030 void ViewPropertiesTest::initTestCase()
0031 {
0032     QStandardPaths::setTestModeEnabled(true);
0033 }
0034 
0035 void ViewPropertiesTest::init()
0036 {
0037     m_globalViewProps = GeneralSettings::self()->globalViewProps();
0038     GeneralSettings::self()->setGlobalViewProps(false);
0039     GeneralSettings::self()->save();
0040 
0041     // It is mandatory to create the test-directory inside the home-directory
0042     // of the user: ViewProperties does not write inside directories
0043     // outside the home-directory to prevent overwriting other user-settings
0044     // in case if write-permissions are given.
0045     m_testDir = new TestDir(QDir::homePath() + "/.viewPropertiesTest-");
0046 }
0047 
0048 void ViewPropertiesTest::cleanup()
0049 {
0050     delete m_testDir;
0051     m_testDir = nullptr;
0052 
0053     GeneralSettings::self()->setGlobalViewProps(m_globalViewProps);
0054     GeneralSettings::self()->save();
0055 }
0056 
0057 /**
0058  * Test whether only reading properties won't result in creating
0059  * a .directory file when destructing the ViewProperties instance
0060  * and autosaving is enabled.
0061  */
0062 void ViewPropertiesTest::testReadOnlyBehavior()
0063 {
0064     QString dotDirectoryFile = m_testDir->url().toLocalFile() + "/.directory";
0065     QVERIFY(!QFile::exists(dotDirectoryFile));
0066 
0067     QScopedPointer<ViewProperties> props(new ViewProperties(m_testDir->url()));
0068     QVERIFY(props->isAutoSaveEnabled());
0069     const QByteArray sortRole = props->sortRole();
0070     Q_UNUSED(sortRole)
0071     props.reset();
0072 
0073     QVERIFY(!QFile::exists(dotDirectoryFile));
0074 }
0075 
0076 void ViewPropertiesTest::testAutoSave()
0077 {
0078     QString dotDirectoryFile = m_testDir->url().toLocalFile() + "/.directory";
0079     QVERIFY(!QFile::exists(dotDirectoryFile));
0080 
0081     QScopedPointer<ViewProperties> props(new ViewProperties(m_testDir->url()));
0082     QVERIFY(props->isAutoSaveEnabled());
0083     props->setSortRole("someNewSortRole");
0084     props.reset();
0085 
0086     QVERIFY(QFile::exists(dotDirectoryFile));
0087 }
0088 
0089 QTEST_GUILESS_MAIN(ViewPropertiesTest)
0090 
0091 #include "viewpropertiestest.moc"