From 81a1029b6ffc392910b4cb153e24a2b820ca9df6 Mon Sep 17 00:00:00 2001
From: Klaus Fischer <klaus.fischer@eloware.com>
Date: Tue, 14 Jun 2022 16:30:16 +0200
Subject: [PATCH] Implementing FluentApi Unit test with Moq, Sender

---
 FitConnect/Client.cs                              | 15 ++++++++++++---
 FitConnect/FluentSender.cs                        |  2 +-
 .../{UnitTest1.cs => FluentSenderTests.cs}        |  7 ++++---
 3 files changed, 17 insertions(+), 7 deletions(-)
 rename FluentApiTest/{UnitTest1.cs => FluentSenderTests.cs} (83%)

diff --git a/FitConnect/Client.cs b/FitConnect/Client.cs
index c7382a07..81bceacd 100644
--- a/FitConnect/Client.cs
+++ b/FitConnect/Client.cs
@@ -19,18 +19,27 @@ public class Client {
     public FluentSender Sender { get; }
     public FluentSubscriber Subscriber { get; }
 
+    /// <summary>
+    /// FitConnect Client
+    /// </summary>
+    /// <param name="endpoints"></param>
+    /// <param name="clientId"></param>
+    /// <param name="clientSecret"></param>
+    /// <param name="senderCertificate"></param>
+    /// <param name="receiverCertificate"></param>
+    /// <param name="logger"></param>
+    /// <param name="container"></param>
     public Client(FitConnectEndpoints endpoints,
         string? clientId = null, string? clientSecret = null,
         X509Certificate2? senderCertificate = null,
         X509Certificate2? receiverCertificate = null,
         ILogger? logger = null, IContainer? container = null) {
-        
-        container = container ?? DiContainer.GetContainer(endpoints,
+        container ??= DiContainer.GetContainer(endpoints,
             senderCertificate, receiverCertificate, logger);
         var oAuthService = container.Resolve<IOAuthService>();
         var submissionService = container.Resolve<ISubmissionService>();
         var routeService = container.Resolve<IRouteService>();
-        
+
         ClientId = clientId;
         ClientSecret = clientSecret;
         _senderCertificate = senderCertificate;
diff --git a/FitConnect/FluentSender.cs b/FitConnect/FluentSender.cs
index af074993..3f49cafd 100644
--- a/FitConnect/FluentSender.cs
+++ b/FitConnect/FluentSender.cs
@@ -77,7 +77,7 @@ public class FluentSender : Sender, IFluentApi<FluentSender> {
                 "Can only create a submission after authentication");
         Submission = submission;
 
-        if (Submission.Destination.Valid)
+        if (!Submission.Destination.Valid)
             throw new ArgumentException("Not all destination values are set");
 
         var leikaKey = Submission.Destination.LeikaKey;
diff --git a/FluentApiTest/UnitTest1.cs b/FluentApiTest/FluentSenderTests.cs
similarity index 83%
rename from FluentApiTest/UnitTest1.cs
rename to FluentApiTest/FluentSenderTests.cs
index 690d8c0b..ef66ce85 100644
--- a/FluentApiTest/UnitTest1.cs
+++ b/FluentApiTest/FluentSenderTests.cs
@@ -23,7 +23,8 @@ public class FluentSenderTests {
         var builder = new ContainerBuilder();
 
         var routeService = new Mock<IRouteService>();
-        routeService.Setup(r => r.GetDestinationIdAsync("", "", "", ""))
+        routeService.Setup(r => r.GetDestinationIdAsync(It.IsAny<string>(), It.IsAny<string>(),
+                It.IsAny<string>(), It.IsAny<string?>()))
             .Returns(() => Task.Run(() => "destination"));
 
         builder.Register(c => new Mock<IOAuthService>().Object).As<IOAuthService>();
@@ -42,12 +43,12 @@ public class FluentSenderTests {
     }
 
     [Test]
-    public void Test1() {
+    public void FluentSender_ShouldNotThrowAnError_MockingServices() {
         _client.Sender
             .Authenticate(clientId, clientSecret)
             .CreateSubmission(new Submission {
                 Attachments = new List<Attachment>(), ServiceType = new ServiceType(),
-                DestinationId = "93493"
+                Destination = new Destination { LeikaKey = "09929292772", AreaId = "948488" }
             })
             .UploadAttachments()
             .SendSubmission(new Metadata(), new Data());
-- 
GitLab