Skip to content

Commit

Permalink
Merge pull request #171 from valit-stack/develop
Browse files Browse the repository at this point in the history
v2.0.0
  • Loading branch information
GooRiOn authored Oct 7, 2018
2 parents a522175 + 11f1f91 commit 6ccc729
Show file tree
Hide file tree
Showing 11 changed files with 29 additions and 27 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ Valit is available on [NuGet](https://www.nuget.org/packages/Valit/).

### Package manager
```bash
Install-Package Valit -Version 1.0.0
Install-Package Valit -Version 2.0.0
```

### .NET CLI
```bash
dotnet add package Valit --version 1.0.0
dotnet add package Valit --version 2.0.0
```

# Getting started
Expand Down
13 changes: 9 additions & 4 deletions src/Valit/Rules/ValitRule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,18 @@ public IValitResult Validate(TObject @object)
var property = _propertySelector.Compile().Invoke(@object);
var hasAllConditionsFulfilled = true;

foreach(var condition in _conditions)
foreach (var condition in _conditions)
hasAllConditionsFulfilled &= condition(@object);

var isSatisfied = _predicate?.Invoke(property) != false;
var errors = _errors.Where(e => !e.IsDefault).Any() ? _errors.Where(e => !e.IsDefault) : _errors;
if (!hasAllConditionsFulfilled)
{
return ValitResult.Success;
}

var isSatisfied = _predicate?.Invoke(property) ?? false;
var errors = _errors.Any(e => !e.IsDefault) ? _errors.Where(e => !e.IsDefault) : _errors;

return !hasAllConditionsFulfilled || isSatisfied ? ValitResult.Success : ValitResult.Fail(errors.ToArray());
return isSatisfied ? ValitResult.Success : ValitResult.Fail(errors.ToArray());
}
}
}
2 changes: 1 addition & 1 deletion src/Valit/Valit.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<PackageProjectUrl>https://github.com/valit-stack/Valit</PackageProjectUrl>
<PackageLicenseUrl>https://github.com/valit-stack/Valit/blob/master/LICENSE</PackageLicenseUrl>
<PackageIconUrl>https://user-images.githubusercontent.com/7096476/32700023-298ffb9e-c7bf-11e7-9d83-82690b7e260b.png</PackageIconUrl>
<VersionPrefix>1.0.0</VersionPrefix>
<VersionPrefix>2.0.0</VersionPrefix>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>

Expand Down
12 changes: 6 additions & 6 deletions src/Valit/ValitRuleStringExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,21 @@ public static class ValitRuleStringExtensions
{
private static string _emailRegularExpression => @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z";
public static IValitRule<TObject, string> IsEqualTo<TObject>(this IValitRule<TObject, string> rule, string value) where TObject : class
=> rule.Satisfies(p => !String.IsNullOrEmpty(p) && !String.IsNullOrEmpty(value) && p == value).WithDefaultMessage(ErrorMessages.IsEqualTo, value);
=> rule.Satisfies(p => p != null && value != null && p == value).WithDefaultMessage(ErrorMessages.IsEqualTo, value);

public static IValitRule<TObject, string> MinLength<TObject>(this IValitRule<TObject, string> rule, int length) where TObject : class
=> rule.Satisfies(p => !String.IsNullOrEmpty(p) && p.Length >= length).WithDefaultMessage(ErrorMessages.MinLength, length);
=> rule.Satisfies(p => p != null && p.Length >= length).WithDefaultMessage(ErrorMessages.MinLength, length);

public static IValitRule<TObject, string> MaxLength<TObject>(this IValitRule<TObject, string> rule, int length) where TObject : class
=> rule.Satisfies(p => !String.IsNullOrEmpty(p) && p.Length <= length).WithDefaultMessage(ErrorMessages.MaxLength, length);
=> rule.Satisfies(p => p != null && p.Length <= length).WithDefaultMessage(ErrorMessages.MaxLength, length);

public static IValitRule<TObject, string> Matches<TObject>(this IValitRule<TObject, string> rule, string regularExpression) where TObject : class
=> rule.Satisfies(p => !String.IsNullOrEmpty(p) && !String.IsNullOrEmpty(regularExpression) && Regex.IsMatch(p, regularExpression)).WithDefaultMessage(ErrorMessages.Matches, regularExpression);
=> rule.Satisfies(p => p != null && !String.IsNullOrEmpty(regularExpression) && Regex.IsMatch(p, regularExpression)).WithDefaultMessage(ErrorMessages.Matches, regularExpression);

public static IValitRule<TObject, string> Email<TObject>(this IValitRule<TObject, string> rule) where TObject : class
=> rule.Satisfies(p => !String.IsNullOrEmpty(p) && !String.IsNullOrEmpty(_emailRegularExpression) && Regex.IsMatch(p, _emailRegularExpression)).WithDefaultMessage(ErrorMessages.Email);
=> rule.Satisfies(p => p != null && !String.IsNullOrEmpty(_emailRegularExpression) && Regex.IsMatch(p, _emailRegularExpression)).WithDefaultMessage(ErrorMessages.Email);

public static IValitRule<TObject, string> Required<TObject>(this IValitRule<TObject, string> rule) where TObject : class
=> rule.Satisfies(p => !string.IsNullOrEmpty(p)).WithDefaultMessage(ErrorMessages.Required);
=> rule.Satisfies(p => p != null).WithDefaultMessage(ErrorMessages.Required);
}
}
2 changes: 1 addition & 1 deletion tests/Valit.Tests/Strategies/Complete.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public void Complete_Strategy_Checks_All_Ensure()
.Validate();

result.Succeeded.ShouldBe(false);
result.ErrorMessages.Count().ShouldBe(6);
result.ErrorMessages.Count().ShouldBe(5);
result.ErrorMessages.ShouldContain(M1);
result.ErrorMessages.ShouldContain(M3);
result.ErrorMessages.ShouldContain(M4);
Expand Down
2 changes: 1 addition & 1 deletion tests/Valit.Tests/Strategies/FailFast.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void FailFast_Strategy_Checks_Until_First_Error_While_Error_Is_Not_First(

result.Succeeded.ShouldBe(false);
result.ErrorMessages.Count().ShouldBe(1);
result.ErrorMessages.ShouldContain(M2);
result.ErrorMessages.ShouldContain(M3);
}

#region ARRANGE
Expand Down
2 changes: 1 addition & 1 deletion tests/Valit.Tests/String/String_IsEqualTo_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public void String_IsEqualTo_Returns_Proper_Result_For_Left_Value(string value,
[Theory]
[InlineData("text", false)]
[InlineData("other", false)]
[InlineData("", false)]
[InlineData("", true)]
[InlineData(null, false)]
public void String_IsEqualTo_Returns_Proper_Result_For_Left_Empty_Value(string value, bool expected)
{
Expand Down
6 changes: 3 additions & 3 deletions tests/Valit.Tests/String/String_MaxLength_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ public void String_MaxLength_Returns_Proper_Result_For_Left_Value(int value, boo
}

[Theory]
[InlineData(0, false)]
[InlineData(4, false)]
[InlineData(8, false)]
[InlineData(0, true)]
[InlineData(4, true)]
[InlineData(8, true)]
public void String_MaxLength_Returns_Proper_Result_For_Left_Empty_Value(int value, bool expected)
{
IValitResult result = ValitRules<Model>
Expand Down
2 changes: 1 addition & 1 deletion tests/Valit.Tests/String/String_MinLength_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public void String_MinLength_Returns_Proper_Result_For_Left_Value(int value, boo
}

[Theory]
[InlineData(0, false)]
[InlineData(0, true)]
[InlineData(4, false)]
[InlineData(8, false)]
public void String_MinLength_Returns_Proper_Result_For_Left_Empty_Value(int value, bool expected)
Expand Down
4 changes: 2 additions & 2 deletions tests/Valit.Tests/String/String_Required_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public void String_Required_Fails_For_Null_Value()
}

[Fact]
public void String_Required_Fails_For_Empty_Value()
public void String_Required_Succeeds_For_Empty_Value()
{
IValitResult result = ValitRules<Model>
.Create()
Expand All @@ -42,7 +42,7 @@ public void String_Required_Fails_For_Empty_Value()
.For(_model)
.Validate();

result.Succeeded.ShouldBeFalse();
result.Succeeded.ShouldBeTrue();
}

[Fact]
Expand Down
7 changes: 2 additions & 5 deletions tests/Valit.Tests/Valit.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
Expand All @@ -14,8 +14,5 @@
<ItemGroup>
<ProjectReference Include="..\..\src\Valit\Valit.csproj" />
</ItemGroup>

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />
</ItemGroup>

</Project>

0 comments on commit 6ccc729

Please sign in to comment.