|
1 | 1 | defmodule Bankster.Bic.BicTest do |
2 | 2 | use ExUnit.Case |
3 | 3 |
|
4 | | - ## -- Module constants |
| 4 | + alias Bankster.Bic |
| 5 | + |
5 | 6 | @valid_bics [ |
6 | 7 | "RBOSGGSX", |
| 8 | + "RBOS GG SX", |
| 9 | + "RBOS GGSX", |
| 10 | + "RBOSGG SX", |
7 | 11 | "RZTIAT22263", |
| 12 | + "RZTI AT 22 263", |
| 13 | + "RZTI AT 22263", |
| 14 | + "RZTI AT22263", |
| 15 | + "RZTIAT22 263", |
| 16 | + "RZTI AT 22263", |
8 | 17 | "BCEELULL", |
9 | 18 | "MARKDEFF", |
10 | 19 | "GENODEF1JEV", |
11 | 20 | "UBSWCHZH80A", |
12 | 21 | "CEDELULLXXX" |
13 | 22 | ] |
14 | | - @invalid_bics ["CE1EL2LLFFF", "E31DCLLFFF", "", " ", nil] |
15 | 23 |
|
16 | | - ## -- Test cases |
17 | | - test "valid?/1" do |
18 | | - ## -- VALID BICS |
19 | | - for bic <- @valid_bics, do: assert(Bankster.Bic.valid?(bic) == true) |
| 24 | + @invalid_bics ["CE1EL2LLFFF", "E31DCLLFFF", "", " ", nil, "INVALIDBIC"] |
| 25 | + |
| 26 | + describe "valid?" do |
| 27 | + test "valid bics" do |
| 28 | + for bic <- @valid_bics, do: assert(Bic.valid?(bic) == true) |
| 29 | + end |
| 30 | + |
| 31 | + test "invalid bics" do |
| 32 | + for bic <- @invalid_bics, do: assert(Bic.valid?(bic) == false) |
| 33 | + end |
| 34 | + end |
| 35 | + |
| 36 | + describe "parse" do |
| 37 | + test "invalid bics" do |
| 38 | + for bic <- @invalid_bics do |
| 39 | + assert :error = Bic.parse(bic) |
| 40 | + end |
| 41 | + |
| 42 | + assert :error = Bic.parse(" AAAABBCC123") |
| 43 | + assert :error = Bic.parse(nil) |
| 44 | + assert :error = Bic.parse(~D[2020-01-01]) |
| 45 | + end |
| 46 | + |
| 47 | + test "valid bics" do |
| 48 | + for bic <- @valid_bics do |
| 49 | + assert {:ok, _} = Bic.parse(bic) |
| 50 | + end |
| 51 | + |
| 52 | + assert {:ok, bic} = Bic.parse("RBOSGGSX") |
| 53 | + assert %{bank: "RBOS", country: "GG", location: "SX", branch: nil} = bic |
| 54 | + |
| 55 | + assert {:ok, bic} = Bic.parse("RZTIAT22263") |
| 56 | + assert %Bic{bank: "RZTI", country: "AT", location: "22", branch: "263"} = bic |
| 57 | + |
| 58 | + assert {:ok, bic} = Bic.parse("RZTIAT22 263") |
| 59 | + assert %Bic{bank: "RZTI", country: "AT", location: "22", branch: "263"} = bic |
| 60 | + |
| 61 | + assert {:ok, bic} = Bic.parse("RZTIAT 22 263") |
| 62 | + assert %Bic{bank: "RZTI", country: "AT", location: "22", branch: "263"} = bic |
| 63 | + |
| 64 | + assert {:ok, bic} = Bic.parse("RZTI AT22 263") |
| 65 | + assert %Bic{bank: "RZTI", country: "AT", location: "22", branch: "263"} = bic |
| 66 | + |
| 67 | + assert {:ok, bic} = Bic.parse("BCEELULL") |
| 68 | + assert %Bic{bank: "BCEE", country: "LU", location: "LL", branch: nil} = bic |
| 69 | + |
| 70 | + assert {:ok, bic} = Bic.parse("MARKDEFF") |
| 71 | + assert %Bic{bank: "MARK", country: "DE", location: "FF", branch: nil} = bic |
| 72 | + |
| 73 | + assert {:ok, bic} = Bic.parse("MARK DE FF") |
| 74 | + assert %Bic{bank: "MARK", country: "DE", location: "FF", branch: nil} = bic |
| 75 | + |
| 76 | + assert {:ok, bic} = Bic.parse("MARK DEFF") |
| 77 | + assert %Bic{bank: "MARK", country: "DE", location: "FF", branch: nil} = bic |
| 78 | + |
| 79 | + assert {:ok, bic} = Bic.parse("MARKDE FF") |
| 80 | + assert %Bic{bank: "MARK", country: "DE", location: "FF", branch: nil} = bic |
| 81 | + |
| 82 | + assert {:ok, bic} = Bic.parse("MARK DE FF") |
| 83 | + assert %Bic{bank: "MARK", country: "DE", location: "FF", branch: nil} = bic |
| 84 | + |
| 85 | + assert {:ok, bic} = Bic.parse("markdeff") |
| 86 | + assert %Bic{bank: "mark", country: "de", location: "ff", branch: nil} = bic |
| 87 | + end |
| 88 | + end |
| 89 | + |
| 90 | + describe "parse!" do |
| 91 | + test "valid bic" do |
| 92 | + assert %Bic{ |
| 93 | + bank: "mark", |
| 94 | + country: "de", |
| 95 | + location: "ff", |
| 96 | + branch: nil |
| 97 | + } = Bic.parse!("markdeff") |
| 98 | + end |
| 99 | + |
| 100 | + test "invalid bic raises an argument error" do |
| 101 | + assert_raise(ArgumentError, ~s(invalid argument bic: "CE1EL2LLFFF"), fn -> |
| 102 | + Bic.parse!("CE1EL2LLFFF") |
| 103 | + end) |
| 104 | + end |
| 105 | + end |
| 106 | + |
| 107 | + describe "to_string" do |
| 108 | + test "formatting options" do |
| 109 | + bic11 = %Bic{bank: "AaAa", country: "bB", location: "cC", branch: "123"} |
| 110 | + bic8 = %Bic{bank: "AaAa", country: "bB", location: "cC", branch: nil} |
| 111 | + |
| 112 | + assert "AAAABBCC123" == Bic.to_string(bic11) |
| 113 | + assert "AAAABBCC123" == Bic.to_string(bic11, case: :upper) |
| 114 | + assert "aaaabbcc123" == Bic.to_string(bic11, case: :lower) |
| 115 | + assert "AaAabBcC123" == Bic.to_string(bic11, case: :leave) |
| 116 | + assert "AAAABBCC123" == Bic.to_string(bic11, case: :upper, format: :compact) |
| 117 | + assert "aaaabbcc123" == Bic.to_string(bic11, case: :lower, format: :compact) |
| 118 | + assert "AaAabBcC123" == Bic.to_string(bic11, case: :leave, format: :compact) |
| 119 | + assert "AAAA BB CC 123" == Bic.to_string(bic11, case: :upper, format: :pretty) |
| 120 | + assert "aaaa bb cc 123" == Bic.to_string(bic11, case: :lower, format: :pretty) |
| 121 | + assert "AaAa bB cC 123" == Bic.to_string(bic11, case: :leave, format: :pretty) |
| 122 | + |
| 123 | + assert "AAAABBCC" == Bic.to_string(bic8) |
| 124 | + assert "AAAABBCC" == Bic.to_string(bic8, case: :upper) |
| 125 | + assert "aaaabbcc" == Bic.to_string(bic8, case: :lower) |
| 126 | + assert "AaAabBcC" == Bic.to_string(bic8, case: :leave) |
| 127 | + assert "AAAABBCC" == Bic.to_string(bic8, case: :upper, format: :compact) |
| 128 | + assert "aaaabbcc" == Bic.to_string(bic8, case: :lower, format: :compact) |
| 129 | + assert "AaAabBcC" == Bic.to_string(bic8, case: :leave, format: :compact) |
| 130 | + assert "AAAA BB CC" == Bic.to_string(bic8, case: :upper, format: :pretty) |
| 131 | + assert "aaaa bb cc" == Bic.to_string(bic8, case: :lower, format: :pretty) |
| 132 | + assert "AaAa bB cC" == Bic.to_string(bic8, case: :leave, format: :pretty) |
| 133 | + |
| 134 | + assert "AAAABBCC123" == String.Chars.to_string(bic11) |
| 135 | + assert "AAAABBCC" == String.Chars.to_string(bic8) |
| 136 | + |
| 137 | + assert_raise(ArgumentError, ~r/:bank is required, got:/, fn -> |
| 138 | + String.Chars.to_string(%Bic{bank: nil, country: "BB", location: "CC", branch: "123"}) |
| 139 | + end) |
| 140 | + |
| 141 | + assert_raise(ArgumentError, ~r/:country is required, got:/, fn -> |
| 142 | + String.Chars.to_string(%Bic{bank: "AAAA", country: nil, location: "CC", branch: "123"}) |
| 143 | + end) |
20 | 144 |
|
21 | | - ## -- INVALID BICS |
22 | | - for bic <- @invalid_bics, do: assert(Bankster.Bic.valid?(bic) == false) |
| 145 | + assert_raise(ArgumentError, ~r/:location is required, got:/, fn -> |
| 146 | + String.Chars.to_string(%Bic{bank: "AAAA", country: "BB", location: nil, branch: "123"}) |
| 147 | + end) |
| 148 | + end |
23 | 149 | end |
24 | 150 | end |
0 commit comments