Users/dishant munjal/test cases (#16)

* test cases

* Minor changes
pull/21/head
Dishant Munjal 2020-05-18 14:49:01 +05:30 committed by GitHub
parent e920138edd
commit b7cdedde8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 239 additions and 44 deletions

View File

@ -3,9 +3,11 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
namespace RulesEngine.Models
{
[ExcludeFromCodeCoverage]
internal class CompiledRule
{
/// <summary>

View File

@ -4,12 +4,14 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
namespace RulesEngine.Models
{
/// <summary>
/// Rule class
/// </summary>
[ExcludeFromCodeCoverage]
public class Rule
{
/// <summary>

View File

@ -3,12 +3,14 @@
using RulesEngine.HelperFunctions;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
namespace RulesEngine.Models
{
/// <summary>
/// Rule result class with child result heirarchy
/// </summary>
[ExcludeFromCodeCoverage]
public class RuleResultTree
{
/// <summary>
@ -49,6 +51,7 @@ namespace RulesEngine.Models
/// This method will return all the error and warning messages to caller
/// </summary>
/// <returns>RuleResultMessage</returns>
[ExcludeFromCodeCoverage]
public RuleResultMessage GetMessages()
{
RuleResultMessage ruleResultMessage = new RuleResultMessage();
@ -62,6 +65,7 @@ namespace RulesEngine.Models
/// <summary>
/// This class will hold the error messages
/// </summary>
[ExcludeFromCodeCoverage]
public class RuleResultMessage
{
/// <summary>

View File

@ -2,12 +2,14 @@
// Licensed under the MIT License.
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
namespace RulesEngine.Models
{
/// <summary>
/// Workflow rules class for deserialization the json config file
/// </summary>
[ExcludeFromCodeCoverage]
public class WorkflowRules
{
/// <summary>

View File

@ -2,6 +2,13 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Version>2.0.0</Version>
<Copyright>Copyright (c) Microsoft Corporation.</Copyright>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageProjectUrl>https://github.com/microsoft/RulesEngine</PackageProjectUrl>
<Authors>Dishant Munjal, Abbas Cyclewala, Yogesh Prajapati</Authors>
<Description>Rules Engine is a package for abstracting business logic/rules/policies out of the system. This works in a very simple way by giving you an ability to put your rules in a store outside the core logic of the system thus ensuring that any change in rules doesn't affect the core system.</Description>
<PackageTags>BRE, Rules Engine, Abstraction</PackageTags>
</PropertyGroup>
<ItemGroup>
@ -13,4 +20,11 @@
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.18" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\LICENSE">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,215 @@
using RulesEngine.Extensions;
using RulesEngine.Models;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
namespace RulesEngine.UnitTest
{
[Trait("Category", "Unit")]
public class ListofRuleResultTreeExtensionTest
{
[Fact]
public void OnSuccessWithSuccessTest()
{
var rulesResultTree = new List<RuleResultTree>()
{
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = true,
Rule = new Rule()
{
RuleName = "Test Rule 1"
}
},
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = false,
Rule = new Rule()
{
RuleName = "Test Rule 2"
}
},
};
var successEventName = string.Empty;
rulesResultTree.OnSuccess((eventName) =>
{
successEventName = eventName;
});
Assert.True(successEventName.Equals("Test Rule 1"));
}
[Fact]
public void OnSuccessWithSuccessWithEventTest()
{
var rulesResultTree = new List<RuleResultTree>()
{
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = true,
Rule = new Rule()
{
RuleName = "Test Rule 1",
SuccessEvent = "Event 1"
}
},
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = false,
Rule = new Rule()
{
RuleName = "Test Rule 2"
}
},
};
var successEventName = string.Empty;
rulesResultTree.OnSuccess((eventName) =>
{
successEventName = eventName;
});
Assert.True(successEventName.Equals("Event 1"));
}
[Fact]
public void OnSuccessWithouSuccessTest()
{
var rulesResultTree = new List<RuleResultTree>()
{
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = false,
Rule = new Rule()
{
RuleName = "Test Rule 1"
}
},
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = false,
Rule = new Rule()
{
RuleName = "Test Rule 2"
}
},
};
var successEventName = string.Empty;
rulesResultTree.OnSuccess((eventName) =>
{
successEventName = eventName;
});
Assert.True(successEventName.Equals(string.Empty));
}
[Fact]
public void OnFailWithSuccessTest()
{
var rulesResultTree = new List<RuleResultTree>()
{
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = true,
Rule = new Rule()
{
RuleName = "Test Rule 1"
}
},
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = false,
Rule = new Rule()
{
RuleName = "Test Rule 2"
}
},
};
var successEventName = true;
rulesResultTree.OnFail(() =>
{
successEventName = false;
});
Assert.True(successEventName);
}
[Fact]
public void OnFailWithoutSuccessTest()
{
var rulesResultTree = new List<RuleResultTree>()
{
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = false,
Rule = new Rule()
{
RuleName = "Test Rule 1"
}
},
new RuleResultTree()
{
ChildResults = null,
ExceptionMessage = string.Empty,
Input = new object(),
IsSuccess = false,
Rule = new Rule()
{
RuleName = "Test Rule 2"
}
},
};
var successEventName = true;
rulesResultTree.OnFail(() =>
{
successEventName = false;
});
Assert.False(successEventName);
}
}
}

View File

@ -1,44 +0,0 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using System;
using Xunit;
namespace RulesEngine.UnitTest
{
[Trait("Category","Unit")]
public class NullLoggerTest
{
[Fact]
public void NullLogger_BeginScope_DoesNotThrow()
{
var logger = new NullLogger<RulesEngine>();
using (logger.BeginScope("test-value"))
{ }
}
[Theory]
[InlineData(LogLevel.Critical)]
[InlineData(LogLevel.Debug)]
[InlineData(LogLevel.Error)]
[InlineData(LogLevel.Information)]
[InlineData(LogLevel.None)]
[InlineData(LogLevel.Trace)]
[InlineData(LogLevel.Warning)]
public void NullLogger_IsEnabled_ReturnsTrue(LogLevel logLevel)
{
var logger = new NullLogger<RulesEngine>();
logger.IsEnabled(logLevel).Equals(true);
}
[Fact]
public void NullLogger_Log_DoesNotThrow()
{
var logger = new NullLogger<RulesEngine>();
logger.Log(LogLevel.Critical, 1, "This is a critical message.");
}
}
}