Merge pull request #9173 from marius-munteanu/BAEL-3016
BAEL-3016 Thymeleaf Formatting Currencies
This commit is contained in:
commit
a22706d06f
|
@ -0,0 +1,22 @@
|
|||
package com.baeldung.thymeleaf.currencies;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
@Controller
|
||||
public class CurrenciesController {
|
||||
|
||||
@GetMapping(value = "/currency")
|
||||
public String exchange(
|
||||
@RequestParam(value = "amount", required = false) String amount,
|
||||
@RequestParam(value = "amountList", required = false) List amountList,
|
||||
Locale locale) {
|
||||
|
||||
return "currencies/currencies";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Currency table</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Currency format by Locale</p>
|
||||
<p th:text="${#numbers.formatCurrency(param.amount)}"></p>
|
||||
|
||||
<p>Currency Arrays format by Locale</p>
|
||||
<p th:text="${#numbers.listFormatCurrency(param.amountList)}"></p>
|
||||
|
||||
<p>Remove decimal values</p>
|
||||
<p th:text="${#strings.replace(#numbers.formatCurrency(param.amount), '.00', '')}"></p>
|
||||
|
||||
<p>Replace decimal points</p>
|
||||
<p th:text="${#numbers.formatDecimal(param.amount, 1, 2, 'COMMA')}"></p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,68 @@
|
|||
package com.baeldung.thymeleaf.currencies;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.containsString;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
@AutoConfigureMockMvc(printOnlyOnFailure = false)
|
||||
public class CurrenciesControllerIntegrationTest {
|
||||
|
||||
@Autowired
|
||||
private MockMvc mockMvc;
|
||||
|
||||
@Test
|
||||
public void whenCallCurrencyWithSpanishLocale_ThenReturnProperCurrency() throws Exception {
|
||||
mockMvc.perform(MockMvcRequestBuilders.get("/currency")
|
||||
.header("Accept-Language", "es-ES")
|
||||
.param("amount", "10032.5"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(content().string(containsString("10.032,50 €")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCallCurrencyWithUSALocale_ThenReturnProperCurrency() throws Exception {
|
||||
mockMvc.perform(MockMvcRequestBuilders.get("/currency")
|
||||
.header("Accept-Language", "en-US")
|
||||
.param("amount", "10032.5"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(content().string(containsString("$10,032.50")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCallCurrencyWithRomanianLocaleWithArrays_ThenReturnLocaleCurrencies() throws Exception {
|
||||
mockMvc.perform(MockMvcRequestBuilders.get("/currency")
|
||||
.header("Accept-Language", "ro-RO")
|
||||
.param("amountList", "10", "20", "30"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(content().string(containsString("10,00 RON, 20,00 RON, 30,00 RON")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCallCurrencyWithUSALocaleWithoutDecimal_ThenReturnCurrencyWithoutTrailingZeros() throws Exception {
|
||||
mockMvc.perform(MockMvcRequestBuilders.get("/currency")
|
||||
.header("Accept-Language", "en-US")
|
||||
.param("amount", "10032"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(content().string(containsString("$10,032")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCallCurrencyWithUSALocale_ThenReturnReplacedDecimalPoint() throws Exception {
|
||||
mockMvc.perform(MockMvcRequestBuilders.get("/currency")
|
||||
.header("Accept-Language", "en-US")
|
||||
.param("amount", "1.5"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(content().string(containsString("1,5")));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue