Skip to content

Commit 3201e3f

Browse files
committed
Improve testing to try to reproduce #57
1 parent 5327842 commit 3201e3f

File tree

3 files changed

+90
-47
lines changed

3 files changed

+90
-47
lines changed

src/main/java/com/fasterxml/jackson/module/jsonSchema/JsonSchemaGenerator.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@
1414
public class JsonSchemaGenerator
1515
{
1616
protected final ObjectMapper _mapper;
17-
18-
private final WrapperFactory _wrapperFactory;
19-
17+
18+
private final WrapperFactory _wrapperFactory;
19+
2020
public JsonSchemaGenerator(ObjectMapper mapper) {
2121
this(mapper, null);
2222
}
23-
23+
2424
public JsonSchemaGenerator(ObjectMapper mapper, WrapperFactory wrapperFactory) {
2525
_mapper = mapper;
26-
_wrapperFactory = wrapperFactory == null ? new WrapperFactory() : wrapperFactory;
26+
_wrapperFactory = wrapperFactory == null ? new WrapperFactory() : wrapperFactory;
2727
}
2828

2929
public JsonSchema generateSchema(Class<?> type) throws JsonMappingException
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.fasterxml.jackson.module.jsonSchema;
2+
3+
import java.util.*;
4+
5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.fasterxml.jackson.databind.SerializationFeature;
7+
8+
public class EnumGenerationTest extends SchemaTestBase
9+
{
10+
public enum Enumerated {
11+
A, B, C;
12+
13+
// add this; should NOT matter but...
14+
@Override
15+
public String toString() {
16+
return "ToString:"+name();
17+
}
18+
}
19+
public static class LetterBean {
20+
21+
public Enumerated letter;
22+
}
23+
24+
/*
25+
/**********************************************************
26+
/* Test methods
27+
/**********************************************************
28+
*/
29+
30+
private final ObjectMapper MAPPER = new ObjectMapper();
31+
32+
public void testEnumDefault() throws Exception
33+
{
34+
JsonSchemaGenerator generator = new JsonSchemaGenerator(MAPPER);
35+
JsonSchema jsonSchema = generator.generateSchema(LetterBean.class);
36+
@SuppressWarnings("unchecked")
37+
Map<String, Object> result = (Map<String, Object>) MAPPER.convertValue(jsonSchema, Map.class);
38+
assertNotNull(result);
39+
assertTrue(jsonSchema.isObjectSchema());
40+
assertEquals(expectedAsMap(false), result);
41+
}
42+
43+
public void testEnumWithToString() throws Exception
44+
{
45+
final ObjectMapper mapper = new ObjectMapper();
46+
mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
47+
48+
JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper);
49+
JsonSchema jsonSchema = generator.generateSchema(LetterBean.class);
50+
@SuppressWarnings("unchecked")
51+
Map<String, Object> result = (Map<String, Object>) mapper.convertValue(jsonSchema, Map.class);
52+
assertNotNull(result);
53+
assertTrue(jsonSchema.isObjectSchema());
54+
assertEquals(expectedAsMap(true), result);
55+
}
56+
57+
@SuppressWarnings("serial")
58+
private Map<String,Object> expectedAsMap(final boolean useToString)
59+
{
60+
return new LinkedHashMap<String, Object>() {
61+
{
62+
put("type", "object");
63+
put("id", "urn:jsonschema:com:fasterxml:jackson:module:jsonSchema:EnumGenerationTest:LetterBean");
64+
put("properties",
65+
new LinkedHashMap<String, Object>() {
66+
{
67+
put("letter",
68+
new LinkedHashMap<String, Object>() {
69+
{
70+
put("type", "string");
71+
put("enum", new ArrayList<String>() {
72+
{
73+
add(useToString ? "ToString:A" : "A");
74+
add(useToString ? "ToString:B" : "B");
75+
add(useToString ? "ToString:C" : "C");
76+
}
77+
});
78+
}
79+
});
80+
}
81+
});
82+
}
83+
};
84+
}
85+
}

src/test/java/com/fasterxml/jackson/module/jsonSchema/TestGenerateJsonSchema.java

-42
Original file line numberDiff line numberDiff line change
@@ -107,16 +107,6 @@ public void setObvious(String s) {
107107
public static FilterProvider secretFilterProvider = new SimpleFilterProvider()
108108
.addFilter("filteredBean", SimpleBeanPropertyFilter.filterOutAllExcept(new String[]{"obvious"}));
109109

110-
public enum Enumerated {
111-
112-
A, B, C;
113-
}
114-
115-
public static class LetterBean {
116-
117-
public Enumerated letter;
118-
}
119-
120110
static class StringMap extends HashMap<String, String> {
121111
}
122112

@@ -253,38 +243,6 @@ public void testSchemaId() throws Exception {
253243
}, result);
254244
}
255245

256-
public void testWithEnum() throws Exception {
257-
JsonSchemaGenerator generator = new JsonSchemaGenerator(MAPPER);
258-
JsonSchema jsonSchema = generator.generateSchema(LetterBean.class);
259-
Map<String, Object> result = writeAndMap(MAPPER, jsonSchema);
260-
assertNotNull(result);
261-
262-
assertEquals(new HashMap<String, Object>() {
263-
{
264-
put("type", "object");
265-
put("id", "urn:jsonschema:com:fasterxml:jackson:module:jsonSchema:TestGenerateJsonSchema:LetterBean");
266-
put("properties",
267-
new HashMap<String, Object>() {
268-
{
269-
put("letter",
270-
new HashMap<String, Object>() {
271-
{
272-
put("type", "string");
273-
put("enum", new ArrayList<String>() {
274-
{
275-
add("A");
276-
add("B");
277-
add("C");
278-
}
279-
});
280-
}
281-
});
282-
}
283-
});
284-
}
285-
}, result);
286-
}
287-
288246
public void testSimpleMap() throws Exception {
289247
JsonSchemaGenerator generator = new JsonSchemaGenerator(MAPPER);
290248
JsonSchema jsonSchema = generator.generateSchema(StringMap.class);

0 commit comments

Comments
 (0)