|
1 | 1 | package name.abuchen.portfolio.datatransfer.pdf.consorsbank; |
2 | 2 |
|
3 | | -import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.check; |
4 | 3 | import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.deposit; |
5 | 4 | import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.dividend; |
6 | 5 | import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasAmount; |
@@ -4016,14 +4015,7 @@ public void testDividende19WithSecurityInEUR() |
4016 | 4015 | hasSource("Dividende19.txt"), // |
4017 | 4016 | hasNote(null), // |
4018 | 4017 | hasAmount("EUR", 44.78), hasGrossValue("EUR", 60.15), // |
4019 | | - hasTaxes("EUR", 9.02 + 6.02 + 0.33), hasFees("EUR", 0.00), // |
4020 | | - check(tx -> { |
4021 | | - var c = new CheckCurrenciesAction(); |
4022 | | - var account = new Account(); |
4023 | | - account.setCurrencyCode("EUR"); |
4024 | | - var s = c.process((AccountTransaction) tx, account); |
4025 | | - assertThat(s, is(Status.OK_STATUS)); |
4026 | | - })))); |
| 4018 | + hasTaxes("EUR", 9.02 + 6.02 + 0.33), hasFees("EUR", 0.00)))); |
4027 | 4019 | } |
4028 | 4020 |
|
4029 | 4021 | @Test |
@@ -4157,14 +4149,7 @@ public void testDividende22WithSecurityInEUR() |
4157 | 4149 | hasSource("Dividende22.txt"), // |
4158 | 4150 | hasNote(null), // |
4159 | 4151 | hasAmount("EUR", 56.33), hasGrossValue("EUR", 56.33), // |
4160 | | - hasTaxes("EUR", 0.00), hasFees("EUR", 0.00), // |
4161 | | - check(tx -> { |
4162 | | - var c = new CheckCurrenciesAction(); |
4163 | | - var account = new Account(); |
4164 | | - account.setCurrencyCode("EUR"); |
4165 | | - var s = c.process((AccountTransaction) tx, account); |
4166 | | - assertThat(s, is(Status.OK_STATUS)); |
4167 | | - })))); |
| 4152 | + hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))); |
4168 | 4153 | } |
4169 | 4154 |
|
4170 | 4155 | @Test |
@@ -4232,14 +4217,7 @@ public void testDividende23WithSecurityInEUR() |
4232 | 4217 | hasSource("Dividende23.txt"), // |
4233 | 4218 | hasNote(null), // |
4234 | 4219 | hasAmount("EUR", 1.44), hasGrossValue("EUR", 1.94), // |
4235 | | - hasTaxes("EUR", 0.29 + 0.19 + 0.01 + 0.01), hasFees("EUR", 0.00), // |
4236 | | - check(tx -> { |
4237 | | - var c = new CheckCurrenciesAction(); |
4238 | | - var account = new Account(); |
4239 | | - account.setCurrencyCode("EUR"); |
4240 | | - var s = c.process((AccountTransaction) tx, account); |
4241 | | - assertThat(s, is(Status.OK_STATUS)); |
4242 | | - })))); |
| 4220 | + hasTaxes("EUR", 0.29 + 0.19 + 0.01 + 0.01), hasFees("EUR", 0.00)))); |
4243 | 4221 | } |
4244 | 4222 |
|
4245 | 4223 | @Test |
@@ -4307,14 +4285,7 @@ public void testDividende24WithSecurityInEUR() |
4307 | 4285 | hasSource("Dividende24.txt"), // |
4308 | 4286 | hasNote(null), // |
4309 | 4287 | hasAmount("EUR", 10.38), hasGrossValue("EUR", 12.22), // |
4310 | | - hasTaxes("EUR", 1.84), hasFees("EUR", 0.00), // |
4311 | | - check(tx -> { |
4312 | | - var c = new CheckCurrenciesAction(); |
4313 | | - var account = new Account(); |
4314 | | - account.setCurrencyCode("EUR"); |
4315 | | - var s = c.process((AccountTransaction) tx, account); |
4316 | | - assertThat(s, is(Status.OK_STATUS)); |
4317 | | - })))); |
| 4288 | + hasTaxes("EUR", 1.84), hasFees("EUR", 0.00)))); |
4318 | 4289 | } |
4319 | 4290 |
|
4320 | 4291 | @Test |
@@ -4382,14 +4353,7 @@ public void testDividende25WithSecurityInEUR() |
4382 | 4353 | hasSource("Dividende25.txt"), // |
4383 | 4354 | hasNote(null), // |
4384 | 4355 | hasAmount("EUR", 41.99), hasGrossValue("EUR", 41.99), // |
4385 | | - hasTaxes("EUR", 0.00), hasFees("EUR", 0.00), // |
4386 | | - check(tx -> { |
4387 | | - var c = new CheckCurrenciesAction(); |
4388 | | - var account = new Account(); |
4389 | | - account.setCurrencyCode("EUR"); |
4390 | | - var s = c.process((AccountTransaction) tx, account); |
4391 | | - assertThat(s, is(Status.OK_STATUS)); |
4392 | | - })))); |
| 4356 | + hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))); |
4393 | 4357 | } |
4394 | 4358 |
|
4395 | 4359 | @Test |
@@ -4457,14 +4421,7 @@ public void testDividende26WithSecurityInEUR() |
4457 | 4421 | hasSource("Dividende26.txt"), // |
4458 | 4422 | hasNote(null), // |
4459 | 4423 | hasAmount("EUR", 70.84), hasGrossValue("EUR", 96.21), // |
4460 | | - hasTaxes("EUR", 24.05 + 1.32), hasFees("EUR", 0.00), // |
4461 | | - check(tx -> { |
4462 | | - var c = new CheckCurrenciesAction(); |
4463 | | - var account = new Account(); |
4464 | | - account.setCurrencyCode("EUR"); |
4465 | | - var s = c.process((AccountTransaction) tx, account); |
4466 | | - assertThat(s, is(Status.OK_STATUS)); |
4467 | | - })))); |
| 4424 | + hasTaxes("EUR", 24.05 + 1.32), hasFees("EUR", 0.00)))); |
4468 | 4425 | } |
4469 | 4426 |
|
4470 | 4427 | @Test |
@@ -4532,14 +4489,7 @@ public void testDividende27WithSecurityInEUR() |
4532 | 4489 | hasSource("Dividende27.txt"), // |
4533 | 4490 | hasNote(null), // |
4534 | 4491 | hasAmount("EUR", 69.68), hasGrossValue("EUR", 69.68), // |
4535 | | - hasTaxes("EUR", 0.00), hasFees("EUR", 0.00), // |
4536 | | - check(tx -> { |
4537 | | - var c = new CheckCurrenciesAction(); |
4538 | | - var account = new Account(); |
4539 | | - account.setCurrencyCode("EUR"); |
4540 | | - var s = c.process((AccountTransaction) tx, account); |
4541 | | - assertThat(s, is(Status.OK_STATUS)); |
4542 | | - })))); |
| 4492 | + hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))); |
4543 | 4493 | } |
4544 | 4494 |
|
4545 | 4495 | @Test |
@@ -4607,14 +4557,7 @@ public void testDividende28WithSecurityInEUR() |
4607 | 4557 | hasSource("Dividende28.txt"), // |
4608 | 4558 | hasNote(null), // |
4609 | 4559 | hasAmount("EUR", 9.75), hasGrossValue("EUR", 11.47), // |
4610 | | - hasTaxes("EUR", 1.72), hasFees("EUR", 0.00), // |
4611 | | - check(tx -> { |
4612 | | - var c = new CheckCurrenciesAction(); |
4613 | | - var account = new Account(); |
4614 | | - account.setCurrencyCode("EUR"); |
4615 | | - var s = c.process((AccountTransaction) tx, account); |
4616 | | - assertThat(s, is(Status.OK_STATUS)); |
4617 | | - })))); |
| 4560 | + hasTaxes("EUR", 1.72), hasFees("EUR", 0.00)))); |
4618 | 4561 | } |
4619 | 4562 |
|
4620 | 4563 | @Test |
@@ -4682,14 +4625,75 @@ public void testDividende29WithSecurityInEUR() |
4682 | 4625 | hasSource("Dividende29.txt"), // |
4683 | 4626 | hasNote(null), // |
4684 | 4627 | hasAmount("EUR", 1.81), hasGrossValue("EUR", 2.13), // |
4685 | | - hasTaxes("EUR", 0.32), hasFees("EUR", 0.00), // |
4686 | | - check(tx -> { |
4687 | | - var c = new CheckCurrenciesAction(); |
4688 | | - var account = new Account(); |
4689 | | - account.setCurrencyCode("EUR"); |
4690 | | - var s = c.process((AccountTransaction) tx, account); |
4691 | | - assertThat(s, is(Status.OK_STATUS)); |
4692 | | - })))); |
| 4628 | + hasTaxes("EUR", 0.32), hasFees("EUR", 0.00)))); |
| 4629 | + } |
| 4630 | + |
| 4631 | + @Test |
| 4632 | + public void testDividende30() |
| 4633 | + { |
| 4634 | + var extractor = new ConsorsbankPDFExtractor(new Client()); |
| 4635 | + |
| 4636 | + List<Exception> errors = new ArrayList<>(); |
| 4637 | + |
| 4638 | + var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende30.txt"), errors); |
| 4639 | + |
| 4640 | + assertThat(errors, empty()); |
| 4641 | + assertThat(countSecurities(results), is(1L)); |
| 4642 | + assertThat(countBuySell(results), is(0L)); |
| 4643 | + assertThat(countAccountTransactions(results), is(1L)); |
| 4644 | + assertThat(countAccountTransfers(results), is(0L)); |
| 4645 | + assertThat(countItemsWithFailureMessage(results), is(0L)); |
| 4646 | + assertThat(results.size(), is(2)); |
| 4647 | + new AssertImportActions().check(results, "USD"); |
| 4648 | + |
| 4649 | + // check security |
| 4650 | + assertThat(results, hasItem(security( // |
| 4651 | + hasIsin("US7427181091"), hasWkn("852062"), hasTicker(null), // |
| 4652 | + hasName("PROCTER & GAMBLE CO., THE Registered Shares o.N."), // |
| 4653 | + hasCurrencyCode("USD")))); |
| 4654 | + |
| 4655 | + // check dividends transaction |
| 4656 | + assertThat(results, hasItem(dividend( // |
| 4657 | + hasDate("2025-11-17T00:00"), hasShares(100.00), // |
| 4658 | + hasSource("Dividende30.txt"), // |
| 4659 | + hasNote(null), // |
| 4660 | + hasAmount("USD", 78.68), hasGrossValue("USD", 105.68), // |
| 4661 | + hasTaxes("USD", 27.00), hasFees("USD", 0.00)))); |
| 4662 | + } |
| 4663 | + |
| 4664 | + @Test |
| 4665 | + public void testDividende30WithSecurityInEUR() |
| 4666 | + { |
| 4667 | + var security = new Security("PROCTER & GAMBLE CO., THE Registered Shares o.N.", "EUR"); |
| 4668 | + security.setIsin("US7427181091"); |
| 4669 | + security.setWkn("852062"); |
| 4670 | + |
| 4671 | + var client = new Client(); |
| 4672 | + client.addSecurity(security); |
| 4673 | + |
| 4674 | + var extractor = new ConsorsbankPDFExtractor(client); |
| 4675 | + |
| 4676 | + List<Exception> errors = new ArrayList<>(); |
| 4677 | + |
| 4678 | + var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende30.txt"), errors); |
| 4679 | + |
| 4680 | + assertThat(errors, empty()); |
| 4681 | + assertThat(countSecurities(results), is(0L)); |
| 4682 | + assertThat(countBuySell(results), is(0L)); |
| 4683 | + assertThat(countAccountTransactions(results), is(1L)); |
| 4684 | + assertThat(countAccountTransfers(results), is(0L)); |
| 4685 | + assertThat(countItemsWithFailureMessage(results), is(0L)); |
| 4686 | + assertThat(results.size(), is(1)); |
| 4687 | + new AssertImportActions().check(results, "USD"); |
| 4688 | + |
| 4689 | + // check dividends transaction |
| 4690 | + assertThat(results, hasItem(dividend( // |
| 4691 | + hasDate("2025-11-17T00:00"), hasShares(100.00), // |
| 4692 | + hasSource("Dividende30.txt"), // |
| 4693 | + hasNote(null), // |
| 4694 | + hasAmount("USD", 78.68), hasGrossValue("USD", 105.68), // |
| 4695 | + hasForexGrossValue("EUR", 90.99), // |
| 4696 | + hasTaxes("USD", 27.00), hasFees("USD", 0.00)))); |
4693 | 4697 | } |
4694 | 4698 |
|
4695 | 4699 | @Test |
|
0 commit comments