implement ability to filter int values using string operators

This commit is contained in:
v.chechetkin
2022-11-16 00:51:39 +04:00
parent b73f748dba
commit 22dae2eaf7
2 changed files with 125 additions and 17 deletions

View File

@@ -39,7 +39,7 @@ namespace SieveUnitTests
{
Id = 0,
Title = "A",
LikeCount = 100,
LikeCount = 500,
IsDraft = true,
CategoryId = null,
TopComment = new Comment { Id = 0, Text = "A1" },
@@ -254,6 +254,108 @@ namespace SieveUnitTests
Assert.True(result.Count() == 2);
Assert.True(nullableResult.Count() == 3);
}
[Theory]
[InlineData(5)]
[InlineData(0)]
public void CanFilterIntsUsingContainsOperator(int likeCount)
{
var model = new SieveModel
{
Filters = $"LikeCount@={likeCount}"
};
var result = _processor.Apply(model, _posts);
Assert.True(result.Count() == 3);
}
[Theory]
[InlineData(5)]
[InlineData(0)]
public void CanFilterIntsUsingCaseInsensitiveContainsOperator(int likeCount)
{
var model = new SieveModel
{
Filters = $"LikeCount@=*{likeCount}"
};
var result = _processor.Apply(model, _posts);
Assert.True(result.Count() == 3);
}
[Theory]
[InlineData(5)]
[InlineData(0)]
public void CanFilterIntsUsingDoesNotContainsOperator(int likeCount)
{
var model = new SieveModel
{
Filters = $"LikeCount!@={likeCount}"
};
var result = _processor.Apply(model, _posts);
Assert.True(result.Count() == 2);
}
[Theory]
[InlineData(5)]
[InlineData(0)]
public void CanFilterIntsUsingCaseInsensitiveDoesNotContainsOperator(int likeCount)
{
var model = new SieveModel
{
Filters = $"LikeCount!@=*{likeCount}"
};
var result = _processor.Apply(model, _posts);
Assert.True(result.Count() == 2);
}
[Theory]
[InlineData(5)]
public void CanFilterIntsUsingCaseInsensitiveDoesNotStartsWithOperator(int likeCount)
{
var model = new SieveModel
{
Filters = $"LikeCount!_=*{likeCount}"
};
var result = _processor.Apply(model, _posts);
Assert.True(result.Count() == 2);
}
[Theory]
[InlineData(5)]
public void CanFilterIntsUsingStartsWithOperator(int likeCount)
{
var model = new SieveModel
{
Filters = $"LikeCount_={likeCount}"
};
var result = _processor.Apply(model, _posts);
Assert.True(result.Count() == 3);
}
[Theory]
[InlineData(0)]
public void CanFilterIntsUsingEndsWithOperator(int likeCount)
{
var model = new SieveModel
{
Filters = $"LikeCount_-={likeCount}"
};
var result = _processor.Apply(model, _posts);
Assert.True(result.Count() == 3);
}
[Theory]
[InlineData(@"Text@=*\,")]