Skip to content

Commit 7606303

Browse files
authored
test: cover field-level converter precedence (#906)
1 parent 52d4b1f commit 7606303

1 file changed

Lines changed: 86 additions & 0 deletions

File tree

fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/CustomConverterTest.java

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,21 @@
2020
package org.apache.fesod.sheet.converter;
2121

2222
import java.io.File;
23+
import java.nio.charset.StandardCharsets;
24+
import java.nio.file.Files;
2325
import java.sql.Timestamp;
2426
import java.util.ArrayList;
2527
import java.util.List;
2628
import java.util.Map;
2729
import org.apache.fesod.sheet.ExcelWriter;
2830
import org.apache.fesod.sheet.FesodSheet;
31+
import org.apache.fesod.sheet.annotation.ExcelProperty;
2932
import org.apache.fesod.sheet.converters.Converter;
3033
import org.apache.fesod.sheet.converters.ConverterKeyBuild;
34+
import org.apache.fesod.sheet.enums.CellDataTypeEnum;
35+
import org.apache.fesod.sheet.metadata.GlobalConfiguration;
36+
import org.apache.fesod.sheet.metadata.data.WriteCellData;
37+
import org.apache.fesod.sheet.metadata.property.ExcelContentProperty;
3138
import org.apache.fesod.sheet.util.TestFileUtil;
3239
import org.apache.fesod.sheet.write.builder.ExcelWriterSheetBuilder;
3340
import org.apache.fesod.sheet.write.metadata.holder.WriteSheetHolder;
@@ -45,6 +52,7 @@ public class CustomConverterTest {
4552
private static File converterExcelFile12;
4653
private static File converterExcelFile13;
4754
private static File converterCsvFile14;
55+
private static File converterCsvFile15;
4856

4957
@BeforeAll
5058
static void init() {
@@ -53,6 +61,7 @@ static void init() {
5361
converterExcelFile12 = TestFileUtil.createNewFile("converter12.xlsx");
5462
converterExcelFile13 = TestFileUtil.createNewFile("converter13.xlsx");
5563
converterCsvFile14 = TestFileUtil.createNewFile("converter14.csv");
64+
converterCsvFile15 = TestFileUtil.createNewFile("converter15.csv");
5665
}
5766

5867
@Test
@@ -110,6 +119,23 @@ void t06GlobalConverterWriteWithoutFieldLevelConverter() throws Exception {
110119
.doWrite(globalData());
111120
}
112121

122+
@Test
123+
void t07FieldLevelConverterTakesPrecedenceOverRegisteredConverter() throws Exception {
124+
FieldLevelConverterWriteData writeData = new FieldLevelConverterWriteData();
125+
writeData.setFieldValue("value");
126+
writeData.setRegisteredValue("value");
127+
List<FieldLevelConverterWriteData> list = new ArrayList<>();
128+
list.add(writeData);
129+
130+
FesodSheet.write(converterCsvFile15, FieldLevelConverterWriteData.class)
131+
.registerConverter(new RegisteredStringConverter())
132+
.sheet()
133+
.doWrite(list);
134+
135+
String csvContent = new String(Files.readAllBytes(converterCsvFile15.toPath()), StandardCharsets.UTF_8);
136+
Assertions.assertTrue(csvContent.contains("field:value,registered:value"));
137+
}
138+
113139
private void writeFile(File file) throws Exception {
114140
FesodSheet.write(file)
115141
.registerConverter(new TimestampNumberConverter())
@@ -134,4 +160,64 @@ private List<CustomConverterWriteData> data() throws Exception {
134160
list.add(writeData);
135161
return list;
136162
}
163+
164+
public static class FieldLevelConverterWriteData {
165+
@ExcelProperty(value = "fieldValue", converter = FieldLevelStringConverter.class)
166+
private String fieldValue;
167+
168+
@ExcelProperty("registeredValue")
169+
private String registeredValue;
170+
171+
public String getFieldValue() {
172+
return fieldValue;
173+
}
174+
175+
public void setFieldValue(String fieldValue) {
176+
this.fieldValue = fieldValue;
177+
}
178+
179+
public String getRegisteredValue() {
180+
return registeredValue;
181+
}
182+
183+
public void setRegisteredValue(String registeredValue) {
184+
this.registeredValue = registeredValue;
185+
}
186+
}
187+
188+
public static class FieldLevelStringConverter implements Converter<String> {
189+
@Override
190+
public Class<?> supportJavaTypeKey() {
191+
return String.class;
192+
}
193+
194+
@Override
195+
public CellDataTypeEnum supportExcelTypeKey() {
196+
return CellDataTypeEnum.STRING;
197+
}
198+
199+
@Override
200+
public WriteCellData<?> convertToExcelData(
201+
String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
202+
return new WriteCellData<>("field:" + value);
203+
}
204+
}
205+
206+
public static class RegisteredStringConverter implements Converter<String> {
207+
@Override
208+
public Class<?> supportJavaTypeKey() {
209+
return String.class;
210+
}
211+
212+
@Override
213+
public CellDataTypeEnum supportExcelTypeKey() {
214+
return CellDataTypeEnum.STRING;
215+
}
216+
217+
@Override
218+
public WriteCellData<?> convertToExcelData(
219+
String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
220+
return new WriteCellData<>("registered:" + value);
221+
}
222+
}
137223
}

0 commit comments

Comments
 (0)