From f3e9c45ed402429ba593b096eb8c3c459e953349 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 22 Aug 2022 19:46:29 +0100
Subject: [PATCH] Update MessengerWaitForNodes.Progress callback

---
 .../Functors/MessengerWaitForNodes.swift      | 12 ++++------
 .../Functors/MessengerWaitForNodesTests.swift | 23 ++++++++++++++-----
 2 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift b/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift
index 39048a37..8fc11899 100644
--- a/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift
+++ b/Sources/XXMessengerClient/Messenger/Functors/MessengerWaitForNodes.swift
@@ -2,7 +2,7 @@ import XXClient
 import XCTestDynamicOverlay
 
 public struct MessengerWaitForNodes {
-  public typealias Progress = (Double) -> Void
+  public typealias Progress = (NodeRegistrationReport) -> Void
 
   public enum Error: Swift.Error {
     case notLoaded
@@ -28,19 +28,15 @@ extension MessengerWaitForNodes {
         throw Error.notLoaded
       }
 
-      func getProgress(_ report: NodeRegistrationReport) -> Double {
-        min(1, ((report.ratio / targetRatio) * 100).rounded() / 100)
-      }
-
       var report = try cMix.getNodeRegistrationStatus()
       var retries = retries
-      onProgress(getProgress(report))
+      onProgress(report)
 
       while report.ratio < targetRatio && retries > 0 {
         env.sleep(sleepMS)
-        retries -= 1
         report = try cMix.getNodeRegistrationStatus()
-        onProgress(getProgress(report))
+        retries -= 1
+        onProgress(report)
       }
 
       if report.ratio < targetRatio {
diff --git a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift
index 3154758f..ba1fd941 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functors/MessengerWaitForNodesTests.swift
@@ -18,7 +18,7 @@ final class MessengerWaitForNodesTests: XCTestCase {
   }
 
   func testWaitWhenHasTargetRatio() throws {
-    var didProgress: [Double] = []
+    var didProgress: [NodeRegistrationReport] = []
 
     var env: MessengerEnvironment = .unimplemented
     env.ctx.getCMix = {
@@ -37,12 +37,14 @@ final class MessengerWaitForNodesTests: XCTestCase {
       onProgress: { didProgress.append($0) }
     )
 
-    XCTAssertNoDifference(didProgress, [1])
+    XCTAssertNoDifference(didProgress, [
+      NodeRegistrationReport(registered: 8, total: 10)
+    ])
   }
 
   func testWaitForTargetRatio() throws {
     var didSleep: [Int] = []
-    var didProgress: [Double] = []
+    var didProgress: [NodeRegistrationReport] = []
 
     var reports: [NodeRegistrationReport] = [
       .init(registered: 0, total: 10),
@@ -67,12 +69,16 @@ final class MessengerWaitForNodesTests: XCTestCase {
     )
 
     XCTAssertNoDifference(didSleep, [123, 123])
-    XCTAssertNoDifference(didProgress, [0, 0.43, 1])
+    XCTAssertNoDifference(didProgress, [
+      NodeRegistrationReport(registered: 0, total: 10),
+      NodeRegistrationReport(registered: 3, total: 10),
+      NodeRegistrationReport(registered: 8, total: 10),
+    ])
   }
 
   func testWaitTimeout() {
     var didSleep: [Int] = []
-    var didProgress: [Double] = []
+    var didProgress: [NodeRegistrationReport] = []
 
     var reports: [NodeRegistrationReport] = [
       .init(registered: 0, total: 10),
@@ -103,6 +109,11 @@ final class MessengerWaitForNodesTests: XCTestCase {
     }
 
     XCTAssertNoDifference(didSleep, [123, 123, 123])
-    XCTAssertNoDifference(didProgress, [0, 0.43, 0.71, 0.86])
+    XCTAssertNoDifference(didProgress, [
+      NodeRegistrationReport(registered: 0, total: 10),
+      NodeRegistrationReport(registered: 3, total: 10),
+      NodeRegistrationReport(registered: 5, total: 10),
+      NodeRegistrationReport(registered: 6, total: 10),
+    ])
   }
 }
-- 
GitLab