diff --git a/currency-service/src/main/java/cz/muni/fi/obs/controller/CurrencyController.java b/currency-service/src/main/java/cz/muni/fi/obs/controller/CurrencyController.java
index d110f69389346e8cf958b332741d010e6bbc3f74..62e65e1bd2d5d4497e4552a6e51e98f410a12a0a 100644
--- a/currency-service/src/main/java/cz/muni/fi/obs/controller/CurrencyController.java
+++ b/currency-service/src/main/java/cz/muni/fi/obs/controller/CurrencyController.java
@@ -28,6 +28,6 @@ public class CurrencyController {
 
     @GetMapping("/")
     public ResponseEntity<Page<CurrencyDto>> currencies(@ModelAttribute Pageable pageRequest) {
-        return ResponseEntity.ok(currencyFacade.listPaged(pageRequest));
+        return ResponseEntity.ok(currencyFacade.listPage(pageRequest));
     }
 }
diff --git a/currency-service/src/main/java/cz/muni/fi/obs/facade/CurrencyFacade.java b/currency-service/src/main/java/cz/muni/fi/obs/facade/CurrencyFacade.java
index 75d4941b9869083d6f134cf4e5d4bef0aa38e706..85d41b9a6329d1e4cf7779c0337f9e27083b2c6d 100644
--- a/currency-service/src/main/java/cz/muni/fi/obs/facade/CurrencyFacade.java
+++ b/currency-service/src/main/java/cz/muni/fi/obs/facade/CurrencyFacade.java
@@ -1,15 +1,19 @@
 package cz.muni.fi.obs.facade;
 
