0
0
RhSolutions-Api/RhSolutions.Api.Tests/ProductQueryModifierTests.cs
2023-09-29 10:07:41 +03:00

40 lines
1.6 KiB
C#

using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Primitives;
using RhSolutions.Api.Services;
namespace RhSolutions.Api.Tests;
public class ProductQueryModifierTests
{
private ProductQueryModifierFactory _factory;
[SetUp]
public void Setup()
{
_factory = new ProductQueryModifierFactory();
}
[TestCase("Монтажная гильза", "Гильза 16", "Монтажная гильза 16")]
[TestCase("Монтажная гильза", "Пресс-втулка 20", "Монтажная гильза 20")]
public void SleeveTest(string productType, string query, string modified) =>
Test(productType, query, modified);
[TestCase("Тройник RAUTITAN", "Тройник 20-16-16", "Тройник RAUTITAN -PLATINUM 20-16-16")]
[TestCase("Тройник RAUTITAN", "Тройник 20x16x16", "Тройник RAUTITAN -PLATINUM 20-16-16")]
public void TPieceTest(string productType, string query, string modified) =>
Test(productType, query, modified);
public void Test(string productType, string query, string modified)
{
Dictionary<string, StringValues> queryPair = new()
{
["query"] = new StringValues(query)
};
QueryCollection collection = new(queryPair);
QueryString expected = new($"?query={Uri.EscapeDataString(modified)}");
var modifier = _factory.GetModifier(productType);
bool result = modifier.TryQueryModify(collection, out var actual);
Assert.True(result);
Assert.That(actual, Is.EqualTo(expected));
}
}