PortfolioServiceTest.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package service;
  2. import com.danielbohry.stocks.App;
  3. import com.danielbohry.stocks.domain.Portfolio;
  4. import com.danielbohry.stocks.domain.Stock;
  5. import com.danielbohry.stocks.repository.portfolio.PortfolioRepository;
  6. import com.danielbohry.stocks.repository.stock.StockRepository;
  7. import com.danielbohry.stocks.service.ExchangeService;
  8. import com.danielbohry.stocks.service.PortfolioEncryptService;
  9. import com.danielbohry.stocks.service.PortfolioService;
  10. import com.danielbohry.stocks.service.StockService;
  11. import org.junit.jupiter.api.AfterEach;
  12. import org.junit.jupiter.api.BeforeEach;
  13. import org.junit.jupiter.api.Disabled;
  14. import org.junit.jupiter.api.Test;
  15. import org.mockito.Mock;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.boot.test.context.SpringBootTest;
  18. import org.springframework.test.context.ContextConfiguration;
  19. import java.util.List;
  20. import java.util.Optional;
  21. import static org.junit.jupiter.api.Assertions.*;
  22. import static org.mockito.ArgumentMatchers.any;
  23. import static org.mockito.Mockito.when;
  24. @Disabled
  25. @SpringBootTest
  26. @ContextConfiguration(classes = {App.class})
  27. public class PortfolioServiceTest {
  28. @Autowired
  29. private PortfolioRepository portfolioRepository;
  30. @Mock
  31. private StockRepository stockRepository;
  32. @Mock
  33. private ExchangeService exchangeService;
  34. @Mock
  35. private PortfolioEncryptService encryptService;
  36. private PortfolioService portfolioService;
  37. @BeforeEach
  38. public void setup() {
  39. StockService stockService = new StockService(stockRepository);
  40. portfolioService = new PortfolioService(portfolioRepository, stockService, exchangeService, encryptService);
  41. }
  42. @AfterEach
  43. public void teardown() {
  44. portfolioRepository.deleteAll();
  45. }
  46. @Test
  47. public void shouldCreateNewPortfolio() {
  48. //when
  49. Portfolio result = portfolioService.create();
  50. //then
  51. assertNotNull(result.getId());
  52. }
  53. @Test
  54. public void shouldGetAPortfolio() {
  55. //given
  56. Portfolio portfolio = portfolioService.create();
  57. //when
  58. Portfolio result = portfolioService.get(portfolio.getId(), "USD");
  59. //then
  60. assertNotNull(result.getId());
  61. }
  62. @Test
  63. public void shouldUpdateAPortfolio() {
  64. //given
  65. when(stockRepository.isValid(any())).thenReturn(true);
  66. Portfolio portfolio = portfolioService.create();
  67. Stock newStock = Stock.builder()
  68. .code("code")
  69. .quantity(3)
  70. .build();
  71. //when
  72. Portfolio result = portfolioService.update(portfolio.getId(), List.of(newStock));
  73. //then
  74. assertNotNull(result.getId());
  75. assertFalse(result.getStocks().isEmpty());
  76. }
  77. @Test
  78. public void shouldDeleteAPortfolio() {
  79. //given
  80. Portfolio portfolio = portfolioService.create();
  81. //when
  82. portfolioService.delete(portfolio.getId());
  83. //then
  84. assertEquals(portfolioRepository.findById(portfolio.getId()), Optional.empty());
  85. }
  86. }