summaryrefslogtreecommitdiffstats
path: root/tests/Cepis.Tests/NormalizeTests.cs
blob: 3ff60cb72021c9d2176ca67ee6b7f0751fd2189f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
namespace Cepis.Tests;

/// <summary>Local validation, which happens before any request.</summary>
public sealed class NormalizeTests
{
    [Theory]
    [InlineData("01001000", "01001000")]
    [InlineData("01001-000", "01001000")]
    [InlineData(" 01001-000 ", "01001000")]
    [InlineData("01.001-000", "01001000")]
    [InlineData("01 001 000", "01001000")]
    public void AcceptsTheMask(string input, string expected) =>
        Assert.Equal(expected, CepisClient.NormalizeCep(input));

    [Theory]
    [InlineData("")]
    [InlineData("0100100")]
    [InlineData("010010000")]
    [InlineData("0100100a")]
    [InlineData("abcdefgh")]
    [InlineData("01001-00")]
    public void RejectsAnythingElse(string input) =>
        Assert.Throws<InvalidCepException>(() => CepisClient.NormalizeCep(input));

    [Fact]
    public void RejectsNull() =>
        Assert.Throws<InvalidCepException>(() => CepisClient.NormalizeCep(null!));

    [Fact]
    public void TheMessageCarriesWhatWasGiven()
    {
        var failure = Assert.Throws<InvalidCepException>(() => CepisClient.NormalizeCep("123"));
        Assert.Contains("123", failure.Message, StringComparison.Ordinal);
    }
}