void TestReportHistory::verify_table_line_by_line(ReportTable *table_under_test, QList<QMap<int, QString>> &expected_lines) {
    while (expected_lines.count()) {
        auto expected_line = expected_lines[0];

        bool line_found = true;
        for (auto &row : table_under_test->get_rows()) {
            QCOMPARE(row.row_m.uniqueKeys().count(), expected_line.uniqueKeys().count());

            line_found = true;
            QList<int> expected_keys = expected_line.uniqueKeys();
            for (int expected_key : expected_keys) {
                QString col_str;
                QVariant col = row.row_m.value(expected_key);
                if (col.canConvert<DataEngineDateTime>()) {
                    col_str = col.value<DataEngineDateTime>().str();
                } else {
                    col_str = col.toString();
                }
                //qDebug() << col_str;
                // qDebug() << allowed_values.value(allowed_key);
                if (col_str != expected_line.value(expected_key)) {
                    line_found = false;
                    break;
                }
            }
            if (line_found) {
                break;
            }
        }
        QVERIFY(line_found);
        if (line_found) {
            expected_lines.removeFirst();
        } else {
            break;
        }
    }
    QCOMPARE(expected_lines.count(), 0);
}
Example #2
0
void Session::Request::onAccountPageResult() {
    QNetworkReply *reply = qobject_cast<QNetworkReply*>(QObject::sender());
    if (reply->error()) {
        qDebug() << "Network error in " << __FUNCTION__ << ": " << reply->errorString();
    }
    else {
        // Regexp for getting last visited, guild, etc
        // <strong>(?<attr>.+?):<\/strong><br\/>\s+?(<a href=\"(?<url>.+?)\">(?<content1>.+?)<\/a>|\s+(?<content2>[A-Za-z0-9 ]+?)\s+<\/p>)


        const QByteArray data = reply->readAll();
        const QString avatar = getAccountAvatar(data);
        const QString name = getAccountName(data);
        const auto badges = getAccountBadges(data);
        const int messages = getAccountMessagesUnread(data);

        // Store the account name
        _accountName = name;

        QJsonObject object;
        object.insert("name", name);
        object.insert("avatar_url", avatar);
        object.insert("messages", messages);
        object.insert("badges", QJsonArray::fromStringList(badges.keys()));
        QJsonDocument temp(object);
        emit profileData(temp.toJson());

        // Request Avatar
        if (!avatar.isEmpty()) {
            if (!_avatars.contains(avatar))
                _avatars.append(avatar);
            fetchImage(avatar);
        }
        // Request Badges
        for (const QString &key : badges.uniqueKeys()){
            const QString url = badges.value(key);
            if (url.isEmpty()) continue;
            fetchAccountBadge(key, url);
        }
    }
    reply->deleteLater();
}