File indexing completed on 2025-02-16 13:03:38
0001 /* 0002 SPDX-FileCopyrightText: 2017 James D. Smith <smithjd15@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "usermetadatawritertest.h" 0008 #include "indexerextractortestsconfig.h" 0009 #include "usermetadata.h" 0010 0011 #include <QTest> 0012 #include <QFile> 0013 0014 #define TEST_FILENAME "writertest.txt" 0015 #define TEST_SYMLINK "dangling_symlink" 0016 0017 using namespace KFileMetaData; 0018 0019 QString UserMetaDataWriterTest::testFilePath(const QString& fileName) const 0020 { 0021 return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + fileName; 0022 } 0023 0024 void UserMetaDataWriterTest::initTestCase() 0025 { 0026 QFile testFile(testFilePath("plain_text_file.txt")); 0027 QFile writerTestFile(testFilePath(TEST_FILENAME)); 0028 QFile::copy(testFilePath("plain_text_file.txt"), testFilePath(TEST_FILENAME)); 0029 0030 QFile::link(testFilePath("invalid_target"), testFilePath(TEST_SYMLINK)); 0031 } 0032 0033 void UserMetaDataWriterTest::test() 0034 { 0035 0036 KFileMetaData::UserMetaData md(testFilePath(TEST_FILENAME)); 0037 QVERIFY(md.isSupported()); 0038 0039 // Tags 0040 md.setTags(QStringList() << QStringLiteral("this/is/a/test/tag")); 0041 QCOMPARE(md.tags().at(0), QStringLiteral("this/is/a/test/tag")); 0042 QVERIFY(md.queryAttributes(UserMetaData::Attribute::Any) & UserMetaData::Attribute::Tags); 0043 QVERIFY(md.queryAttributes(UserMetaData::Attribute::All) & UserMetaData::Attribute::Tags); 0044 QVERIFY(md.queryAttributes(UserMetaData::Attribute::Tags) & UserMetaData::Attribute::Tags); 0045 QVERIFY(!(md.queryAttributes(UserMetaData::Attribute::Rating) & UserMetaData::Attribute::Tags)); 0046 md.setTags(QStringList()); 0047 QVERIFY(!md.hasAttribute(QStringLiteral("xdg.tags"))); 0048 QVERIFY(!(md.queryAttributes(UserMetaData::Attribute::Tags) & UserMetaData::Attribute::Tags)); 0049 0050 // Rating 0051 md.setRating(3); 0052 QCOMPARE(md.rating(), 3); 0053 QVERIFY(md.queryAttributes(UserMetaData::Attribute::All) & UserMetaData::Attribute::Rating); 0054 QVERIFY(md.queryAttributes(UserMetaData::Attribute::Rating) & UserMetaData::Attribute::Rating); 0055 md.setRating(0); 0056 QVERIFY(!md.hasAttribute(QStringLiteral("baloo.rating"))); 0057 QVERIFY(!(md.queryAttributes(UserMetaData::Attribute::All) & UserMetaData::Attribute::Rating)); 0058 QVERIFY(!(md.queryAttributes(UserMetaData::Attribute::Rating) & UserMetaData::Attribute::Rating)); 0059 0060 // Comment 0061 md.setUserComment(QStringLiteral("this is a test comment")); 0062 QCOMPARE(md.userComment(), QStringLiteral("this is a test comment")); 0063 md.setUserComment(QString()); 0064 QVERIFY(!md.hasAttribute(QStringLiteral("xdg.comment"))); 0065 0066 // Origin url 0067 md.setOriginUrl(QUrl("http://this.is.a.test.website.local")); 0068 QCOMPARE(md.originUrl(), QUrl("http://this.is.a.test.website.local")); 0069 md.setOriginUrl(QUrl()); 0070 QVERIFY(!md.hasAttribute(QStringLiteral("xdg.origin.url"))); 0071 0072 // Origin e-mail subject 0073 md.setOriginEmailSubject(QStringLiteral("this is a test e-mail subject")); 0074 QCOMPARE(md.originEmailSubject(), QStringLiteral("this is a test e-mail subject")); 0075 md.setOriginEmailSubject(QString()); 0076 QVERIFY(!md.hasAttribute(QStringLiteral("xdg.origin.email.subject"))); 0077 0078 // Origin e-mail sender 0079 md.setOriginEmailSender(QStringLiteral("Blue Bear")); 0080 QCOMPARE(md.originEmailSender(), QStringLiteral("Blue Bear")); 0081 md.setOriginEmailSender(QString()); 0082 QVERIFY(!md.hasAttribute(QStringLiteral("xdg.origin.email.sender"))); 0083 0084 // Origin e-mail message id 0085 md.setOriginEmailMessageId(QStringLiteral("19991231235959.52234.24C26516HHBTF1C4")); 0086 QCOMPARE(md.originEmailMessageId(), QStringLiteral("19991231235959.52234.24C26516HHBTF1C4")); 0087 md.setOriginEmailMessageId(QString()); 0088 QVERIFY(!md.hasAttribute(QStringLiteral("xdg.origin.email.message-id"))); 0089 0090 // Attribute 0091 md.setAttribute(QStringLiteral("test.attribute"), QStringLiteral("attribute")); 0092 QCOMPARE(md.attribute(QStringLiteral("test.attribute")), QStringLiteral("attribute")); 0093 md.setAttribute(QStringLiteral("test.attribute2"), QStringLiteral("attribute2")); 0094 QCOMPARE(md.attribute(QStringLiteral("test.attribute2")), QStringLiteral("attribute2")); 0095 QVERIFY(md.queryAttributes(UserMetaData::Attribute::All) & UserMetaData::Attribute::Other); 0096 QVERIFY(md.queryAttributes(UserMetaData::Attribute::Other) & UserMetaData::Attribute::Other); 0097 md.setAttribute(QStringLiteral("test.attribute"), QString()); 0098 QVERIFY(!md.hasAttribute(QStringLiteral("test.attribute"))); 0099 QVERIFY(md.queryAttributes(UserMetaData::Attribute::All) & UserMetaData::Attribute::Other); 0100 QVERIFY(md.queryAttributes(UserMetaData::Attribute::Other) & UserMetaData::Attribute::Other); 0101 md.setAttribute(QStringLiteral("test.attribute2"), QString()); 0102 QVERIFY(!md.hasAttribute(QStringLiteral("test.attribute2"))); 0103 0104 // Check for side effects of calling sequence 0105 QVERIFY(!md.hasAttribute(QStringLiteral("test.check_contains"))); 0106 md.setAttribute(QStringLiteral("test.check_contains"), QStringLiteral("dummy")); 0107 QVERIFY(md.hasAttribute(QStringLiteral("test.check_contains"))); 0108 md.setAttribute(QStringLiteral("test.check_contains"), QString()); 0109 QVERIFY(!md.hasAttribute(QStringLiteral("test.check_contains"))); 0110 } 0111 0112 0113 void UserMetaDataWriterTest::testDanglingSymlink() 0114 { 0115 KFileMetaData::UserMetaData md(testFilePath(TEST_SYMLINK)); 0116 QVERIFY(md.queryAttributes(UserMetaData::Attribute::All) == UserMetaData::Attribute::None); 0117 } 0118 0119 void UserMetaDataWriterTest::cleanupTestCase() 0120 { 0121 QFile::remove(testFilePath(TEST_FILENAME)); 0122 QFile::remove(testFilePath(TEST_SYMLINK)); 0123 } 0124 0125 QTEST_GUILESS_MAIN(UserMetaDataWriterTest) 0126 0127 #include "moc_usermetadatawritertest.cpp"