From 95fd91cf040cc65d9b67f136a7bf1276547e798e Mon Sep 17 00:00:00 2001
From: Gabriela Trutan <gabriela.trutan@sonarsource.com>
Date: Wed, 18 Dec 2024 15:25:34 +0100
Subject: [PATCH] SLVS-1721 Fix "Use shared configuration" button not shown
 after unbind (#5907)

---
 .../ManageBindingViewModelTests.cs            | 40 ++++++++++++++++++-
 .../ManageBinding/ManageBindingViewModel.cs   | 10 ++---
 2 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/src/ConnectedMode.UnitTests/UI/ManageBinding/ManageBindingViewModelTests.cs b/src/ConnectedMode.UnitTests/UI/ManageBinding/ManageBindingViewModelTests.cs
index eb524d86af..a3ece5229c 100644
--- a/src/ConnectedMode.UnitTests/UI/ManageBinding/ManageBindingViewModelTests.cs
+++ b/src/ConnectedMode.UnitTests/UI/ManageBinding/ManageBindingViewModelTests.cs
@@ -312,6 +312,42 @@ public void IsUseSharedBindingButtonEnabled_ReturnsTrueOnlyWhenNoBindingIsInProg
         testSubject.IsUseSharedBindingButtonEnabled.Should().Be(expectedResult);
     }
 
+    [TestMethod]
+    public void IsUseSharedBindingButtonVisible_SharedBindingConfigExistsAndProjectIsBound_ReturnsFalse()
+    {
+        testSubject.SharedBindingConfigModel = new SharedBindingConfigModel();
+        testSubject.BoundProject = serverProject;
+
+        testSubject.IsUseSharedBindingButtonVisible.Should().BeFalse();
+    }
+
+    [TestMethod]
+    public void IsUseSharedBindingButtonVisible_SharedBindingConfigExistsAndProjectIsUnbound_ReturnsTrue()
+    {
+        testSubject.SharedBindingConfigModel = new SharedBindingConfigModel();
+        testSubject.BoundProject = null;
+
+        testSubject.IsUseSharedBindingButtonVisible.Should().BeTrue();
+    }
+
+    [TestMethod]
+    public void IsUseSharedBindingButtonVisible_SharedBindingConfigDoesNotExistAndProjectIsBound_ReturnsFalse()
+    {
+        testSubject.SharedBindingConfigModel = null;
+        testSubject.BoundProject = serverProject;
+
+        testSubject.IsUseSharedBindingButtonVisible.Should().BeFalse();
+    }
+
+    [TestMethod]
+    public void IsUseSharedBindingButtonVisible_SharedBindingConfigDoesNotExistAndProjectIsUnbound_ReturnsFalse()
+    {
+        testSubject.SharedBindingConfigModel = null;
+        testSubject.BoundProject = null;
+
+        testSubject.IsUseSharedBindingButtonVisible.Should().BeFalse();
+    }
+
     [TestMethod]
     public void SharedBindingConfigModel_Set_RaisesEvents()
     {
@@ -564,13 +600,13 @@ await progressReporterViewModel.Received(1)
     }
 
     [TestMethod]
-    public async Task InitializeDataAsync_WhenBound_DoesNotChecksForSharedBindingAndReportsProgress()
+    public async Task InitializeDataAsync_WhenBound_ChecksForSharedBindingAndReportsProgress()
     {
         testSubject.BoundProject = serverProject;
 
         await testSubject.InitializeDataAsync();
 
-        await progressReporterViewModel.DidNotReceive()
+        await progressReporterViewModel.Received(1)
             .ExecuteTaskWithProgressAsync(
                 Arg.Is<TaskToPerformParams<AdapterResponse>>(x =>
                     x.TaskToPerform == testSubject.CheckForSharedBindingAsync &&
diff --git a/src/ConnectedMode/UI/ManageBinding/ManageBindingViewModel.cs b/src/ConnectedMode/UI/ManageBinding/ManageBindingViewModel.cs
index 34870826e8..b0718a8a3e 100644
--- a/src/ConnectedMode/UI/ManageBinding/ManageBindingViewModel.cs
+++ b/src/ConnectedMode/UI/ManageBinding/ManageBindingViewModel.cs
@@ -142,12 +142,10 @@ public async Task InitializeDataAsync()
             UiResources.FetchingBindingStatusFailedText) { AfterProgressUpdated = OnProgressUpdated };
         await ProgressReporter.ExecuteTaskWithProgressAsync(displayBindStatus);
 
-        if (!IsCurrentProjectBound)
-        {
-            var detectSharedBinding = new TaskToPerformParams<AdapterResponse>(CheckForSharedBindingAsync, UiResources.CheckingForSharedBindingText,
-                UiResources.CheckingForSharedBindingFailedText) { AfterProgressUpdated = OnProgressUpdated };
-            await ProgressReporter.ExecuteTaskWithProgressAsync(detectSharedBinding);
-        }
+        var detectSharedBinding = new TaskToPerformParams<AdapterResponse>(CheckForSharedBindingAsync, UiResources.CheckingForSharedBindingText,
+                UiResources.CheckingForSharedBindingFailedText)
+            { AfterProgressUpdated = OnProgressUpdated };
+        await ProgressReporter.ExecuteTaskWithProgressAsync(detectSharedBinding);
     }
 
     public async Task BindWithProgressAsync()