45 lines
1.9 KiB
C#
45 lines
1.9 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);
|
|
|
|
[TestCase("Муфта соединительная", "муфта 20", "Муфта соединительная равнопроходная 20")]
|
|
[TestCase("Муфта соединительная", "переходник 20-16", "Муфта соединительная переходная 20-16")]
|
|
public void CouplingTest(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));
|
|
}
|
|
} |