package service; import com.danielbohry.stocks.App; import com.danielbohry.stocks.domain.Portfolio; import com.danielbohry.stocks.domain.Stock; import com.danielbohry.stocks.repository.portfolio.PortfolioRepository; import com.danielbohry.stocks.repository.stock.StockRepository; import com.danielbohry.stocks.service.ExchangeService; import com.danielbohry.stocks.service.PortfolioEncryptService; import com.danielbohry.stocks.service.PortfolioService; import com.danielbohry.stocks.service.StockService; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ContextConfiguration; import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @Disabled @SpringBootTest @ContextConfiguration(classes = {App.class}) public class PortfolioServiceTest { @Autowired private PortfolioRepository portfolioRepository; @Mock private StockRepository stockRepository; @Mock private ExchangeService exchangeService; @Mock private PortfolioEncryptService encryptService; private PortfolioService portfolioService; @BeforeEach public void setup() { StockService stockService = new StockService(stockRepository); portfolioService = new PortfolioService(portfolioRepository, stockService, exchangeService, encryptService); } @AfterEach public void teardown() { portfolioRepository.deleteAll(); } @Test public void shouldCreateNewPortfolio() { //when Portfolio result = portfolioService.create(); //then assertNotNull(result.getId()); } @Test public void shouldGetAPortfolio() { //given Portfolio portfolio = portfolioService.create(); //when Portfolio result = portfolioService.get(portfolio.getId(), "USD"); //then assertNotNull(result.getId()); } @Test public void shouldUpdateAPortfolio() { //given when(stockRepository.isValid(any())).thenReturn(true); Portfolio portfolio = portfolioService.create(); Stock newStock = Stock.builder() .code("code") .quantity(3) .build(); //when Portfolio result = portfolioService.update(portfolio.getId(), List.of(newStock)); //then assertNotNull(result.getId()); assertFalse(result.getStocks().isEmpty()); } @Test public void shouldDeleteAPortfolio() { //given Portfolio portfolio = portfolioService.create(); //when portfolioService.delete(portfolio.getId()); //then assertEquals(portfolioRepository.findById(portfolio.getId()), Optional.empty()); } }