Fix cards list order for accents in expansion card (#264)

This commit is contained in:
Guillaume Collic 2019-07-30 00:02:18 +02:00 committed by Peter
parent f17634b6dc
commit 3a8f72a56a
2 changed files with 37 additions and 3 deletions

View File

@ -1655,7 +1655,8 @@ def filter_sort_cards(cards, options):
"name": c.name.strip().replace(" ", " "), "name": c.name.strip().replace(" ", " "),
"randomizer": c.randomizer, "randomizer": c.randomizer,
"count": 1, "count": 1,
"sort": "%03d%s" % (order, c.name.strip()), "sort": "%03d%s"
% (order, CardSorter.strip_accents(c.name.strip())),
} }
for set_tag, set_values in Card.sets.items(): for set_tag, set_values in Card.sets.items():

View File

@ -3,6 +3,7 @@ import subprocess
import shutil import shutil
import os import os
import contextlib import contextlib
import unicodedata
import pytest import pytest
@ -147,7 +148,7 @@ def test_expansion():
# --expansions, that we can have multiple # --expansions, that we can have multiple
# items with a single flag, that * syntax # items with a single flag, that * syntax
# works, that we can use either the # works, that we can use either the
# cardset tag or name, and that capitalziation # cardset tag or name, and that capitalization
# doesn't matter # doesn't matter
options = main.parse_opts( options = main.parse_opts(
[ [
@ -175,7 +176,7 @@ def test_exclude_expansion():
# --exclude-expansions, that we can have multiple # --exclude-expansions, that we can have multiple
# items with a single flag, that * syntax # items with a single flag, that * syntax
# works, that we can use either the # works, that we can use either the
# cardset tag or name, and that capitalziation # cardset tag or name, and that capitalization
# doesn't matter # doesn't matter
options = main.parse_opts( options = main.parse_opts(
[ [
@ -200,3 +201,35 @@ def test_exclude_expansion():
"dominion 2nd edition upgrade", "dominion 2nd edition upgrade",
"intrigue 1st edition", "intrigue 1st edition",
} }
def test_expansion_description_card_order():
# test that the expansions cards lists cards
# in alphabetical order, like they are printed,
# and that accents don't matter
options = main.parse_opts(
[
"--expansions",
"Hinterlands",
"--expansion-dividers",
"--language",
"fr",
"--only-type-any",
"Expansion",
]
)
options = main.clean_opts(options)
options.data_path = "."
cards = main.read_card_data(options)
cards = main.filter_sort_cards(cards, options)
card_names = [c.strip() for c in cards[0].description.split("|")]
# The 26 french card names of the Hinterlands expansion should be sorted as if no accent
assert len(card_names) == 26
assert card_names == sorted(
card_names,
key=lambda s: "".join(
c
for c in unicodedata.normalize("NFD", s)
if unicodedata.category(c) != "Mn"
),
)