File indexing completed on 2024-05-05 05:04:13

0001 // SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstraste.com>
0002 // SPDX-License-Identifier: GPL-3.0-or-later
0003 
0004 #include "account/rulesmodel.h"
0005 #include "account/accountmanager.h"
0006 #include "helperreply.h"
0007 #include "mockaccount.h"
0008 
0009 #include <QtTest/QtTest>
0010 
0011 class RulesModelTest : public QObject
0012 {
0013     Q_OBJECT
0014 
0015 private Q_SLOTS:
0016     void initTestCase()
0017     {
0018         account = new MockAccount();
0019         AccountManager::instance().addAccount(account, false);
0020         AccountManager::instance().selectAccount(account);
0021     }
0022 
0023     void cleanupTestCase()
0024     {
0025         AccountManager::instance().removeAccount(account);
0026     }
0027 
0028     void testModel()
0029     {
0030         QUrl url = account->apiUrl(QStringLiteral("/api/v1/instance/rules"));
0031         account->registerGet(url, new TestReply(QStringLiteral("rules.json"), account));
0032 
0033         RulesModel rulesModel;
0034         rulesModel.setAccount(account);
0035         QCOMPARE(rulesModel.rowCount({}), 6);
0036         QCOMPARE(rulesModel.data(rulesModel.index(0, 0), RulesModel::IdRole).toInt(), 1);
0037         QCOMPARE(rulesModel.data(rulesModel.index(0, 0), RulesModel::TextRole).toString(),
0038                  QStringLiteral("Sexually explicit or violent media must be marked as sensitive when posting"));
0039 
0040         QCOMPARE(rulesModel.data(rulesModel.index(1, 0), RulesModel::IdRole).toInt(), 2);
0041         QCOMPARE(rulesModel.data(rulesModel.index(1, 0), RulesModel::TextRole).toString(),
0042                  QStringLiteral("No racism, sexism, homophobia, transphobia, xenophobia, or casteism"));
0043     }
0044 
0045 private:
0046     MockAccount *account;
0047 };
0048 
0049 QTEST_MAIN(RulesModelTest)
0050 #include "rulesmodeltest.moc"