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); }
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(); }