|
| 1 | +import pytest |
| 2 | + |
| 3 | + |
1 | 4 | def test_correct_count(search_page) -> None: |
2 | 5 | results = search_page.get_search_results() |
3 | 6 |
|
4 | 7 | assert len(results) == 12 |
5 | 8 |
|
6 | 9 |
|
7 | | -def test_sort_high_low(search_page) -> None: |
8 | | - search_page.sort_price_high_low() |
| 10 | +@pytest.mark.parametrize( |
| 11 | + "sort_method, attr, reverse", |
| 12 | + [ |
| 13 | + ("sort_price_low_high", "price", False), |
| 14 | + ("sort_price_high_low", "price", True), |
| 15 | + ("sort_name_az", "name", False), |
| 16 | + ("sort_name_za", "name", True), |
| 17 | + ], |
| 18 | +) |
| 19 | +def test_sorting(search_page, sort_method, attr, reverse) -> None: |
| 20 | + getattr(search_page, sort_method)() |
9 | 21 |
|
10 | 22 | products = search_page.get_search_results() |
11 | | - prices = [product.price for product in products] |
12 | | - assert prices == sorted(prices, reverse=True) |
| 23 | + values = [getattr(p, attr) for p in products] |
13 | 24 |
|
| 25 | + if attr == "name": |
| 26 | + sorted_values = sorted(values, key=str.casefold, reverse=reverse) |
| 27 | + else: |
| 28 | + sorted_values = sorted(values, reverse=reverse) |
14 | 29 |
|
15 | | -def test_sort_name_za(search_page) -> None: |
16 | | - search_page.sort_name_za() |
17 | | - |
18 | | - products = search_page.get_search_results() |
19 | | - names = [product.name for product in products] |
20 | | - assert names == sorted(names, key=str.casefold, reverse=True) |
| 30 | + assert values == sorted_values |
0 commit comments