|
1 | 1 | package io.edurt.datacap.convert.json |
2 | 2 |
|
3 | | -import com.google.inject.Guice.createInjector |
4 | | -import com.google.inject.Injector |
5 | | -import io.edurt.datacap.convert.ConvertFilter |
6 | | -import io.edurt.datacap.convert.ConvertManager |
7 | 3 | import io.edurt.datacap.convert.model.ConvertRequest |
8 | | -import org.junit.Before |
| 4 | +import io.edurt.datacap.plugin.PluginConfigure |
| 5 | +import io.edurt.datacap.plugin.PluginManager |
| 6 | +import io.edurt.datacap.plugin.utils.PluginPathUtils |
| 7 | +import org.junit.Assert.assertNotNull |
9 | 8 | import org.junit.Test |
10 | 9 | import org.slf4j.LoggerFactory.getLogger |
11 | 10 | import java.io.File |
12 | 11 | import java.io.FileInputStream |
| 12 | +import java.nio.file.Path |
| 13 | +import java.time.LocalDateTime |
| 14 | +import java.time.format.DateTimeFormatter |
13 | 15 | import kotlin.test.assertTrue |
14 | 16 |
|
| 17 | + |
15 | 18 | class JsonConvertTest |
16 | 19 | { |
17 | 20 | private val log = getLogger(this::class.java) |
18 | 21 | private val name = "JsonConvert" |
19 | | - private var injector: Injector? = null |
| 22 | + private val pluginManager: PluginManager |
20 | 23 | private val request: ConvertRequest = ConvertRequest() |
21 | 24 |
|
22 | | - @Before |
23 | | - fun before() |
| 25 | + init |
24 | 26 | { |
25 | | - injector = createInjector(ConvertManager()) |
| 27 | + val projectRoot: Path = PluginPathUtils.findProjectRoot() |
| 28 | + val config: PluginConfigure? = PluginConfigure.builder() |
| 29 | + .pluginsDir(projectRoot.resolve("convert/datacap-convert-json")) |
| 30 | + .scanDepth(2) |
| 31 | + .build() |
| 32 | + |
| 33 | + pluginManager = PluginManager(config) |
| 34 | + pluginManager.start() |
26 | 35 |
|
27 | 36 | request.name = "test" |
28 | 37 | request.path = System.getProperty("user.dir") |
29 | | - request.headers = listOf("name", "age") |
| 38 | + request.headers = listOf("name", "age", "datatime") |
30 | 39 |
|
31 | | - val l1 = listOf("Test", 12) |
32 | | - val l2 = listOf("Test1", 121) |
| 40 | + val timeString = LocalDateTime.parse("2023-12-01T10:30:00").format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) |
| 41 | + val l1 = listOf("Test", 12, timeString) |
| 42 | + val l2 = listOf("Test1", 121, timeString) |
| 43 | + request.columns = listOf(l1, l2) |
33 | 44 | request.columns = listOf(l1, l2) |
34 | 45 | } |
35 | 46 |
|
36 | 47 | @Test |
37 | 48 | fun testFormat() |
38 | 49 | { |
39 | | - injector?.let { injector -> |
40 | | - ConvertFilter.filter(injector, name) |
41 | | - .ifPresent { file -> |
42 | | - val response = file.format(request) |
43 | | - log.info("headers: [ ${response.headers} ]") |
44 | | - response.columns |
45 | | - .let { columns -> |
46 | | - columns.forEachIndexed { index, line -> |
47 | | - log.info("index: [ $index ], line: [ $line ]") |
48 | | - } |
49 | | - } |
| 50 | + pluginManager.getPlugin(name) |
| 51 | + .ifPresent { plugin -> |
| 52 | + val service = plugin.getService(JsonConvertService::class.java) |
| 53 | + assertNotNull(service) |
50 | 54 |
|
51 | | - assertTrue { |
52 | | - response.successful == true |
| 55 | + val response = service.format(request) |
| 56 | + log.info("headers: [ ${response.headers} ]") |
| 57 | + response.columns |
| 58 | + .let { columns -> |
| 59 | + columns.forEachIndexed { index, line -> |
| 60 | + log.info("index: [ $index ], line: [ $line ]") |
| 61 | + } |
53 | 62 | } |
| 63 | + |
| 64 | + assertTrue { |
| 65 | + response.successful == true |
54 | 66 | } |
55 | | - } |
| 67 | + } |
56 | 68 | } |
57 | 69 |
|
58 | 70 | @Test |
59 | 71 | fun testFormatStream() |
60 | 72 | { |
61 | | - injector?.let { injector -> |
62 | | - ConvertFilter.filter(injector, name) |
63 | | - .ifPresent { file -> |
64 | | - request.stream = FileInputStream(File("${System.getProperty("user.dir")}/${request.name}.json")) |
65 | | - val response = file.formatStream(request) |
66 | | - log.info("headers: [ ${response.headers} ]") |
67 | | - response.columns |
68 | | - .let { columns -> |
69 | | - columns.forEachIndexed { index, line -> |
70 | | - log.info("index: [ $index ], line: [ $line ]") |
71 | | - } |
| 73 | + pluginManager.getPlugin(name) |
| 74 | + .ifPresent { plugin -> |
| 75 | + val service = plugin.getService(JsonConvertService::class.java) |
| 76 | + assertNotNull(service) |
| 77 | + |
| 78 | + request.stream = FileInputStream(File("${System.getProperty("user.dir")}/${request.name}.json")) |
| 79 | + val response = service.formatStream(request) |
| 80 | + log.info("headers: [ ${response.headers} ]") |
| 81 | + response.columns |
| 82 | + .let { columns -> |
| 83 | + columns.forEachIndexed { index, line -> |
| 84 | + log.info("index: [ $index ], line: [ $line ]") |
72 | 85 | } |
73 | | - assertTrue { |
74 | | - response.successful == true |
75 | 86 | } |
| 87 | + assertTrue { |
| 88 | + response.successful == true |
76 | 89 | } |
77 | | - } |
| 90 | + } |
78 | 91 | } |
79 | 92 |
|
80 | 93 | @Test |
81 | 94 | fun testWriter() |
82 | 95 | { |
83 | | - injector?.let { injector -> |
84 | | - ConvertFilter.filter(injector, name) |
85 | | - .ifPresent { file -> |
86 | | - assertTrue { |
87 | | - file.writer(request) |
88 | | - .successful == true |
89 | | - } |
| 96 | + pluginManager.getPlugin(name) |
| 97 | + .ifPresent { plugin -> |
| 98 | + val service = plugin.getService(JsonConvertService::class.java) |
| 99 | + assertNotNull(service) |
| 100 | + |
| 101 | + assertTrue { |
| 102 | + service.writer(request).successful == true |
90 | 103 | } |
91 | | - } |
| 104 | + } |
92 | 105 | } |
93 | 106 |
|
94 | 107 | @Test |
95 | 108 | fun testReader() |
96 | 109 | { |
97 | | - injector?.let { injector -> |
98 | | - ConvertFilter.filter(injector, name) |
99 | | - .ifPresent { file -> |
100 | | - val response = file.reader(request) |
101 | | - log.info("headers: ${response.headers}") |
102 | | - response.columns |
103 | | - .forEach { |
104 | | - log.info("columns: $it") |
105 | | - } |
106 | | - assertTrue { |
107 | | - response.successful == true |
| 110 | + pluginManager.getPlugin(name) |
| 111 | + .ifPresent { plugin -> |
| 112 | + val service = plugin.getService(JsonConvertService::class.java) |
| 113 | + assertNotNull(service) |
| 114 | + |
| 115 | + service.writer(request) |
| 116 | + |
| 117 | + val response = service.reader(request) |
| 118 | + log.info("headers: ${response.headers}") |
| 119 | + response.columns |
| 120 | + .forEach { |
| 121 | + log.info("columns: $it") |
108 | 122 | } |
| 123 | + assertTrue { |
| 124 | + response.successful == true |
109 | 125 | } |
110 | | - } |
| 126 | + } |
111 | 127 | } |
112 | 128 | } |
0 commit comments