Skip to content

Commit

Permalink
- Added gaurd clause for length of bank account number
Browse files Browse the repository at this point in the history
- Added unit tests
  • Loading branch information
hingel committed Oct 13, 2023
1 parent 0d0186c commit 25137ae
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 14 deletions.
15 changes: 8 additions & 7 deletions src/SwedishBankAccounts.UnitTests/BankAccountNumberTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;

namespace SwedishBankAccounts.UnitTests;
namespace SwedishBankAccounts.UnitTests;

public class BankAccountNumberTests : UnitTests
{
Expand Down Expand Up @@ -47,7 +45,7 @@ public class BankAccountNumberTests : UnitTests
[InlineData("9892 398 7468", "Riksgälden")]
[InlineData("9578 633 1128", "Sparbanken Syd")]
[InlineData("9340 321 4681", "Swedbank")]
public void AccountNumber_TryParse_ShouldValidate(string accountNumber, string bankName)
public void BankAccountNumber_TryParse_ShouldValidate(string accountNumber, string bankName)
{
BankAccountNumber.TryParse(accountNumber, out var bankAccountNumber)
.Should().BeTrue($"it should be validated to {bankName}");
Expand All @@ -56,10 +54,13 @@ public void AccountNumber_TryParse_ShouldValidate(string accountNumber, string b
bankAccountNumber!.Bank.Should().Be(bankName, $"it should be validated to {bankName}");
}

[Fact]
public void AccountNumner_TryParse_ShouldReturnFalse()
[Theory]
[InlineData("1234567890123456", InitOptions.Strict)]
[InlineData("9252 132 2149", InitOptions.Strict)]
[InlineData("9252 132 2149", InitOptions.Lax)]
public void BankAccountNumber_TryParse_ShouldNotValidate(string accountNumber, InitOptions initOptions)
{
BankAccountNumber.TryParse(Fixture.Create<string>(), out var bankAccountNumber).Should().BeFalse();
BankAccountNumber.TryParse(accountNumber, initOptions ,out var bankAccountNumber).Should().BeFalse();

bankAccountNumber.Should().BeNull();
}
Expand Down
10 changes: 3 additions & 7 deletions src/SwedishBankAccounts/BankAccountNumber.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,6 @@ public record BankAccountNumber
/// </summary>
public string AccountNumber { get; }

/// <summary>
/// Maxlength of Bank Account Number
/// </summary>
private const int AccountMaxLength = 16;

private BankAccountNumber(string bank, string sortingCode, string accountNumber)
{
Bank = bank;
Expand Down Expand Up @@ -81,12 +76,13 @@ public static bool TryParse(string value, out BankAccountNumber? bankAccountNumb
/// <returns>True if parse is successful, otherwise false</returns>
public static bool TryParse(string value, InitOptions? initOptions, out BankAccountNumber? bankAccountNumber)
{
initOptions ??= InitOptions.Strict;
const int accountMaxLength = 15;
initOptions ??= InitOptions.Strict;

bankAccountNumber = null;
value = Regex.Replace(value, @"[^\d]", "");

if (value.Length > AccountMaxLength) return false;
if (value.Length > accountMaxLength) return false;
if (value.StartsWith("8") && value.Length < 7) return false;
if (!value.StartsWith("8") && value.Length < 6) return false;

Expand Down

0 comments on commit 25137ae

Please sign in to comment.