Skip to content

Commit 4fbee1f

Browse files
committed
fix(dependency): mockito example replaced
1 parent fdfd59b commit 4fbee1f

File tree

4 files changed

+78
-59
lines changed

4 files changed

+78
-59
lines changed

3.4_dependency/cart-with-mocks/pom.xml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,27 @@
1515
</properties>
1616

1717
<dependencies>
18+
<dependency>
19+
<groupId>com.google.code.gson</groupId>
20+
<artifactId>gson</artifactId>
21+
<version>2.8.6</version>
22+
</dependency>
1823
<dependency>
1924
<groupId>org.projectlombok</groupId>
2025
<artifactId>lombok</artifactId>
21-
<version>1.18.12</version>
26+
<version>1.18.16</version>
2227
<scope>provided</scope>
2328
</dependency>
2429
<dependency>
2530
<groupId>org.junit.jupiter</groupId>
2631
<artifactId>junit-jupiter</artifactId>
27-
<version>5.4.2</version>
32+
<version>5.7.0</version>
2833
<scope>test</scope>
2934
</dependency>
3035
<dependency>
3136
<groupId>org.mockito</groupId>
3237
<artifactId>mockito-junit-jupiter</artifactId>
33-
<version>3.3.3</version>
38+
<version>3.6.28</version>
3439
<scope>test</scope>
3540
</dependency>
3641
</dependencies>

3.4_dependency/cart-with-mocks/src/main/java/ru/netology/manager/CartManager.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,12 @@ public PurchaseItem[] getAll() {
2727
public void removeById(int id) {
2828
repository.removeById(id);
2929
}
30+
31+
public int sum() {
32+
int result = 0;
33+
for (PurchaseItem item : getAll()) {
34+
result = result + item.getProductPrice() * item.getCount();
35+
}
36+
return result;
37+
}
3038
}
Lines changed: 49 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,66 @@
11
package ru.netology.repository;
22

3+
import com.google.gson.Gson;
34
import ru.netology.domain.PurchaseItem;
45

