summaryrefslogtreecommitdiff
path: root/RhSolutions.Api.Tests/ProductQueryModifierTests.cs
blob: 0756d4f0147f1b2c028ed2214fdd0f4d61d6fdcd (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
41
42
43
44
45
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));
	}
}