#include #include #include "denote_metadata.h" class TestMetadata : public QObject { Q_OBJECT private Q_SLOTS: void parseBasic() { auto m = Denote::parseFilename( QStringLiteral("/home/user/doc/20240315T120000--my-test-note__journal_daily.md")); QCOMPARE(m.identifier, QStringLiteral("20240315T120000")); QCOMPARE(m.title, QStringLiteral("my test note")); QCOMPARE(m.tags, QStringList({QStringLiteral("journal"), QStringLiteral("daily")})); QVERIFY(m.signature.isEmpty()); QVERIFY(m.isValid()); } void parseWithSignature() { auto m = Denote::parseFilename( QStringLiteral("/doc/20240315T120000==1a--my-note__tag1.org")); QCOMPARE(m.identifier, QStringLiteral("20240315T120000")); QCOMPARE(m.signature, QStringLiteral("1a")); QCOMPARE(m.title, QStringLiteral("my note")); QCOMPARE(m.tags, QStringList({QStringLiteral("tag1")})); } void parseNoTags() { auto m = Denote::parseFilename( QStringLiteral("/doc/20240101T090000--some-title.md")); QCOMPARE(m.identifier, QStringLiteral("20240101T090000")); QCOMPARE(m.title, QStringLiteral("some title")); QVERIFY(m.tags.isEmpty()); } void parseNonDenote() { auto m = Denote::parseFilename(QStringLiteral("/doc/regular-file.txt")); QVERIFY(!m.isValid()); } void slugifyBasic() { QCOMPARE(Denote::slugifyTitle(QStringLiteral("My Test Title")), QStringLiteral("my-test-title")); QCOMPARE(Denote::slugifyTitle(QStringLiteral("Hello_World!")), QStringLiteral("hello-world")); } void tagValidation() { QVERIFY(Denote::isValidTag(QStringLiteral("journal"))); QVERIFY(Denote::isValidTag(QStringLiteral("tag123"))); QVERIFY(!Denote::isValidTag(QStringLiteral("Tag"))); QVERIFY(!Denote::isValidTag(QStringLiteral("has space"))); QVERIFY(!Denote::isValidTag(QStringLiteral(""))); } void creationDate() { auto m = Denote::parseFilename( QStringLiteral("/doc/20240315T143022--title.md")); QDateTime expected(QDate(2024, 3, 15), QTime(14, 30, 22)); QCOMPARE(m.creationDate(), expected); } }; QTEST_MAIN(TestMetadata) #include "test_metadata.moc"