6+
import java.net.URI;
7+
import java.net.http.HttpClient;
8+
import java.net.http.HttpRequest;
9+
import java.net.http.HttpResponse;
10+
511
public class CartRepository {
6-
private PurchaseItem[] items = new PurchaseItem[0];
12+
private String dbUrl;
13+
private HttpClient client = HttpClient.newHttpClient();
14+
private Gson gson = new Gson();
15+
16+
public CartRepository(String dbUrl) {
17+
this.dbUrl = dbUrl;
18+
}
719

820
public void save(PurchaseItem item) {
9-
int length = items.length + 1;
10-
PurchaseItem[] tmp = new PurchaseItem[length];
11-
System.arraycopy(items, 0, tmp, 0, items.length);
12-
int lastIndex = tmp.length - 1;
13-
tmp[lastIndex] = item;
14-
items = tmp;
21+
try {
22+
HttpRequest request = HttpRequest.newBuilder(URI.create(dbUrl))
23+
.header("Content-Type", "application/json")
24+
.POST(HttpRequest.BodyPublishers.ofString(gson.toJson(item)))
25+
.build();
26+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
27+
if (response.statusCode() < 200 || response.statusCode() > 299) {
28+
throw new RuntimeException("request didn't complete successfully");
29+
}
30+
} catch (Exception e) {
31+
throw new RuntimeException(e);
32+
}
1533
}
1634

1735
public PurchaseItem[] findAll() {
18-
return items;
36+
try {
37+
HttpRequest request = HttpRequest.newBuilder(URI.create(dbUrl))
38+
.header("Accept", "application/json")
39+
.GET()
40+
.build();
41+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
42+
if (response.statusCode() < 200 || response.statusCode() > 299) {
43+
throw new RuntimeException("request didn't complete successfully");
44+
}
45+
return gson.fromJson(response.body(), PurchaseItem[].class);
46+
} catch (Exception e) {
47+
throw new RuntimeException(e);
48+
}
1949
}
2050

2151
public void removeById(int id) {
22-
int length = items.length - 1;
23-
PurchaseItem[] tmp = new PurchaseItem[length];
24-
int index = 0;
25-
for (PurchaseItem item : items) {
26-
if (item.getId() != id) {
27-
tmp[index] = item;
28-
index++;
52+
try {
53+
HttpRequest request = HttpRequest.newBuilder(URI.create(dbUrl + "/" + id))
54+
.header("Content-Type", "application/json")
55+
.DELETE()
56+
.build();
57+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
58+
if (response.statusCode() < 200 || response.statusCode() > 299) {
59+
throw new RuntimeException("request didn't complete successfully");
2960
}
61+
} catch (Exception e) {
62+
throw new RuntimeException(e);
3063
}
31-
items = tmp;
3264
}
3365
}
66+
Lines changed: 13 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package ru.netology.manager;
22

3-
import org.junit.jupiter.api.BeforeEach;
43
import org.junit.jupiter.api.Test;
54
import org.junit.jupiter.api.extension.ExtendWith;
65
import org.mockito.InjectMocks;
@@ -9,58 +8,32 @@
98
import ru.netology.domain.PurchaseItem;
109
import ru.netology.repository.CartRepository;
1110

12-
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
13-
import static org.mockito.Mockito.*;
11+
import static org.junit.jupiter.api.Assertions.assertEquals;
12+
import static org.mockito.Mockito.doReturn;
13+
import static org.mockito.Mockito.verify;
1414

1515
@ExtendWith(MockitoExtension.class)
1616
public class CartManagerTestNonEmpty {
1717
@Mock
1818
private CartRepository repository;
1919
@InjectMocks
2020
private CartManager manager;
21-
private PurchaseItem first = new PurchaseItem(1, 1, "first", 1, 1);
22-
private PurchaseItem second = new PurchaseItem(2, 2, "second", 1, 1);
23-
private PurchaseItem third = new PurchaseItem(3, 3, "third", 1, 1);
24-
25-
@BeforeEach
26-
public void setUp() {
27-
manager.add(first);
28-
manager.add(second);
29-
manager.add(third);
30-
}
21+
private PurchaseItem first = new PurchaseItem(1, 1, "first", 100, 2);
22+
private PurchaseItem second = new PurchaseItem(2, 2, "second", 10, 1);
23+
private PurchaseItem third = new PurchaseItem(3, 3, "third", 1, 2);
3124

3225
@Test
33-
public void shouldRemoveIfExists() {
34-
int idToRemove = 1;
26+
public void shouldCalculateSum() {
3527
// настройка заглушки
36-
PurchaseItem[] returned = new PurchaseItem[]{second, third};
37-
doReturn(returned).when(repository).findAll();
38-
doNothing().when(repository).removeById(idToRemove);
39-
40-
manager.removeById(idToRemove);
41-
PurchaseItem[] expected = new PurchaseItem[]{third, second};
42-
PurchaseItem[] actual = manager.getAll();
43-
assertArrayEquals(expected, actual);
44-
45-
// удостоверяемся, что заглушка была вызвана с нужным значением
46-
// но это уже проверка "внутренней" реализации
47-
verify(repository).removeById(idToRemove);
48-
}
49-
50-
@Test
51-
public void shouldNotRemoveIfNotExists() {
52-
int idToRemove = 4;
5328
PurchaseItem[] returned = new PurchaseItem[]{first, second, third};
5429
doReturn(returned).when(repository).findAll();
55-
doNothing().when(repository).removeById(idToRemove);
5630

57-
manager.removeById(idToRemove);
58-
PurchaseItem[] expected = new PurchaseItem[]{third, second, first};
59-
PurchaseItem[] actual = manager.getAll();
31+
int expected = 212;
32+
int actual = manager.sum();
33+
assertEquals(expected, actual);
6034

61-
assertArrayEquals(expected, actual);
62-
// удостоверяемся, что заглушка была вызвана с нужным значением
35+
// удостоверяемся, что заглушка была вызвана
6336
// но это уже проверка "внутренней" реализации
64-
verify(repository).removeById(idToRemove);
37+
verify(repository).findAll();
6538
}
66-
}
39+
}

0 commit comments

Comments
 (0)