def test_no_anki_conn(self): if AnkiAppTest.is_open(): AnkiAppTest.close() ankifier = RoamGraphAnkifier() with self.assertRaises(ValueError) as cm: ankifier.check_conn_and_params() self.assertEqual("Couldn't connect to Anki.", str(cm.exception))
def test_ankify(self): pages = json.loads(ROAM_JSON) roam_graph = roam.RoamGraph(pages) ankifier = RoamGraphAnkifier(deck=self.deck) with self.assertLogs() as ctx: ankifier.ankify(roam_graph) self.assertFalse([r for r in ctx.records if r.levelno >= logging.WARNING])
def test_bad_note_basic(self): if not AnkiAppTest.is_open(): AnkiAppTest.open() ankifier = RoamGraphAnkifier(note_basic="not a model") with self.assertRaises(ValueError) as cm: ankifier.check_conn_and_params() self.assertEqual( f"Note type named '{ankifier.note_basic}' not in Anki.", str(cm.exception))
def test_bad_deck(self): if not AnkiAppTest.is_open(): AnkiAppTest.open() ankifier = RoamGraphAnkifier(deck="not a deck") with self.assertRaises(ValueError) as cm: ankifier.check_conn_and_params() self.assertEqual( f"Deck named '{ankifier.deck}' not in Anki.", str(cm.exception))
def test_cloze_not_cloze(self): if not AnkiAppTest.is_open(): AnkiAppTest.open() ankifier = RoamGraphAnkifier(note_cloze="Roam Basic") with self.assertRaises(ValueError) as cm: ankifier.check_conn_and_params() self.assertEqual( f"note_cloze must be a cloze note type and '{ankifier.note_cloze}' isn't.", str(cm.exception))
def test_missing_uid_field(self): if not AnkiAppTest.is_open(): AnkiAppTest.open() ankifier = RoamGraphAnkifier(note_basic="Basic") with self.assertRaises(ValueError) as cm: ankifier.check_conn_and_params() self.assertEqual( f"'{ankifier.note_basic}' note type is missing a 'uid' field.", str(cm.exception))
def add(path, **kwargs): logger.info("Setting up Ankifier") ankifier = RoamGraphAnkifier(**kwargs) ankifier.check_conn_and_params() logger.info("Loading Roam Graph") roam_graph = RoamGraph.from_path(path) ankifier.ankify(roam_graph)