summaryrefslogtreecommitdiff
path: root/RhSolutions.Api.Tests/ProductQueryModifierTests.cs
blob: 32bc140753a760cdcb8a33f876bbdb1099611f86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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));
    }
}