+import cz.muni.fi.obs.data.dbo.Currency;
 import cz.muni.fi.obs.dto.CurrencyDto;
 import cz.muni.fi.obs.dto.CurrencyExchangeResult;
 import cz.muni.fi.obs.service.CurrencyService;
 import cz.muni.fi.obs.service.ExchangeRateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class CurrencyFacade {
@@ -28,7 +32,11 @@ public class CurrencyFacade {
         return exchangeRateService.exchange(currencyFrom, currencyTo, amount);
     }
 
-    public Page<CurrencyDto> listPaged(Pageable pageRequest) {
-        return currencyService.listPage(pageRequest);
+    public Page<CurrencyDto> listPage(Pageable pageRequest) {
+        Page<Currency> currencies = currencyService.listPage(pageRequest);
+        List<CurrencyDto> dtos = currencies.getContent().stream()
+                .map(currency -> new CurrencyDto(currency.getName(), currency.getCode()))
+                .collect(Collectors.toList());
+        return new PageImpl<>(dtos, pageRequest, currencies.getTotalElements());
     }
 }
diff --git a/currency-service/src/main/java/cz/muni/fi/obs/service/CurrencyService.java b/currency-service/src/main/java/cz/muni/fi/obs/service/CurrencyService.java
index eb2a6f825acad0efb600e0e6fb953689abd6c561..512b9fa8f3000bf7a361fd4688d2e0c749e4a5e9 100644
--- a/currency-service/src/main/java/cz/muni/fi/obs/service/CurrencyService.java
+++ b/currency-service/src/main/java/cz/muni/fi/obs/service/CurrencyService.java
@@ -2,28 +2,22 @@ package cz.muni.fi.obs.service;
 
 import cz.muni.fi.obs.data.dbo.Currency;
 import cz.muni.fi.obs.data.repository.CurrencyRepository;
-import cz.muni.fi.obs.dto.CurrencyDto;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-
 @Service
 public class CurrencyService {
 
     private final CurrencyRepository currencyRepository;
 
+    @Autowired
     public CurrencyService(CurrencyRepository currencyRepository) {
         this.currencyRepository = currencyRepository;
     }
 
-    public Page<CurrencyDto> listPage(Pageable pageable) {
-        final Page<Currency> currencyPagedResult = currencyRepository.listPage(pageable);
-        List<CurrencyDto> results = currencyPagedResult.getContent().stream().map(currency ->
-                new CurrencyDto(currency.getName(), currency.getCode())).toList();
-
-        return new PageImpl<>(results, pageable, currencyPagedResult.getTotalElements());
+    public Page<Currency> listPage(Pageable pageable) {
+        return currencyRepository.listPage(pageable);
     }
 }
diff --git a/currency-service/src/main/java/cz/muni/fi/obs/service/ExchangeRateService.java b/currency-service/src/main/java/cz/muni/fi/obs/service/ExchangeRateService.java
index 81d8b90e9cac48ca4abea053f78c89906d70d444..8e4858bbceb2d29f1d9ffb4dbbbc993ce16aa0c3 100644
--- a/currency-service/src/main/java/cz/muni/fi/obs/service/ExchangeRateService.java
+++ b/currency-service/src/main/java/cz/muni/fi/obs/service/ExchangeRateService.java
@@ -26,7 +26,7 @@ public class ExchangeRateService {
         this.exchangeRateRepository = exchangeRateRepository;
     }
 
-    public Currency findByCode(String code) {
+    private Currency findByCode(String code) {
         return currencyRepository.findByCode(code).orElseThrow(() -> new MissingObject(Currency.class, code));
     }
 
diff --git a/currency-service/src/main/java/cz/muni/fi/obs/service/CsvConfig.java b/currency-service/src/main/java/cz/muni/fi/obs/service/update/CsvConfig.java
similarity index 90%
rename from currency-service/src/main/java/cz/muni/fi/obs/service/CsvConfig.java
rename to currency-service/src/main/java/cz/muni/fi/obs/service/update/CsvConfig.java
index c72075d3f5b27fb9821b289ad6337b2e2472a7b3..0437d90fb7579080d383e72191382a7ba25e42da 100644
--- a/currency-service/src/main/java/cz/muni/fi/obs/service/CsvConfig.java
+++ b/currency-service/src/main/java/cz/muni/fi/obs/service/update/CsvConfig.java
@@ -1,4 +1,4 @@
-package cz.muni.fi.obs.service;
+package cz.muni.fi.obs.service.update;
 
 import com.opencsv.CSVParser;
 import com.opencsv.CSVParserBuilder;
diff --git a/currency-service/src/test/java/cz/muni/fi/obs/facade/CurrencyFacadeTest.java b/currency-service/src/test/java/cz/muni/fi/obs/facade/CurrencyFacadeTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d1456616355c34402077ae6df6be3075e471dcd
--- /dev/null
+++ b/currency-service/src/test/java/cz/muni/fi/obs/facade/CurrencyFacadeTest.java
@@ -0,0 +1,60 @@
+package cz.muni.fi.obs.facade;
+
+import cz.muni.fi.obs.data.dbo.Currency;
+import cz.muni.fi.obs.dto.CurrencyDto;
+import cz.muni.fi.obs.dto.CurrencyExchangeResult;
+import cz.muni.fi.obs.service.CurrencyService;
+import cz.muni.fi.obs.service.ExchangeRateService;
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+@SpringBootTest
+class CurrencyFacadeTest {
+
+    @Mock
+    private CurrencyService currencyService;
+
+    @Mock
+    private ExchangeRateService exchangeRateService;
+
+    @InjectMocks
+    private CurrencyFacade currencyFacade;
+
+    @Autowired
+    private List<Currency> testData;
+
+    @Test
+    void exchange_betweenTwoCurrencies_returnsResult() {
+        String code = testData.get(1).getCode();
+        String code1 = testData.getFirst().getCode();
+        when(exchangeRateService.exchange(any(String.class), any(String.class), any(BigDecimal.class)))
+                .thenReturn(new CurrencyExchangeResult(code1, code, 10.2, BigDecimal.valueOf(1000), BigDecimal.valueOf(10200)));
+
+        CurrencyExchangeResult exchange = currencyFacade.exchange(code, code1, BigDecimal.valueOf(1000));
+
+        Assertions.assertThat(exchange.destAmount()).isEqualTo(BigDecimal.valueOf(10200));
+    }
+
+    @Test
+    void listPage_threeCurrenciesExist_returnsThreeCurrencies() {
+        Pageable pageable = Pageable.ofSize(10);
+        when(currencyService.listPage(pageable)).thenReturn(new PageImpl<>(testData, pageable, 3));
+
+        Page<CurrencyDto> currencies = currencyFacade.listPage(pageable);
+
+        Assertions.assertThat(currencies.getTotalElements()).isEqualTo(3);
+    }
+}
\ No newline at end of file
diff --git a/currency-service/src/test/java/cz/muni/fi/obs/service/CurrencyServiceTest.java b/currency-service/src/test/java/cz/muni/fi/obs/service/CurrencyServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..3fa02c34671ecffb39cc21f85624c6eeb7dcd923
--- /dev/null
+++ b/currency-service/src/test/java/cz/muni/fi/obs/service/CurrencyServiceTest.java
@@ -0,0 +1,40 @@
+package cz.muni.fi.obs.service;
+
+import cz.muni.fi.obs.data.dbo.Currency;
+import cz.muni.fi.obs.data.repository.CurrencyRepository;
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+import static org.mockito.Mockito.when;
+
+@SpringBootTest
+class CurrencyServiceTest {
+
+    @Mock
+    private CurrencyRepository currencyRepository;
+
+    @InjectMocks
+    private CurrencyService currencyService;
+
+    @Autowired
+    private List<Currency> mockData;
+
+    @Test
+    public void listPage_whenThreeCurrenciesPresent_returnsThreeCurrencies() {
+        Pageable pageable = Pageable.ofSize(10);
+        when(currencyRepository.listPage(pageable)).thenReturn(new PageImpl<>(mockData, pageable, 3));
+
+        Page<Currency> currencies = currencyService.listPage(pageable);
+
+        Assertions.assertThat(currencies.getTotalElements()).isEqualTo(3);
+    }
+}
\ No newline at end of file
diff --git a/currency-service/src/test/java/cz/muni/fi/obs/service/CurrencySheetsResponse.java b/currency-service/src/test/java/cz/muni/fi/obs/service/updaters/CurrencySheetsResponse.java
similarity index 94%
rename from currency-service/src/test/java/cz/muni/fi/obs/service/CurrencySheetsResponse.java
rename to currency-service/src/test/java/cz/muni/fi/obs/service/updaters/CurrencySheetsResponse.java
index 9bbe208220c102bdda34f55468303898aa93e556..b1f2b94a1cdce4f4dcd72739a3e3b03d4c70b382 100644
--- a/currency-service/src/test/java/cz/muni/fi/obs/service/CurrencySheetsResponse.java
+++ b/currency-service/src/test/java/cz/muni/fi/obs/service/updaters/CurrencySheetsResponse.java
@@ -1,4 +1,4 @@
-package cz.muni.fi.obs.service;
+package cz.muni.fi.obs.service.updaters;
 
 public class CurrencySheetsResponse {
 
diff --git a/currency-service/src/test/java/cz/muni/fi/obs/service/NbsCurrencyUpdateServiceTest.java b/currency-service/src/test/java/cz/muni/fi/obs/service/updaters/NbsCurrencyUpdateServiceTest.java
similarity index 96%
rename from currency-service/src/test/java/cz/muni/fi/obs/service/NbsCurrencyUpdateServiceTest.java
rename to currency-service/src/test/java/cz/muni/fi/obs/service/updaters/NbsCurrencyUpdateServiceTest.java
index df034b74d29aff584a711bce73e405114053fdfd..7e1c7bdb16c2126fdf0573a11c8413845acfdf1e 100644
--- a/currency-service/src/test/java/cz/muni/fi/obs/service/NbsCurrencyUpdateServiceTest.java
+++ b/currency-service/src/test/java/cz/muni/fi/obs/service/updaters/NbsCurrencyUpdateServiceTest.java
@@ -1,4 +1,4 @@
-package cz.muni.fi.obs.service;
+package cz.muni.fi.obs.service.updaters;
 
 import cz.muni.fi.obs.data.repository.CurrencyRepository;
 import cz.muni.fi.obs.service.update.NbsCurrencyUpdateService;