File size: 1,262 Bytes
8c37a76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using AiDevProject.Core.Validation;
using Xunit;
using FluentAssertions;

namespace AiDevProject.Tests.Unit;

/// <summary>
/// Tests for validators.
/// </summary>
public class ValidationTests
{
    private readonly CreateUserValidator _validator = new();

    [Fact]
    public void ValidUser_Passes()
    {
        var request = new CreateUserRequest(
            Email: "test@example.com",
            Password: "SecurePass123"
        );

        var result = _validator.Validate(request);

        result.IsValid.Should().BeTrue();
    }

    [Fact]
    public void InvalidEmail_Fails()
    {
        var request = new CreateUserRequest(
            Email: "not-an-email",
            Password: "SecurePass123"
        );

        var result = _validator.Validate(request);

        result.IsValid.Should().BeFalse();
        result.Errors.Should().Contain(e => e.PropertyName == "Email");
    }

    [Fact]
    public void ShortPassword_Fails()
    {
        var request = new CreateUserRequest(
            Email: "test@example.com",
            Password: "short"
        );

        var result = _validator.Validate(request);

        result.IsValid.Should().BeFalse();
        result.Errors.Should().Contain(e => e.PropertyName == "Password");
    }
}