Skip to content

Commit

Permalink
test: implement basic tests for replace_query_select_clause
Browse files Browse the repository at this point in the history
The tests run variations of the example given in #122.
Every test implemented here fails without the fix introduced with
this PR.
  • Loading branch information
lu-pl committed Nov 6, 2024
1 parent e1cb78d commit 47bc4d2
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
75 changes: 75 additions & 0 deletions tests/unit/test_replace_query_select_clause.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"""Unit tests for rdfproxy.utils.sparql_utils.replace_query_select_clause."""

import re
from textwrap import dedent

import pytest

from rdfproxy.utils.sparql_utils import replace_query_select_clause
from tests.utils._types import QueryConstructionParameter


def _normalize_whitespace(string: str) -> str:
return re.sub(r"\s+", " ", string.strip())


expected_simple_query = "select <test> where { ?s ?p ?o . }"

query_construction_parameters = [
QueryConstructionParameter(
input_query="""
select ?s ?p ?o
where {
?s ?p ?o .
}
""",
expected_query=expected_simple_query,
),
QueryConstructionParameter(
input_query="""
select ?s
?p ?o
where {
?s ?p ?o .
}
""",
expected_query=expected_simple_query,
),
QueryConstructionParameter(
input_query="""
select ?s ?p
?o
where {
?s ?p ?o .
}
""",
expected_query=expected_simple_query,
),
QueryConstructionParameter(
input_query="""
select ?s ?p ?o where {
?s ?p ?o .
}
""",
expected_query=expected_simple_query,
),
QueryConstructionParameter(
input_query="select ?s ?p ?o where { ?s ?p ?o . }",
expected_query=expected_simple_query,
),
]


@pytest.mark.parametrize(
["input_query", "expected_query"], query_construction_parameters
)
def test_basic_replace_query_select_clause(input_query, expected_query):
_constructed_indent: str = replace_query_select_clause(input_query, "select <test>")
_constructed_dedent: str = replace_query_select_clause(
dedent(input_query), "select <test>"
)

constructed_indent = _normalize_whitespace(_constructed_indent)
constructed_dedent = _normalize_whitespace(_constructed_dedent)

assert constructed_dedent == constructed_indent == expected_query
7 changes: 7 additions & 0 deletions tests/utils/_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,10 @@ class CountQueryParameter(NamedTuple):
query: str
model: type[BaseModel]
expected: int


class QueryConstructionParameter(NamedTuple):
"""Parameter type for query constructors."""

input_query: str
expected_query: str

0 comments on commit 47bc4d2

Please sign in to comment.