Skip to content

Commit 326a7ff

Browse files
committed
service unit tests: coverage gone up to 61.5%
1 parent ef66f5c commit 326a7ff

File tree

4 files changed

+336
-0
lines changed

4 files changed

+336
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.demo.bankapp.service;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.math.BigDecimal;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
import org.junit.Before;
10+
import org.junit.Test;
11+
import org.junit.runner.RunWith;
12+
import org.mockito.Mockito;
13+
import org.springframework.boot.test.mock.mockito.MockBean;
14+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
15+
16+
import com.demo.bankapp.model.Transaction;
17+
import com.demo.bankapp.repository.TransactionRepository;
18+
import com.demo.bankapp.service.concretions.TransactionService;
19+
20+
@RunWith(SpringJUnit4ClassRunner.class)
21+
public class TransactionServiceTest {
22+
23+
@MockBean
24+
private TransactionRepository repository;
25+
26+
private TransactionService service;
27+
28+
@Before
29+
public void setUp() {
30+
service = new TransactionService(repository);
31+
}
32+
33+
@Test
34+
public void createNewTransaction() {
35+
Transaction mockedTransaction = new Transaction(25681L, true, "TRY", BigDecimal.valueOf(61268));
36+
Mockito.when(repository.save(Mockito.any())).thenReturn(mockedTransaction);
37+
38+
Transaction newTransaction = service.createNewTransaction(mockedTransaction.getUserId(), mockedTransaction.isBought(), mockedTransaction.getCurrency(), mockedTransaction.getAmount());
39+
40+
assertThat(mockedTransaction.getAmount()).isEqualTo(newTransaction.getAmount());
41+
assertThat(mockedTransaction.getCurrency()).isEqualTo(newTransaction.getCurrency());
42+
assertThat(mockedTransaction.getUserId()).isEqualTo(newTransaction.getUserId());
43+
assertThat(mockedTransaction.isBought()).isEqualTo(newTransaction.isBought());
44+
}
45+
46+
@Test
47+
public void getOperationCountFromLast24Hours() {
48+
Mockito.when(repository.getOperationCountFromLast24Hours(Mockito.any())).thenReturn(20);
49+
50+
int operationCount = service.getOperationCountFromLast24Hours(12161L);
51+
assertThat(operationCount).isPositive();
52+
}
53+
54+
@Test
55+
public void findAllByUserId() {
56+
List<Transaction> transactionList = new ArrayList<>();
57+
Transaction mockedTransaction = new Transaction(61682L, true, "EUR", BigDecimal.valueOf(12661));
58+
transactionList.add(mockedTransaction);
59+
60+
Mockito.when(repository.findAllByUserId(Mockito.any())).thenReturn(transactionList);
61+
62+
List<Transaction> foundTransactionList = service.findAllByUserId(mockedTransaction.getUserId());
63+
assertThat(foundTransactionList).isEqualTo(transactionList);
64+
}
65+
66+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.demo.bankapp.service;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.math.BigDecimal;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
import org.junit.Before;
10+
import org.junit.Test;
11+
import org.junit.runner.RunWith;
12+
import org.mockito.Mockito;
13+
import org.springframework.boot.test.mock.mockito.MockBean;
14+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
15+
16+
import com.demo.bankapp.model.Transfer;
17+
import com.demo.bankapp.repository.TransferRepository;
18+
import com.demo.bankapp.service.concretions.TransferService;
19+
20+
@RunWith(SpringJUnit4ClassRunner.class)
21+
public class TransferServiceTest {
22+
23+
@MockBean
24+
private TransferRepository repository;
25+
26+
private TransferService service;
27+
28+
@Before
29+
public void setUp() {
30+
service = new TransferService(repository);
31+
}
32+
33+
@Test
34+
public void createNewTransaction() {
35+
Transfer mockedTransfer = new Transfer(5816L, 2181L, "AUD", BigDecimal.valueOf(25125));
36+
Mockito.when(repository.save(Mockito.any())).thenReturn(mockedTransfer);
37+
38+
Transfer createdTransfer = service.createNewTransfer(mockedTransfer);
39+
40+
assertThat(createdTransfer.getAmount()).isEqualTo(mockedTransfer.getAmount());
41+
assertThat(createdTransfer.getCurrency()).isEqualTo(mockedTransfer.getCurrency());
42+
assertThat(createdTransfer.getFromUserId()).isEqualTo(mockedTransfer.getFromUserId());
43+
assertThat(createdTransfer.getToUserId()).isEqualTo(mockedTransfer.getToUserId());
44+
}
45+
46+
@Test
47+
public void findAllTransfersFrom24Hours() {
48+
List<Transfer> mockedTransferList = new ArrayList<>();
49+
Transfer mockedTransfer = new Transfer(5816L, 2181L, "AUD", BigDecimal.valueOf(25125));
50+
mockedTransferList.add(mockedTransfer);
51+
52+
Mockito.when(repository.findAllTransfersFrom24Hours(mockedTransfer.getFromUserId())).thenReturn(mockedTransferList);
53+
List<Transfer> foundTransferList = service.findAllTransfersFrom24Hours(mockedTransfer.getFromUserId());
54+
55+
assertThat(foundTransferList).isEqualTo(mockedTransferList);
56+
}
57+
58+
}
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package com.demo.bankapp.service;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
import org.junit.Before;
9+
import org.junit.Test;
10+
import org.junit.runner.RunWith;
11+
import org.mockito.Mockito;
12+
import org.springframework.boot.test.mock.mockito.MockBean;
13+
import org.springframework.security.core.userdetails.UserDetails;
14+
import org.springframework.security.crypto.password.PasswordEncoder;
15+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
16+
17+
import com.demo.bankapp.model.User;
18+
import com.demo.bankapp.repository.UserRepository;
19+
import com.demo.bankapp.service.concretions.UserService;
20+
21+
@RunWith(SpringJUnit4ClassRunner.class)
22+
public class UserServiceTest {
23+
24+
@MockBean
25+
private UserRepository repository;
26+
27+
@MockBean
28+
private PasswordEncoder passwordEncoder;
29+
30+
private UserService service;
31+
32+
@Before
33+
public void setUp() {
34+
service = new UserService(repository, passwordEncoder);
35+
}
36+
37+
@Test
38+
public void findAll() {
39+
List<User> mockedUserList = new ArrayList<>();
40+
mockedUserList.add(new User("Mert", "mert123", "52125082721"));
41+
42+
Mockito.when(repository.findAll()).thenReturn(mockedUserList);
43+
List<User> foundUserList = service.findAll();
44+
45+
assertThat(foundUserList).isEqualTo(mockedUserList);
46+
}
47+
48+
@Test
49+
public void createNewUser() {
50+
String mockedEncodedPassword = "EncodedPassword5128uawyr";
51+
User mockedUser = new User("Mert", "mert123", "52125082721");
52+
53+
Mockito.when(passwordEncoder.encode(Mockito.anyString())).thenReturn(mockedEncodedPassword);
54+
Mockito.when(repository.save(Mockito.any())).thenReturn(mockedUser);
55+
56+
User createdUser = service.createNewUser(mockedUser);
57+
58+
assertThat(createdUser.getUsername()).isEqualTo(mockedUser.getUsername());
59+
assertThat(createdUser.getPassword()).isEqualTo(mockedUser.getPassword());
60+
assertThat(createdUser.getTcno()).isEqualTo(mockedUser.getTcno());
61+
}
62+
63+
@Test
64+
public void findByUserName() {
65+
User mockedUser = new User("Mert", "mert123", "52125082721");
66+
Mockito.when(repository.findByUsername(Mockito.anyString())).thenReturn(mockedUser);
67+
68+
User createdUser = service.findByUserName(mockedUser.getUsername());
69+
70+
assertThat(createdUser.getUsername()).isEqualTo(mockedUser.getUsername());
71+
assertThat(createdUser.getPassword()).isEqualTo(mockedUser.getPassword());
72+
assertThat(createdUser.getTcno()).isEqualTo(mockedUser.getTcno());
73+
}
74+
75+
@Test
76+
public void findByTcno() {
77+
User mockedUser = new User("Mert", "mert123", "52125082721");
78+
Mockito.when(repository.findByTcno(Mockito.anyString())).thenReturn(mockedUser);
79+
80+
User createdUser = service.findByTcno(mockedUser.getTcno());
81+
82+
assertThat(createdUser.getUsername()).isEqualTo(mockedUser.getUsername());
83+
assertThat(createdUser.getPassword()).isEqualTo(mockedUser.getPassword());
84+
assertThat(createdUser.getTcno()).isEqualTo(mockedUser.getTcno());
85+
}
86+
87+
@Test
88+
public void loadUserByUsername() {
89+
User mockedUser = new User("Mert", "mert123", "52125082721");
90+
Mockito.when(repository.findByUsername(Mockito.anyString())).thenReturn(mockedUser);
91+
92+
UserDetails loadedUser = service.loadUserByUsername(mockedUser.getUsername());
93+
94+
assertThat(loadedUser.getUsername()).isEqualTo(mockedUser.getUsername());
95+
assertThat(loadedUser.getPassword()).isEqualTo(mockedUser.getPassword());
96+
assertThat(loadedUser).isExactlyInstanceOf(org.springframework.security.core.userdetails.User.class);
97+
}
98+
99+
@Test
100+
public void isUsernameExist() {
101+
User mockedUser = new User("Mert", "mert123", "52125082721");
102+
Mockito.when(repository.findByUsername(mockedUser.getUsername())).thenReturn(mockedUser);
103+
104+
boolean isUsernameExist = service.isUsernameExist(mockedUser.getUsername());
105+
assertThat(isUsernameExist).isEqualTo(true);
106+
}
107+
108+
@Test
109+
public void isTcNoExist() {
110+
User mockedUser = new User("Mert", "mert123", "52125082721");
111+
Mockito.when(repository.findByTcno(mockedUser.getTcno())).thenReturn(mockedUser);
112+
113+
boolean isTcnoExist = service.isTcnoExist(mockedUser.getTcno());
114+
assertThat(isTcnoExist).isEqualTo(true);
115+
}
116+
117+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package com.demo.bankapp.service;
2+
3+
import java.math.BigDecimal;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
import java.util.Optional;
7+
8+
import org.junit.Before;
9+
import org.junit.Test;
10+
import org.junit.runner.RunWith;
11+
import org.mockito.Mockito;
12+
import org.springframework.boot.test.mock.mockito.MockBean;
13+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
14+
15+
import com.demo.bankapp.exception.BadRequestException;
16+
import com.demo.bankapp.exception.InsufficientFundsException;
17+
import com.demo.bankapp.model.Wealth;
18+
import com.demo.bankapp.repository.WealthRepository;
19+
import com.demo.bankapp.service.concretions.WealthService;
20+
21+
@RunWith(SpringJUnit4ClassRunner.class)
22+
public class WealthServiceTest {
23+
24+
@MockBean
25+
private WealthRepository repository;
26+
27+
private WealthService service;
28+
29+
private Wealth mockedWealth;
30+
private Long mockedUserId;
31+
32+
@Before
33+
public void setUp() {
34+
service = new WealthService(repository);
35+
36+
Map<String, BigDecimal> mockedWealthMap = new HashMap<>();
37+
mockedWealthMap.put("USD", BigDecimal.valueOf(2500));
38+
mockedWealthMap.put("TRY", BigDecimal.valueOf(2000));
39+
mockedWealthMap.put("EUR", BigDecimal.valueOf(3000));
40+
mockedWealthMap.put("AUD", BigDecimal.ZERO);
41+
42+
this.mockedUserId = 5125L;
43+
this.mockedWealth = new Wealth(mockedUserId, mockedWealthMap);
44+
45+
Mockito.when(repository.findById(mockedUserId)).thenReturn(Optional.of(mockedWealth));
46+
}
47+
48+
@Test
49+
public void newWealthRecord() {
50+
service.newWealthRecord(25161L);
51+
}
52+
53+
@Test
54+
public void makeWealthExchange() {
55+
service.makeWealthExchange(mockedUserId, "USD", BigDecimal.valueOf(150), true);
56+
service.makeWealthExchange(mockedUserId, "USD", BigDecimal.valueOf(250), false);
57+
}
58+
59+
@Test(expected = InsufficientFundsException.class)
60+
public void makeWealthExchange_InsufficientFunds_Sell() {
61+
service.makeWealthExchange(mockedUserId, "USD", BigDecimal.valueOf(3000), false);
62+
}
63+
64+
@Test(expected = InsufficientFundsException.class)
65+
public void makeWealthExchange_InsufficientFunds_Buy() {
66+
service.makeWealthExchange(mockedUserId, "USD", BigDecimal.valueOf(3000), true);
67+
}
68+
69+
@Test(expected = BadRequestException.class)
70+
public void makeWealthExchange_InvalidCurrency() {
71+
service.makeWealthExchange(mockedUserId, "XSD", BigDecimal.valueOf(250), false);
72+
}
73+
74+
@Test
75+
public void makeWealthTransaction() {
76+
service.makeWealthTransaction(mockedUserId, "EUR", BigDecimal.valueOf(2516), true);
77+
service.makeWealthTransaction(mockedUserId, "TRY", BigDecimal.valueOf(1000), false);
78+
}
79+
80+
@Test(expected = InsufficientFundsException.class)
81+
public void makeWealthTransaction_InsufficientFunds() {
82+
service.makeWealthTransaction(mockedUserId, "TRY", BigDecimal.valueOf(5000), false);
83+
}
84+
85+
@Test(expected = BadRequestException.class)
86+
public void makeWealthTransaction_InvalidCurrency() {
87+
service.makeWealthTransaction(mockedUserId, "DTD", BigDecimal.valueOf(250), false);
88+
}
89+
90+
@Test
91+
public void findWealth() {
92+
service.findWealth(mockedUserId);
93+
}
94+
95+
}

0 commit comments

Comments
 (0)