Sieve/SieveUnitTests/Mapper.cs

85 lines
2.4 KiB
C#
Raw Normal View History

2018-02-10 06:37:04 +01:00
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Sieve.Models;
using SieveUnitTests.Entities;
using SieveUnitTests.Services;
using System.Linq;
using System.Collections.Generic;
2018-02-13 23:43:33 +01:00
using Sieve.Exceptions;
2018-02-10 06:37:04 +01:00
namespace SieveUnitTests
{
2018-05-15 01:34:37 +02:00
[TestClass]
2018-02-10 06:37:04 +01:00
public class Mapper
{
2018-05-15 01:34:37 +02:00
private readonly ApplicationSieveProcessor _processor;
private readonly IQueryable<Post> _posts;
2018-02-10 06:37:04 +01:00
public Mapper()
{
_processor = new ApplicationSieveProcessor(new SieveOptionsAccessor(),
new SieveCustomSortMethods(),
new SieveCustomFilterMethods());
_posts = new List<Post>
{
new Post() {
Id = 1,
ThisHasNoAttributeButIsAccessible = "A",
ThisHasNoAttribute = "A",
OnlySortableViaFluentApi = 100
},
new Post() {
Id = 2,
ThisHasNoAttributeButIsAccessible = "B",
ThisHasNoAttribute = "B",
OnlySortableViaFluentApi = 50
},
new Post() {
Id = 3,
ThisHasNoAttributeButIsAccessible = "C",
ThisHasNoAttribute = "C",
OnlySortableViaFluentApi = 0
},
}.AsQueryable();
}
2018-05-15 01:34:37 +02:00
2018-02-10 06:37:04 +01:00
[TestMethod]
public void MapperWorks()
{
var model = new SieveModel()
{
Filters = "shortname@=A",
};
2018-04-20 11:27:04 +02:00
var result = _processor.Apply(model, _posts);
2018-02-10 06:37:04 +01:00
Assert.AreEqual(result.First().ThisHasNoAttributeButIsAccessible, "A");
Assert.IsTrue(result.Count() == 1);
}
[TestMethod]
public void MapperSortOnlyWorks()
{
var model = new SieveModel()
{
Filters = "OnlySortableViaFluentApi@=50",
Sorts = "OnlySortableViaFluentApi"
};
2018-04-20 11:27:04 +02:00
var result = _processor.Apply(model, _posts, applyFiltering: false, applyPagination: false);
2018-02-13 23:43:33 +01:00
2018-04-20 11:27:04 +02:00
Assert.ThrowsException<SieveMethodNotFoundException>(() => _processor.Apply(model, _posts));
2018-02-10 06:37:04 +01:00
Assert.AreEqual(result.First().Id, 3);
Assert.IsTrue(result.Count() == 3);
}
}
}
//
//Sorts = "LikeCount",
//Page = 1,
//PageSize = 10
//