1
0
mirror of https://github.com/Biarity/Sieve.git synced 2025-04-17 08:53:47 +02:00

Tested exception handling ()

This commit is contained in:
Biarity 2018-02-14 08:43:33 +10:00
parent ce4da673d9
commit b70eb3471d
6 changed files with 50 additions and 4 deletions

@ -309,8 +309,8 @@ namespace Sieve.Services
}
catch (ArgumentException) // name matched with custom method for a differnt type
{
var expected = typeof(TEntity);
var actual = ((IQueryable)customMethod.ReturnParameter).ElementType;
var expected = typeof(IQueryable<TEntity>);
var actual = customMethod.ReturnType;
throw new SieveIncompatibleMethodException(name, expected, actual,
$"{name} failed. Expected a custom method for type {expected} but only found for type {actual}");
}

@ -13,7 +13,7 @@
<description>
Sieve is a simple, clean, and extensible framework for .NET Core that adds sorting, filtering, and pagination functionality out of the box. Most common use case would be for serving ASP.NET Core GET queries. Documentation available on GitHub: https://github.com/Biarity/Sieve/
</description>
<releaseNotes>Custom method case-insensitivity</releaseNotes>
<releaseNotes>Custom method case-insensitivity, new custom exceptions</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>aspnetcore filter sort page paginate sieve search</tags>
<dependencies>

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Sieve.Attributes;
namespace SieveUnitTests.Entities
{
public class Comment
{
public int Id { get; set; }
public string Text { get; set; }
}
}

@ -6,6 +6,7 @@ using SieveUnitTests.Services;
using System;
using System.Linq;
using System.Collections.Generic;
using Sieve.Exceptions;
namespace SieveUnitTests
{
@ -101,6 +102,28 @@ namespace SieveUnitTests
Assert.IsFalse(result.Any(p => p.Id == 0));
Assert.IsTrue(result.Count() == 2);
}
[TestMethod]
public void MethodNotFoundExceptionWork()
{
var model = new SieveModel()
{
Filters = "does not exist",
};
Assert.ThrowsException<SieveMethodNotFoundException>(() => _processor.ApplyFiltering(model, _posts));
}
[TestMethod]
public void IncompatibleMethodExceptionsWork()
{
var model = new SieveModel()
{
Filters = "TestComment",
};
Assert.ThrowsException<SieveIncompatibleMethodException>(() => _processor.ApplyFiltering(model, _posts));
}
}
}

@ -6,6 +6,7 @@ using SieveUnitTests.Services;
using System;
using System.Linq;
using System.Collections.Generic;
using Sieve.Exceptions;
namespace SieveUnitTests
{
@ -68,7 +69,9 @@ namespace SieveUnitTests
Sorts = "OnlySortableViaFluentApi"
};
var result = _processor.ApplyAll(model, _posts);
var result = _processor.ApplySorting(model, _posts);
Assert.ThrowsException<SieveMethodNotFoundException>(() => _processor.ApplyAll(model, _posts));
Assert.AreEqual(result.First().Id, 3);

@ -15,5 +15,10 @@ namespace SieveUnitTests.Services
return result;
}
public IQueryable<Comment> TestComment(IQueryable<Comment> source, string op, string value)
{
return source;
}
}
}