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 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)); } }