1 package integrationTest.BeanTests;
2
3 import com.opencsv.bean.CsvToBean;
4 import com.opencsv.bean.CsvToBeanBuilder;
5 import com.opencsv.enums.CSVReaderNullFieldIndicator;
6 import org.junit.jupiter.api.Test;
7
8 import java.io.StringReader;
9 import java.util.List;
10
11 import static org.junit.jupiter.api.Assertions.*;
12
13
14
15
16
17
18
19
20 public class CsvToBeanShouldUseNullFieldIndicatorForStringsTest {
21
22 private static final String CSVDATA = "Id,OwnerId,Name,BillingStreet,BillingCity,BillingState,BillingPostalCode,BillingCountry\n" +
23 "some Id, some owner Id, a name,,\"\", ,\" \",";
24
25 @Test
26 public void emptySeparators() {
27 CsvToBean<AccountBean> csvToBean = new CsvToBeanBuilder<AccountBean>(new StringReader(CSVDATA))
28 .withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
29 .withType(AccountBean.class)
30 .build();
31
32 List<AccountBean> beans = csvToBean.parse();
33
34 assertEquals(1, beans.size());
35 AccountBean accountBean = beans.get(0);
36 assertNull(accountBean.getBillingStreet());
37 assertTrue(accountBean.getBillingCity().isEmpty());
38 assertEquals(" ", accountBean.getBillingState());
39 assertEquals(" ", accountBean.getBillingPostcode());
40 assertNull(accountBean.getBillingCountry());
41 }
42
43 @Test
44 public void emptyQuotes() {
45 CsvToBean<AccountBean> csvToBean = new CsvToBeanBuilder<AccountBean>(new StringReader(CSVDATA))
46 .withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_QUOTES)
47 .withType(AccountBean.class)
48 .build();
49
50 List<AccountBean> beans = csvToBean.parse();
51
52 assertEquals(1, beans.size());
53 AccountBean accountBean = beans.get(0);
54 assertTrue(accountBean.getBillingStreet().isEmpty());
55 assertNull(accountBean.getBillingCity());
56 assertEquals(" ", accountBean.getBillingState());
57 assertEquals(" ", accountBean.getBillingPostcode());
58 assertTrue(accountBean.getBillingCountry().isEmpty());
59 }
60
61 @Test
62 public void neither() {
63 CsvToBean<AccountBean> csvToBean = new CsvToBeanBuilder<AccountBean>(new StringReader(CSVDATA))
64 .withFieldAsNull(CSVReaderNullFieldIndicator.NEITHER)
65 .withType(AccountBean.class)
66 .build();
67
68 List<AccountBean> beans = csvToBean.parse();
69
70 assertEquals(1, beans.size());
71 AccountBean accountBean = beans.get(0);
72 assertTrue(accountBean.getBillingStreet().isEmpty());
73 assertTrue(accountBean.getBillingCity().isEmpty());
74 assertEquals(" ", accountBean.getBillingState());
75 assertEquals(" ", accountBean.getBillingPostcode());
76 assertTrue(accountBean.getBillingCountry().isEmpty());
77 }
78
79
80 @Test
81 public void both() {
82 CsvToBean<AccountBean> csvToBean = new CsvToBeanBuilder<AccountBean>(new StringReader(CSVDATA))
83 .withFieldAsNull(CSVReaderNullFieldIndicator.BOTH)
84 .withType(AccountBean.class)
85 .build();
86
87 List<AccountBean> beans = csvToBean.parse();
88
89 assertEquals(1, beans.size());
90 AccountBean accountBean = beans.get(0);
91 assertNull(accountBean.getBillingStreet());
92 assertNull(accountBean.getBillingCity());
93 assertEquals(" ", accountBean.getBillingState());
94 assertEquals(" ", accountBean.getBillingPostcode());
95 assertNull(accountBean.getBillingCountry());
96 }
97 }