78 lines
2.3 KiB
C++
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"
|