Skip to content
Snippets Groups Projects
Commit 4165672e authored by Robert Goldmann's avatar Robert Goldmann
Browse files

Fixed #743 - use only session attributes for filter configuration

parent ec8e3ebb
Branches
Tags
2 merge requests!239V2 15 0,!238V2 15 0
......@@ -24,6 +24,9 @@ import org.springframework.web.bind.annotation.*;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.WebRequest;
import java.io.IOException;
import java.text.MessageFormat;
import java.time.LocalDate;
......@@ -68,13 +71,14 @@ public class ReportController extends BaseController
}
@GetMapping
public String reports(HttpServletRequest request, Model model, @CookieValue(value = "currentDate", required = false) String cookieDate)
public String reports(WebRequest webRequest, HttpServletRequest request, Model model, @CookieValue(value = "currentDate", required = false) String cookieDate)
{
LocalDate date = dateService.getDateTimeFromCookie(cookieDate);
model.addAttribute(ModelAttributes.REPORT_SETTINGS, reportSettingsService.getReportSettings());
model.addAttribute(ModelAttributes.CURRENT_DATE, date);
model.addAttribute(ModelAttributes.FILTER_CONFIGURATION, filterHelpers.getFilterConfiguration(request));
webRequest.setAttribute(ModelAttributes.FILTER_CONFIGURATION, filterHelpers.getFilterConfiguration(request), RequestAttributes.SCOPE_SESSION);
return ReturnValues.ALL_ENTITIES;
}
......
......@@ -88,18 +88,18 @@ public class TransactionController extends BaseController
}
@GetMapping
public String transactions(HttpServletRequest request, Model model, @CookieValue(value = "currentDate", required = false) String cookieDate)
public String transactions(WebRequest webRequest, HttpServletRequest request, Model model, @CookieValue(value = "currentDate", required = false) String cookieDate)
{
LocalDate date = dateService.getDateTimeFromCookie(cookieDate);
repeatingTransactionUpdater.updateRepeatingTransactions(date.with(lastDayOfMonth()));
prepareModelTransactions(filterHelpers.getFilterConfiguration(request), model, date);
prepareModelTransactions(webRequest, filterHelpers.getFilterConfiguration(request), model, date);
return ReturnValues.ALL_ENTITIES;
}
@GetMapping("/{ID}/requestDelete")
public String requestDeleteTransaction(HttpServletRequest request, Model model, @PathVariable("ID") Integer ID, @CookieValue("currentDate") String cookieDate)
public String requestDeleteTransaction(WebRequest webRequest, HttpServletRequest request, Model model, @PathVariable("ID") Integer ID, @CookieValue("currentDate") String cookieDate)
{
if(!transactionService.isDeletable(ID))
{
......@@ -107,13 +107,13 @@ public class TransactionController extends BaseController
}
LocalDate date = dateService.getDateTimeFromCookie(cookieDate);
prepareModelTransactions(filterHelpers.getFilterConfiguration(request), model, date);
prepareModelTransactions(webRequest, filterHelpers.getFilterConfiguration(request), model, date);
model.addAttribute(TransactionModelAttributes.ENTITY_TO_DELETE, transactionService.getRepository().getReferenceById(ID));
return ReturnValues.DELETE_ENTITY;
}
private void prepareModelTransactions(FilterConfiguration filterConfiguration, Model model, LocalDate date)
private void prepareModelTransactions(WebRequest webRequest, FilterConfiguration filterConfiguration, Model model, LocalDate date)
{
final Account currentAccount = helpers.getCurrentAccount();
final List<Transaction> transactions = transactionService.getTransactionsForMonthAndYear(currentAccount, date.getMonthValue(), date.getYear(), filterConfiguration);
......@@ -121,7 +121,8 @@ public class TransactionController extends BaseController
model.addAttribute(TransactionModelAttributes.ACCOUNT, currentAccount);
model.addAttribute(TransactionModelAttributes.BUDGET, helpers.getBudget(transactions, currentAccount));
model.addAttribute(TransactionModelAttributes.CURRENT_DATE, date);
model.addAttribute(TransactionModelAttributes.FILTER_CONFIGURATION, filterConfiguration);
webRequest.setAttribute("filterConfiguration", filterConfiguration, RequestAttributes.SCOPE_SESSION);
if(settingsService.getSettings().isRestActivated())
{
......@@ -310,7 +311,7 @@ public class TransactionController extends BaseController
}
@GetMapping("/{ID}/highlight")
public String highlight(Model model, @PathVariable("ID") Integer ID)
public String highlight(WebRequest webRequest, Model model, @PathVariable("ID") Integer ID)
{
Transaction transaction = transactionService.getRepository().getReferenceById(ID);
......@@ -326,7 +327,7 @@ public class TransactionController extends BaseController
filterConfiguration.setFilterCategories(filterHelpers.getFilterCategories());
filterConfiguration.setFilterTags(filterHelpers.getFilterTags());
prepareModelTransactions(filterConfiguration, model, transaction.getDate());
prepareModelTransactions(webRequest, filterConfiguration, model, transaction.getDate());
model.addAttribute(TransactionModelAttributes.HIGHLIGHT_ID, ID);
return ReturnValues.ALL_ENTITIES;
}
......
package de.deadlocker8.budgetmaster.integration.selenium;
import de.deadlocker8.budgetmaster.authentication.UserService;
import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper;
import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase;
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 static org.assertj.core.api.Assertions.assertThat;
class FilterTest extends SeleniumTestBase
{
private static IntegrationTestHelper helper;
@Override
protected void importDatabaseOnce()
{
helper = new IntegrationTestHelper(driver, port);
helper.start();
helper.login(UserService.DEFAULT_PASSWORD);
helper.hideBackupReminder();
helper.hideWhatsNewDialog();
String path = getClass().getClassLoader().getResource("SearchDatabase.json").getFile().replace("/", File.separator);
helper.uploadDatabase(path);
}
@Test
void test_showFilterActiveButton()
{
driver.get(helper.getUrl() + "/transactions");
assertThat(driver.findElement(By.id("modalFilterTrigger")).getAttribute("class")).doesNotContain("background-red");
driver.findElement(By.id("modalFilterTrigger")).click();
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("modalFilter")));
driver.findElement(By.id("section-type")).click();
final WebElement checkBox = driver.findElement(By.cssSelector("#section-type .text-default"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", checkBox);
checkBox.click();
driver.findElement(By.id("buttonApplyFilter")).click();
wait = new WebDriverWait(driver, Duration.ofSeconds(5));
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("modalFilter")));
assertThat(driver.findElement(By.id("modalFilterTrigger")).getAttribute("class")).contains("background-red");
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment