Skip to content

Commit 9cf1888

Browse files
authored
Merge pull request #9 from Gallaecio/full-coverage
Reach 100% coverage and specify which parts are untested in coverage reports
2 parents 78f9a65 + 7cb86f8 commit 9cf1888

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

.coveragerc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
[run]
22
branch = true
3+
4+
[report]
5+
show_missing = true

price_parser/parser.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ def extract_price_text(price: str) -> Optional[str]:
202202
return None
203203

204204

205+
# NOTE: Keep supported separators in sync with parse_number()
205206
_search_decimal_sep = re.compile(r"""
206207
\d # at least one digit (there can be more before it)
207208
([.,€]) # decimal separator
@@ -268,13 +269,15 @@ def parse_number(num: str) -> Optional[Decimal]:
268269
return None
269270
num = num.strip().replace(' ', '')
270271
decimal_separator = get_decimal_separator(num)
272+
# NOTE: Keep supported separators in sync with _search_decimal_sep
271273
if decimal_separator is None:
272274
num = num.replace('.', '').replace(',', '')
273275
elif decimal_separator == '.':
274276
num = num.replace(',', '')
275277
elif decimal_separator == ',':
276278
num = num.replace('.', '').replace(',', '.')
277-
elif decimal_separator == '€':
279+
else:
280+
assert decimal_separator == '€'
278281
num = num.replace('.', '').replace(',', '').replace('€', '.')
279282
try:
280283
return Decimal(num)

tests/test_price_parsing.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1975,3 +1975,14 @@ def __eq__(self, other):
19751975
def test_parsing(example: Example):
19761976
parsed = Price.fromstring(example.price_raw, example.currency_raw)
19771977
assert parsed == example
1978+
1979+
1980+
@pytest.mark.parametrize(
1981+
"amount,amount_float",
1982+
(
1983+
(None, None),
1984+
(Decimal('1.23'), 1.23),
1985+
)
1986+
)
1987+
def test_price_amount_float(amount, amount_float):
1988+
assert Price(amount, None, None).amount_float == amount_float

0 commit comments

Comments
 (0)