Break A and E technical into subdecks
This commit is contained in:
@@ -193,6 +193,48 @@ class TestAnkiBuild(unittest.TestCase):
|
||||
{"N": ["NA101"], "E": ["EA202"], "A": ["AA303"]},
|
||||
)
|
||||
|
||||
def test_split_class_packages_ship_topic_subdeck_tree(self):
|
||||
# The E and A packages each stay one file but carry a deck tree:
|
||||
# the anchoring class deck plus one sub-deck per first-level
|
||||
# topic, with each card filed under its topic sub-deck.
|
||||
self._build_all()
|
||||
for letter in ("e", "a"):
|
||||
apkg = self.out_dir / f"amateurfunk-technische-kenntnisse-{letter}.apkg"
|
||||
db_path, _media, _names = extract_collection(apkg, self.root / letter)
|
||||
conn = sqlite3.connect(db_path)
|
||||
try:
|
||||
decks = json.loads(
|
||||
conn.execute("select decks from col").fetchone()[0]
|
||||
)
|
||||
deck_names = {d["name"] for d in decks.values()}
|
||||
id_to_name = {int(k): d["name"] for k, d in decks.items()}
|
||||
card_decks = sorted(
|
||||
id_to_name[row[0]]
|
||||
for row in conn.execute("select did from cards")
|
||||
)
|
||||
finally:
|
||||
conn.close()
|
||||
root = f"Amateurfunk::Technische Kenntnisse::{letter.upper()}"
|
||||
self.assertEqual(deck_names, {root, f"{root}::Grundlagen"})
|
||||
self.assertEqual(card_decks, [f"{root}::Grundlagen"])
|
||||
|
||||
def test_single_topic_classes_ship_one_flat_deck(self):
|
||||
# N (and E) are not split: one deck, card filed directly in it.
|
||||
self._build_all()
|
||||
apkg = self.out_dir / "amateurfunk-technische-kenntnisse-n.apkg"
|
||||
db_path, _media, _names = extract_collection(apkg, self.root / "n")
|
||||
conn = sqlite3.connect(db_path)
|
||||
try:
|
||||
decks = json.loads(
|
||||
conn.execute("select decks from col").fetchone()[0]
|
||||
)
|
||||
finally:
|
||||
conn.close()
|
||||
self.assertEqual(
|
||||
{d["name"] for d in decks.values()},
|
||||
{"Amateurfunk::Technische Kenntnisse::N"},
|
||||
)
|
||||
|
||||
def test_apkg_contains_notes_cards_and_media(self):
|
||||
self._build_all()
|
||||
apkg = self.out_dir / "amateurfunk-technische-kenntnisse-n.apkg"
|
||||
|
||||
Reference in New Issue
Block a user