Skip to content

Commit

Permalink
Test cleanup.
Browse files Browse the repository at this point in the history
  • Loading branch information
Marcin Chwedczuk committed Sep 18, 2018
1 parent 6086db9 commit ae5714a
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 31 deletions.
4 changes: 2 additions & 2 deletions src/SampleLibrary/Countries.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public static class Countries {
};

public static IEnumerable<Country> All
=> _countryByIsoCode.Values.ToArray(); // provide a copy
=> _countryByIsoCode.Values.ToArray(); // return a copy

public static bool IsKnownIsoCode(string isoCode) {
if (isoCode == null) throw new ArgumentNullException(nameof(isoCode));
Expand All @@ -21,7 +21,7 @@ public static bool IsKnownIsoCode(string isoCode) {
public static Country FindCountryByIsoCode(string isoCode) {
if (isoCode == null) throw new ArgumentNullException(nameof(isoCode));

if(_countryByIsoCode.TryGetValue(isoCode.ToUpper(), out Country country)) {
if(_countryByIsoCode.TryGetValue(isoCode.ToUpper(), out var country)) {
return country;
}

Expand Down
6 changes: 3 additions & 3 deletions src/SampleLibrary/SampleRequestDtoValidator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ protected override bool PreValidate(
ValidationContext<SampleRequestDto> context, ValidationResult result)
{
var contextData = new ValidationContextData(context.RootContextData);

var countryIsoCode = context.InstanceToValidate?.Address?.CountryIsoCode;
contextData.CountryIsoCode = countryIsoCode;
contextData.CountryIsoCode =
context.InstanceToValidate?.Address?.CountryIsoCode;

return true;
}
Expand Down
21 changes: 6 additions & 15 deletions src/SampleLibrary/ValidationContextData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,17 @@ public Property(

public T Value {
get {
if (!IsSet)
if (!_context.TryGetValue(_key, out var value))
throw new InvalidOperationException(
$"Property '{_key}' value was not set. " +
"Did you forget to set validation context data in PreValidate method?");
return (T) _context[_key];
}
$"Property '{_key}' was not set. " +
"Did you forget to set validation context data in PreValidate method? " +
"For more details see: https://fluentvalidation.net/start#using-prevalidate");

set {
_context[_key] = value;
IsSet = true;
return (T)value;
}
}

private readonly string PropertySetMarker = "-PropertySetMarker";
private bool IsSet {
get {
return _context.ContainsKey(_key + PropertySetMarker);
}
set {
_context[_key + PropertySetMarker] = true;
_context[_key] = value;
}
}
}
Expand Down
46 changes: 35 additions & 11 deletions test/SampleLibrary.Test/SampleRequestDtoValidatorTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,65 @@ public SampleRequestDtoValidatorTest() {
}

[Fact]
public void Should_return_no_errors_for_valid_request() {
public void Should_return_no_errors_when_request_is_valid() {
// Arrange
var validRequest = SampleRequestDtoFixture.CreateValidRequest();

// Act
var result = _validator.Validate(validRequest);

// Assert
Assert.True(result.IsValid);
}

[Fact]
public void Should_return_error_for_invalid_country_code() {
public void Should_return_error_when_country_code_is_invalid() {
// Arrange
var invalidRequest = SampleRequestDtoFixture.CreateValidRequest();
invalidRequest.Address.CountryIsoCode = "XX";

_validator.ShouldHaveValidationErrorFor(x => x.Address.CountryIsoCode, invalidRequest);
// Assert
_validator
.ShouldHaveValidationErrorFor(x => x.Address.CountryIsoCode, invalidRequest)
.WithErrorMessage("'XX' is not a valid country iso code.");
}

[Fact]
public void Should_return_error_for_invalid_phone_number() {
public void Should_return_error_when_phone_number_is_invalid_and_countryIsoCode_is_set() {
// Arrange
var invalidRequest = SampleRequestDtoFixture.CreateValidRequest();
invalidRequest.Address.CountryIsoCode = "PL";
invalidRequest.ContactInfo.PhoneNumber = "+48 123";

_validator.ShouldHaveValidationErrorFor(x => x.ContactInfo.PhoneNumber, invalidRequest);
// Assert
_validator
.ShouldHaveValidationErrorFor(x => x.ContactInfo.PhoneNumber, invalidRequest)
.WithErrorMessage("'+48 123' is not a valid phone number in Poland.");
}

[Fact]
public void test_manual_check() {
public void Should_return_no_error_for_phoneNumber_when_countryIsoCode_is_not_set() {
// Arrange
var invalidRequest = SampleRequestDtoFixture.CreateValidRequest();
invalidRequest.Address.CountryIsoCode = "XX";
invalidRequest.Address.CountryIsoCode = null;
invalidRequest.ContactInfo.PhoneNumber = "+48 123";

var result = _validator.Validate(invalidRequest);
// Assert
_validator
.ShouldNotHaveValidationErrorFor(x => x.ContactInfo.PhoneNumber, invalidRequest);
}


[Fact]
public void Should_return_no_error_when_phoneNumber_is_valid() {
// Arrange
var invalidRequest = SampleRequestDtoFixture.CreateValidRequest();
invalidRequest.Address.CountryIsoCode = "PL";
invalidRequest.ContactInfo.PhoneNumber = "+48 111-222-333";

result.Errors.ToList().ForEach(err => {
Console.WriteLine(err.ErrorMessage);
});
// Assert
_validator
.ShouldNotHaveValidationErrorFor(x => x.ContactInfo.PhoneNumber, invalidRequest);
}
}
}

0 comments on commit ae5714a

Please sign in to comment.