kdenote/lib/tests/test_metadata.cpp

78 lines
2.3 KiB
C++

#include <QObject>
#include <QTest>
#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"