-
-
Notifications
You must be signed in to change notification settings - Fork 200
Expand file tree
/
Copy pathRouteSetTest.java
More file actions
131 lines (105 loc) · 3.67 KB
/
RouteSetTest.java
File metadata and controls
131 lines (105 loc) · 3.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
* Jooby https://jooby.io
* Apache License Version 2.0 https://jooby.io/LICENSE.txt
* Copyright 2014 Edgar Espina
*/
package io.jooby;
import static org.junit.jupiter.api.Assertions.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class RouteSetTest {
private List<Route> routeList;
private Route route1;
private Route route2;
private Route.Set routeSet;
@BeforeEach
void setUp() {
route1 = new Route("GET", "/a", ctx -> "a");
route2 = new Route("POST", "/b", ctx -> "b");
routeList = new ArrayList<>(Arrays.asList(route1, route2));
routeSet = new Route.Set(routeList);
}
@Test
void testGetAndSetRoutes() {
assertEquals(2, routeSet.getRoutes().size());
List<Route> newList = Collections.singletonList(new Route("GET", "/c", ctx -> "c"));
routeSet.setRoutes(newList);
assertEquals(1, routeSet.getRoutes().size());
assertEquals("/c", routeSet.getRoutes().get(0).getPattern());
}
@Test
void testProduces() {
routeSet.produces(MediaType.json, MediaType.xml);
assertEquals(2, route1.getProduces().size());
assertTrue(route1.getProduces().contains(MediaType.json));
assertEquals(2, route2.getProduces().size());
// Should NOT override if already set
Route route3 = new Route("GET", "/3", ctx -> "3");
route3.setProduces(Collections.singletonList(MediaType.html));
Route.Set set2 = new Route.Set(Collections.singletonList(route3));
set2.produces(MediaType.json);
assertEquals(1, route3.getProduces().size());
assertEquals(MediaType.html, route3.getProduces().get(0));
}
@Test
void testConsumes() {
routeSet.consumes(MediaType.json);
assertEquals(MediaType.json, route1.getConsumes().get(0));
assertEquals(MediaType.json, route2.getConsumes().get(0));
}
@Test
void testAttributes() {
// Test bulk map
routeSet.setAttributes(Map.of("attr1", "val1", "attr2", "val2"));
assertEquals("val1", route1.getAttribute("attr1"));
assertEquals("val2", route2.getAttribute("attr2"));
// Test single attribute with putIfAbsent logic
route1.setAttribute("existing", "original");
routeSet.setAttribute("existing", "new");
routeSet.setAttribute("fresh", "value");
assertEquals("original", route1.getAttribute("existing"));
assertEquals("value", route1.getAttribute("fresh"));
}
@Test
void testExecutorKey() {
route1.setExecutorKey("oldKey");
routeSet.setExecutorKey("newKey");
assertEquals("oldKey", route1.getExecutorKey());
assertEquals("newKey", route2.getExecutorKey());
}
@Test
void testTags() {
routeSet.tags("tag1", "tag2");
assertEquals(Arrays.asList("tag1", "tag2"), routeSet.getTags());
assertTrue(route1.getTags().contains("tag1"));
assertTrue(route2.getTags().contains("tag2"));
// Check empty tags state
Route.Set emptySet = new Route.Set(new ArrayList<>());
assertTrue(emptySet.getTags().isEmpty());
}
@Test
void testSummaryAndDescription() {
routeSet.summary("General Summary");
routeSet.description("General Description");
assertEquals("General Summary", routeSet.getSummary());
assertEquals("General Description", routeSet.getDescription());
// Note: Route.Set.setSummary does NOT propagate to individual routes in the current
// implementation
// it only stores it in the Set instance for OpenAPI generators.
assertNull(route1.getSummary());
}
@Test
void testIterator() {
int count = 0;
for (Route r : routeSet) {
assertNotNull(r);
count++;
}
assertEquals(2, count);
}
}