Skip to content

Commit 25455b8

Browse files
committed
Updated and added testcase for PaymentOrder
1 parent 39fadf9 commit 25455b8

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

QRCoderTests/PayloadGeneratorTests.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3280,24 +3280,44 @@ public void russiapayment_generator_should_throw_no_separator_exception()
32803280
[Fact]
32813281
[Category("PayloadGenerator/RussiaPaymentOrder")]
32823282
public void russiapayment_generator_should_throw_data_too_long_exception()
3283+
{
3284+
var account = "40702810138250123017";
3285+
var bic = "044525225";
3286+
var bankName = "A very very very very very long bank name";
3287+
// We use € symbol for the test case, because it needs 2-bytes. Otherwise we couldn't generate more than 300 bytes
3288+
// of mandatory data to trigger the test case and stay at the same time within the 160 chars field validation limit
3289+
var name = "A very €€€€ €€€€ €€€€ €€€€ very very very very very very very very very very very very very very very very very very very very very very very very ver long name";
3290+
var correspAcc = "30101810400000000225";
3291+
var generator = new PayloadGenerator.RussiaPaymentOrder(name, account, bankName, bic, correspAcc);
3292+
3293+
var exception = Record.Exception(() => generator.ToString());
3294+
Assert.NotNull(exception);
3295+
Assert.IsType<PayloadGenerator.RussiaPaymentOrder.RussiaPaymentOrderException>(exception);
3296+
exception.Message.ShouldStartWith("Data too long");
3297+
}
3298+
3299+
[Fact]
3300+
[Category("PayloadGenerator/RussiaPaymentOrder")]
3301+
public void russiapayment_generator_should_throw_no_data_too_long_exception()
32833302
{
32843303
var account = "40702810138250123017";
32853304
var bic = "044525225";
32863305
var bankName = "ОАО | \"БАНК\"";
3287-
var name = "A very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long name";
3306+
var name = "A name";
32883307
var correspAcc = "30101810400000000225";
32893308
var optionalFields = new PayloadGenerator.RussiaPaymentOrder.OptionalFields()
32903309
{
32913310
FirstName = "Another long long long long long long long long long long long long long long firstname",
32923311
LastName = "Another long long long long long long long long long long long long long long lastname",
3312+
Category = "A pretty long long long long long long long long long long long long long category",
32933313
Sum = "125000"
32943314
};
32953315
var generator = new PayloadGenerator.RussiaPaymentOrder(name, account, bankName, bic, correspAcc, optionalFields);
32963316

3317+
// Should throw no exception as the 300 byte limit applies only to the mandatory fields
3318+
// See https://github.com/codebude/QRCoder/issues/392
32973319
var exception = Record.Exception(() => generator.ToString());
3298-
Assert.NotNull(exception);
3299-
Assert.IsType<PayloadGenerator.RussiaPaymentOrder.RussiaPaymentOrderException>(exception);
3300-
exception.Message.ShouldStartWith("Data too long");
3320+
Assert.Null(exception);
33013321
}
33023322

33033323
[Fact]

0 commit comments

Comments
 (0)