|
76 | 76 | @SuppressWarnings("nls") |
77 | 77 | public class TradeRepublicPDFExtractorTest |
78 | 78 | { |
79 | | - TradeRepublicPDFExtractor extractor = new TradeRepublicPDFExtractor(new Client()) |
| 79 | + TradeRepublicPDFExtractor cryptExtractor = new TradeRepublicPDFExtractor(new Client()) |
80 | 80 | { |
81 | 81 | @Override |
82 | 82 | protected List<SecuritySearchProvider> lookupCryptoProvider() |
@@ -1136,7 +1136,7 @@ public void testCryptoKauf01() |
1136 | 1136 | { |
1137 | 1137 | List<Exception> errors = new ArrayList<>(); |
1138 | 1138 |
|
1139 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf01.txt"), errors); |
| 1139 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf01.txt"), errors); |
1140 | 1140 |
|
1141 | 1141 | assertThat(errors, empty()); |
1142 | 1142 | assertThat(countSecurities(results), is(1L)); |
@@ -1170,7 +1170,7 @@ public void testCryptoKauf02() |
1170 | 1170 | { |
1171 | 1171 | List<Exception> errors = new ArrayList<>(); |
1172 | 1172 |
|
1173 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf02.txt"), errors); |
| 1173 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf02.txt"), errors); |
1174 | 1174 |
|
1175 | 1175 | assertThat(errors, empty()); |
1176 | 1176 | assertThat(countSecurities(results), is(1L)); |
@@ -1204,7 +1204,7 @@ public void testCryptoKauf03() |
1204 | 1204 | { |
1205 | 1205 | List<Exception> errors = new ArrayList<>(); |
1206 | 1206 |
|
1207 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf03.txt"), errors); |
| 1207 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf03.txt"), errors); |
1208 | 1208 |
|
1209 | 1209 | assertThat(errors, empty()); |
1210 | 1210 | assertThat(countSecurities(results), is(1L)); |
@@ -1238,7 +1238,7 @@ public void testCryptoKauf04() |
1238 | 1238 | { |
1239 | 1239 | List<Exception> errors = new ArrayList<>(); |
1240 | 1240 |
|
1241 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf04.txt"), errors); |
| 1241 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf04.txt"), errors); |
1242 | 1242 |
|
1243 | 1243 | assertThat(errors, empty()); |
1244 | 1244 | assertThat(countSecurities(results), is(1L)); |
@@ -1272,7 +1272,7 @@ public void testCryptoKauf05() |
1272 | 1272 | { |
1273 | 1273 | List<Exception> errors = new ArrayList<>(); |
1274 | 1274 |
|
1275 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf05.txt"), errors); |
| 1275 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf05.txt"), errors); |
1276 | 1276 |
|
1277 | 1277 | assertThat(errors, empty()); |
1278 | 1278 | assertThat(countSecurities(results), is(1L)); |
@@ -1306,7 +1306,7 @@ public void testCryptoKauf06() |
1306 | 1306 | { |
1307 | 1307 | List<Exception> errors = new ArrayList<>(); |
1308 | 1308 |
|
1309 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf06.txt"), errors); |
| 1309 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf06.txt"), errors); |
1310 | 1310 |
|
1311 | 1311 | assertThat(errors, empty()); |
1312 | 1312 | assertThat(countSecurities(results), is(1L)); |
@@ -1340,7 +1340,7 @@ public void testCryptoKauf07() |
1340 | 1340 | { |
1341 | 1341 | List<Exception> errors = new ArrayList<>(); |
1342 | 1342 |
|
1343 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf07.txt"), errors); |
| 1343 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf07.txt"), errors); |
1344 | 1344 |
|
1345 | 1345 | assertThat(errors, empty()); |
1346 | 1346 | assertThat(countSecurities(results), is(1L)); |
@@ -1374,7 +1374,7 @@ public void testCryptoKauf08() |
1374 | 1374 | { |
1375 | 1375 | List<Exception> errors = new ArrayList<>(); |
1376 | 1376 |
|
1377 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf08.txt"), errors); |
| 1377 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf08.txt"), errors); |
1378 | 1378 |
|
1379 | 1379 | assertThat(errors, empty()); |
1380 | 1380 | assertThat(countSecurities(results), is(1L)); |
@@ -1408,7 +1408,7 @@ public void testCryptoKauf09() |
1408 | 1408 | { |
1409 | 1409 | List<Exception> errors = new ArrayList<>(); |
1410 | 1410 |
|
1411 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf09.txt"), errors); |
| 1411 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoKauf09.txt"), errors); |
1412 | 1412 |
|
1413 | 1413 | assertThat(errors, empty()); |
1414 | 1414 | assertThat(countSecurities(results), is(1L)); |
@@ -1442,7 +1442,7 @@ public void testCryptoVerkauf01() |
1442 | 1442 | { |
1443 | 1443 | List<Exception> errors = new ArrayList<>(); |
1444 | 1444 |
|
1445 | | - var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoVerkauf01.txt"), errors); |
| 1445 | + var results = cryptExtractor.extract(PDFInputFile.loadTestCase(getClass(), "CryptoVerkauf01.txt"), errors); |
1446 | 1446 |
|
1447 | 1447 | assertThat(errors, empty()); |
1448 | 1448 | assertThat(countSecurities(results), is(1L)); |
@@ -8920,6 +8920,85 @@ public void testDividende29WithSecurityInEUR() |
8920 | 8920 | hasTaxes("EUR", 0.01), hasFees("EUR", 0.00)))); |
8921 | 8921 | } |
8922 | 8922 |
|
| 8923 | + @Test |
| 8924 | + public void testDividende30() |
| 8925 | + { |
| 8926 | + var extractor = new TradeRepublicPDFExtractor(new Client()); |
| 8927 | + |
| 8928 | + List<Exception> errors = new ArrayList<>(); |
| 8929 | + |
| 8930 | + var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende30.txt"), errors); |
| 8931 | + |
| 8932 | + errors.forEach(Exception::printStackTrace); |
| 8933 | + assertThat(errors, empty()); |
| 8934 | + assertThat(countSecurities(results), is(1L)); |
| 8935 | + assertThat(countBuySell(results), is(0L)); |
| 8936 | + assertThat(countAccountTransactions(results), is(1L)); |
| 8937 | + assertThat(countAccountTransfers(results), is(0L)); |
| 8938 | + assertThat(countItemsWithFailureMessage(results), is(0L)); |
| 8939 | + assertThat(countSkippedItems(results), is(0L)); |
| 8940 | + assertThat(results.size(), is(2)); |
| 8941 | + new AssertImportActions().check(results, "EUR"); |
| 8942 | + |
| 8943 | + // check security |
| 8944 | + assertThat(results, hasItem(security( // |
| 8945 | + hasIsin("IE0005AJA0P1"), hasWkn(null), hasTicker(null), // |
| 8946 | + hasName("Global Quality Dividends USD (Dist)"), // |
| 8947 | + hasCurrencyCode("USD")))); |
| 8948 | + |
| 8949 | + // check dividends transaction |
| 8950 | + assertThat(results, hasItem(dividend( // |
| 8951 | + hasDate("2026-05-22T00:00"), |
| 8952 | + // hasExDate("2025-05-18T00:00"), // |
| 8953 | + hasShares(63.726878), // |
| 8954 | + hasSource("Dividende30.txt"), // |
| 8955 | + hasNote(null), // |
| 8956 | + hasAmount("EUR", 1.58), // |
| 8957 | + hasGrossValue("EUR", 1.94), // |
| 8958 | + hasForexGrossValue("USD", 2.25), // |
| 8959 | + hasTaxes("EUR", 0.36), // |
| 8960 | + hasFees("EUR", 0.00)))); |
| 8961 | + } |
| 8962 | + |
| 8963 | + @Test |
| 8964 | + public void testDividende30WithSecurityInEUR() |
| 8965 | + { |
| 8966 | + var security = new Security("Global Quality Dividends USD (Dist)", "EUR"); |
| 8967 | + security.setIsin("IE0005AJA0P1"); |
| 8968 | + |
| 8969 | + var client = new Client(); |
| 8970 | + client.addSecurity(security); |
| 8971 | + |
| 8972 | + var extractor = new TradeRepublicPDFExtractor(client); |
| 8973 | + |
| 8974 | + List<Exception> errors = new ArrayList<>(); |
| 8975 | + |
| 8976 | + var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende30.txt"), errors); |
| 8977 | + |
| 8978 | + errors.forEach(Exception::printStackTrace); |
| 8979 | + assertThat(errors, empty()); |
| 8980 | + assertThat(countSecurities(results), is(0L)); |
| 8981 | + assertThat(countBuySell(results), is(0L)); |
| 8982 | + assertThat(countAccountTransactions(results), is(1L)); |
| 8983 | + assertThat(countAccountTransfers(results), is(0L)); |
| 8984 | + assertThat(countItemsWithFailureMessage(results), is(0L)); |
| 8985 | + assertThat(countSkippedItems(results), is(0L)); |
| 8986 | + assertThat(results.size(), is(1)); |
| 8987 | + new AssertImportActions().check(results, "EUR"); |
| 8988 | + |
| 8989 | + // check dividends transaction |
| 8990 | + assertThat(results, hasItem(dividend( // |
| 8991 | + hasDate("2026-05-22T00:00"), |
| 8992 | + // hasExDate("2025-05-18T00:00"), // |
| 8993 | + hasShares(63.726878), // |
| 8994 | + hasSource("Dividende30.txt"), // |
| 8995 | + hasNote(null), // |
| 8996 | + hasAmount("EUR", 1.58), // |
| 8997 | + hasGrossValue("EUR", 1.94), // |
| 8998 | + hasTaxes("EUR", 0.36), // |
| 8999 | + hasFees("EUR", 0.00)))); |
| 9000 | + } |
| 9001 | + |
8923 | 9002 | @Test |
8924 | 9003 | public void testDividend01() |
8925 | 9004 | { |
|
0 commit comments