From 01b8fd15cddef07b961a8ae9c015be2e67a17ca0 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 11 Sep 2022 11:24:56 +0200
Subject: [PATCH] Fixed #720 - handle global account select while a
 transactions is highlighted

---
 .../accounts/AccountController.java           |  7 ++++
 .../integration/selenium/SearchTest.java      | 34 +++++++++++++++++--
 2 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
index 3678ffa7a..fd6f2a40b 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java
@@ -74,6 +74,13 @@ public class AccountController extends BaseController
 			return ReturnValues.SETTINGS;
 		}
 
+		if(referer.contains("highlight"))
+		{
+			final StringBuffer requestURL = request.getRequestURL();
+			final String baseUrl = requestURL.substring(0, requestURL.length() - request.getRequestURI().length());
+			referer = baseUrl + "/transactions/";
+		}
+
 		if(referer.contains(ACCOUNT_SELECTED_INDICATOR))
 		{
 			return MessageFormat.format("redirect:{0}", referer);
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java
index 1aec846f9..ca6416c90 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java
@@ -8,8 +8,11 @@ import org.junit.jupiter.api.Test;
 import org.openqa.selenium.By;
 import org.openqa.selenium.JavascriptExecutor;
 import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
+import java.time.Duration;
 import java.util.List;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -131,10 +134,37 @@ class SearchTest extends SeleniumTestBase
 
 		List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top"));
 		assertThat(transactionsRows).hasSize(25);
-		assertThat(transactionsRows.get(0).getAttribute("class")).contains("background-blue-light");
+		assertThat(transactionsRows.get(0).getAttribute("class")).contains("transaction-row-highlighted");
 		for(int i = 1; i < transactionsRows.size(); i++)
 		{
-			assertThat(transactionsRows.get(i).getAttribute("class")).doesNotContain("background-blue-light");
+			assertThat(transactionsRows.get(i).getAttribute("class")).doesNotContain("transaction-row-highlighted");
 		}
 	}
+
+	@Test
+	void test_selectAccountWhileTransactionIsHighlighted()
+	{
+		driver.findElement(By.cssSelector(".main-card .search-result .hide-on-med-and-down .buttonHighlight")).click();
+
+		assertThat(driver.findElement(By.cssSelector(".headline-date")).getText()).isEqualTo("May 2019");
+
+		List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top"));
+		assertThat(transactionsRows).hasSize(25);
+		assertThat(transactionsRows.get(0).getAttribute("class")).contains("transaction-row-highlighted");
+
+		// open global account select
+		final WebElement globalAccountSelect = driver.findElement(By.id("globalAccountSelect"));
+		globalAccountSelect.click();
+
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
+		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#modalGlobalAccountSelect h4")));
+
+		driver.findElement(By.id("modalGlobalAccountSelect")).sendKeys("3");
+
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
+		wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("#modalGlobalAccountSelect h4")));
+
+		assertThat(driver.findElement(By.cssSelector("#globalAccountSelect .global-account-select-name")).getText())
+				.isEqualTo("sfsdf");
+	}
 }
\ No newline at end of file
-- 
GitLab