public async Task<string> GetTrainingTypeDescription(string code)
{
var trainingType = await
_dbContext.TrainingType.Where(x =>
x.TrainingTypeCode.Equals(code)).FirstOrDefaultAsync();
if (trainingType != null)
return
trainingType.Descriptions.ToString();
return string.Empty;
}
|
internal class TestAsyncEnumerable<T> :
EnumerableQuery
{
public TestAsyncEnumerable(IEnumerable
: base(enumerable)
{ }
public TestAsyncEnumerable(Expression expression)
: base(expression)
{ }
public IAsyncEnumerator
{
return GetEnumerator();
}
public IAsyncEnumerator
{
return new
TestAsyncEnumerator
}
IQueryProvider
IQueryable.Provider
{
get { return new
TestAsyncQueryProvider
}
}
internal class TestAsyncEnumerator<T> :
IAsyncEnumerator
{
private readonly IEnumerator
public TestAsyncEnumerator(IEnumerator
{
_inner =
inner;
}
public ValueTask DisposeAsync()
{
_inner.Dispose();
return new ValueTask();
}
public T Current => _inner.Current;
public ValueTask<bool> MoveNextAsync()
{
return new ValueTask<bool>(_inner.MoveNext());
}
}
internal class TestAsyncQueryProvider<TEntity> : IAsyncQueryProvider
{
private readonly IQueryProvider _inner;
internal TestAsyncQueryProvider(IQueryProvider inner)
{
_inner =
inner;
}
public IQueryable CreateQuery(Expression
expression)
{
return new TestAsyncEnumerable
}
public IQueryable
{
return new TestAsyncEnumerable
}
public object Execute(Expression expression)
{
return _inner.Execute(expression);
}
public TResult Execute<TResult>(Expression expression)
{
return
_inner.Execute
}
public IAsyncEnumerable
{
return new TestAsyncEnumerable
}
public TResult ExecuteAsync<TResult>(Expression expression,
CancellationToken cancellationToken)
{
return
_inner.Execute
}
}
|
public class UnitTestHelper
{
public static Mock
{
var mockSet = new Mock
mockSet.As
.Setup(x
=> x.GetAsyncEnumerator(default))
.Returns(new TestAsyncEnumerator
mockSet.As
.Setup(x
=> x.Provider)
.Returns(new
TestAsyncQueryProvider
mockSet.As
.Setup(x
=> x.Expression)
.Returns(testData.Expression);
mockSet.As
.Setup(x
=> x.ElementType)
.Returns(testData.ElementType);
mockSet.As
.Setup(x
=> x.GetEnumerator())
.Returns(testData.GetEnumerator());
mockSet.As
.Setup(x
=> x.GetEnumerator())
.Returns(testData.GetEnumerator());
return mockSet;
}
}
|
private static IQueryable
{
return new List
{
new TrainingType()
{
TrainingTypeCode = "Qa",
Descriptions = " Quality Assurance
Training",
Name
= "QA
Training"
},
new TrainingType()
{
TrainingTypeCode = "Lab",
Descriptions = "Laboratory Training.",
Name
= "Labs
Training."
}
}.AsQueryable();
}
|
[Fact]
public async void
When_querying_for_a_TrainingTypeDescription__returns_Description()
{
var context = new Mock
var trainingtype = GetTrainingTypes();
var cancellationToken = new CancellationToken();
context.SetupGet(c
=> c.TrainingType)
.Returns(UnitTestHelper.GetQueryableMockDbSet
// Call the
function to test
var typeHandler = new TypeHandler(context.Object);
var result = await TypeHandler.GetTrainingTypeDescription("Lab");
Assert.True(result.HasValue);
}
|







