_sort/_next links now use new path_with_replaced_args method

This commit is contained in:
Simon Willison 2018-05-15 06:34:45 -03:00
commit 590890fc46
No known key found for this signature in database
GPG key ID: 17E2DEA2588B7F52
5 changed files with 85 additions and 4 deletions

View file

@ -150,6 +150,57 @@ def test_sort_by_desc_redirects(app_client):
assert response.headers['Location'].endswith('?_sort_desc=sortable')
def test_sort_links(app_client):
response = app_client.get(
'/test_tables/sortable?_sort=sortable',
gather_request=False
)
assert response.status == 200
ths = Soup(response.body, 'html.parser').findAll('th')
attrs_and_link_attrs = [{
'attrs': th.attrs,
'a_href': (
th.find('a')['href'].split('/')[-1]
if th.find('a')
else None
),
} for th in ths]
assert [
{
"attrs": {"class": ["col-Link"], "scope": "col"},
"a_href": None
},
{
"attrs": {"class": ["col-pk1"], "scope": "col"},
"a_href": None
},
{
"attrs": {"class": ["col-pk2"], "scope": "col"},
"a_href": None
},
{
"attrs": {"class": ["col-content"], "scope": "col"},
"a_href": None
},
{
"attrs": {"class": ["col-sortable"], "scope": "col"},
"a_href": "sortable?_sort_desc=sortable",
},
{
"attrs": {"class": ["col-sortable_with_nulls"], "scope": "col"},
"a_href": "sortable?_sort=sortable_with_nulls",
},
{
"attrs": {"class": ["col-sortable_with_nulls_2"], "scope": "col"},
"a_href": "sortable?_sort=sortable_with_nulls_2",
},
{
"attrs": {"class": ["col-text"], "scope": "col"},
"a_href": "sortable?_sort=text",
},
] == attrs_and_link_attrs
@pytest.mark.parametrize('path,expected_classes', [
('/', ['index']),
('/test_tables', ['db', 'db-test_tables']),

View file

@ -61,6 +61,19 @@ def test_path_with_removed_args(path, args, expected):
assert expected == actual
@pytest.mark.parametrize('path,args,expected', [
('/foo?bar=1', {'bar': 2}, '/foo?bar=2'),
('/foo?bar=1&baz=2', {'bar': None}, '/foo?baz=2'),
])
def test_path_with_replaced_args(path, args, expected):
request = Request(
path.encode('utf8'),
{}, '1.1', 'GET', None
)
actual = utils.path_with_replaced_args(request, args)
assert expected == actual
@pytest.mark.parametrize('row,pks,expected_path', [
({'A': 'foo', 'B': 'bar'}, ['A', 'B'], 'foo,bar'),
({'A': 'f,o', 'B': 'bar'}, ['A', 'B'], 'f%2Co,bar'),