110 lines
2.9 KiB
Python
110 lines
2.9 KiB
Python
|
# coding: utf-8
|
||
|
|
||
|
from tests.shared import getEmptyDeck
|
||
|
|
||
|
def test_previewCards():
|
||
|
deck = getEmptyDeck()
|
||
|
f = deck.newNote()
|
||
|
f['Front'] = u'1'
|
||
|
f['Back'] = u'2'
|
||
|
# non-empty and active
|
||
|
cards = deck.previewCards(f, 0)
|
||
|
assert len(cards) == 1
|
||
|
assert cards[0].ord == 0
|
||
|
# all templates
|
||
|
cards = deck.previewCards(f, 2)
|
||
|
assert len(cards) == 1
|
||
|
# add the note, and test existing preview
|
||
|
deck.addNote(f)
|
||
|
cards = deck.previewCards(f, 1)
|
||
|
assert len(cards) == 1
|
||
|
assert cards[0].ord == 0
|
||
|
# make sure we haven't accidentally added cards to the db
|
||
|
assert deck.cardCount() == 1
|
||
|
|
||
|
def test_delete():
|
||
|
deck = getEmptyDeck()
|
||
|
f = deck.newNote()
|
||
|
f['Front'] = u'1'
|
||
|
f['Back'] = u'2'
|
||
|
deck.addNote(f)
|
||
|
cid = f.cards()[0].id
|
||
|
deck.reset()
|
||
|
deck.sched.answerCard(deck.sched.getCard(), 2)
|
||
|
deck.remCards([cid])
|
||
|
assert deck.cardCount() == 0
|
||
|
assert deck.noteCount() == 0
|
||
|
assert deck.db.scalar("select count() from notes") == 0
|
||
|
assert deck.db.scalar("select count() from cards") == 0
|
||
|
assert deck.db.scalar("select count() from graves") == 2
|
||
|
|
||
|
def test_misc():
|
||
|
d = getEmptyDeck()
|
||
|
f = d.newNote()
|
||
|
f['Front'] = u'1'
|
||
|
f['Back'] = u'2'
|
||
|
d.addNote(f)
|
||
|
c = f.cards()[0]
|
||
|
id = d.models.current()['id']
|
||
|
assert c.template()['ord'] == 0
|
||
|
|
||
|
def test_genrem():
|
||
|
d = getEmptyDeck()
|
||
|
f = d.newNote()
|
||
|
f['Front'] = u'1'
|
||
|
f['Back'] = u''
|
||
|
d.addNote(f)
|
||
|
assert len(f.cards()) == 1
|
||
|
m = d.models.current()
|
||
|
mm = d.models
|
||
|
# adding a new template should automatically create cards
|
||
|
t = mm.newTemplate("rev")
|
||
|
t['qfmt'] = '{{Front}}'
|
||
|
t['afmt'] = ""
|
||
|
mm.addTemplate(m, t)
|
||
|
mm.save(m, templates=True)
|
||
|
assert len(f.cards()) == 2
|
||
|
# if the template is changed to remove cards, they'll be removed
|
||
|
t['qfmt'] = "{{Back}}"
|
||
|
mm.save(m, templates=True)
|
||
|
d.remCards(d.emptyCids())
|
||
|
assert len(f.cards()) == 1
|
||
|
# if we add to the note, a card should be automatically generated
|
||
|
f.load()
|
||
|
f['Back'] = "1"
|
||
|
f.flush()
|
||
|
assert len(f.cards()) == 2
|
||
|
|
||
|
def test_gendeck():
|
||
|
d = getEmptyDeck()
|
||
|
cloze = d.models.byName("Cloze")
|
||
|
d.models.setCurrent(cloze)
|
||
|
f = d.newNote()
|
||
|
f['Text'] = u'{{c1::one}}'
|
||
|
d.addNote(f)
|
||
|
assert d.cardCount() == 1
|
||
|
assert f.cards()[0].did == 1
|
||
|
# set the model to a new default deck
|
||
|
newId = d.decks.id("new")
|
||
|
cloze['did'] = newId
|
||
|
d.models.save(cloze)
|
||
|
# a newly generated card should share the first card's deck
|
||
|
f['Text'] += u'{{c2::two}}'
|
||
|
f.flush()
|
||
|
assert f.cards()[1].did == 1
|
||
|
# and same with multiple cards
|
||
|
f['Text'] += u'{{c3::three}}'
|
||
|
f.flush()
|
||
|
assert f.cards()[2].did == 1
|
||
|
# if one of the cards is in a different deck, it should revert to the
|
||
|
# model default
|
||
|
c = f.cards()[1]
|
||
|
c.did = newId
|
||
|
c.flush()
|
||
|
f['Text'] += u'{{c4::four}}'
|
||
|
f.flush()
|
||
|
assert f.cards()[3].did == newId
|
||
|
|
||
|
|
||
|
|