0
0
RhSolutions-Api/RhSolutions.Api.Tests/ProductQueryModifierTests.cs

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