From cae98b7d7d6af57fa19122fde865dbae9223b213 Mon Sep 17 00:00:00 2001
From: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
Date: Thu, 3 May 2018 17:31:31 -0400
Subject: [PATCH] invitations: do not count banned contacts

Exclude banned contacts from total number of pending invitations.

Change-Id: I62a58de8b499719e5c9dd31f1df84c57ed2c023b
Reviewed-by: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
---
 src/contactmodel.cpp        |  3 ++-
 test/contactmodeltester.cpp | 11 +++++++++++
 test/contactmodeltester.h   |  4 ++++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp
index 5d282450..51e1fc0f 100644
--- a/src/contactmodel.cpp
+++ b/src/contactmodel.cpp
@@ -181,7 +181,8 @@ ContactModel::pendingRequestCount() const
     int pendingRequestCount = 0;
     auto i = std::for_each(pimpl_->contacts.begin(), pimpl_->contacts.end(),
         [&pendingRequestCount] (const auto& c) {
-            pendingRequestCount += static_cast<int>(c.second.profileInfo.type == profile::Type::PENDING);
+            if (!c.second.isBanned)
+                pendingRequestCount += static_cast<int>(c.second.profileInfo.type == profile::Type::PENDING);
         });
     return pendingRequestCount;
 }
diff --git a/test/contactmodeltester.cpp b/test/contactmodeltester.cpp
index fa0cd4b9..83193187 100644
--- a/test/contactmodeltester.cpp
+++ b/test/contactmodeltester.cpp
@@ -237,6 +237,17 @@ ContactModelTester::testCountPendingRequests()
     CPPUNIT_ASSERT_EQUAL(accInfo_.contactModel->pendingRequestCount(), 1);
 }
 
+void
+ContactModelTester::testCountPendingRequestsWithBlockedContact()
+{
+    CPPUNIT_ASSERT(accInfo_.contactModel->hasPendingRequests());
+    CPPUNIT_ASSERT_EQUAL(accInfo_.contactModel->pendingRequestCount(), 1);
+    CPPUNIT_ASSERT_NO_THROW(accInfo_.contactModel->getContact("pending0"));
+    accInfo_.contactModel->removeContact("pending0", true);
+    CPPUNIT_ASSERT(!accInfo_.contactModel->hasPendingRequests());
+    CPPUNIT_ASSERT_EQUAL(accInfo_.contactModel->pendingRequestCount(), 0);
+}
+
 void
 ContactModelTester::tearDown()
 {
diff --git a/test/contactmodeltester.h b/test/contactmodeltester.h
index f32510f6..4ea98736 100644
--- a/test/contactmodeltester.h
+++ b/test/contactmodeltester.h
@@ -112,6 +112,10 @@ public:
      * Count contact requests
      */
     void testCountPendingRequests();
+    /**
+     * Count contact requests when banned contacts exists
+     */
+    void testCountPendingRequestsWithBlockedContact();
     /**
      * Method automatically called after each test by CppUnit
      */
-- 
GitLab