ensure tags are synced properly in one way sync

This commit is contained in:
Damien Elmes 2009-05-21 02:11:33 +09:00
parent 423974934c
commit df0e4d2446
2 changed files with 14 additions and 2 deletions

View file

@ -844,6 +844,10 @@ and cards.id in %s""" % ids2str([c[0] for c in cards])))
self.deck.s.flush() self.deck.s.flush()
self.deck.updateCardQACache( self.deck.updateCardQACache(
[(c[0], c[2], c[1], models[c[0]]) for c in cards]) [(c[0], c[2], c[1], models[c[0]]) for c in cards])
# rebuild priorities on client
cardIds = [c[0] for c in cards]
self.deck.updateCardTags(cardIds)
self.rebuildPriorities(cardIds)
# Tools # Tools
########################################################################## ##########################################################################

View file

@ -35,13 +35,13 @@ def setup_local(loadDecks=None):
deck1.currentModel.cardModels[1].active = True deck1.currentModel.cardModels[1].active = True
deck1.newCardOrder = 1 deck1.newCardOrder = 1
f = deck1.newFact() f = deck1.newFact()
f['Front'] = u"foo"; f['Back'] = u"bar" f['Front'] = u"foo"; f['Back'] = u"bar"; f.tags = u"foo"
deck1.addFact(f) deck1.addFact(f)
deck2 = DeckStorage.Deck() deck2 = DeckStorage.Deck()
deck2.addModel(BasicModel()) deck2.addModel(BasicModel())
deck2.currentModel.cardModels[1].active = True deck2.currentModel.cardModels[1].active = True
f = deck2.newFact() f = deck2.newFact()
f['Front'] = u"baz"; f['Back'] = u"qux" f['Front'] = u"baz"; f['Back'] = u"qux"; f.tags = u"bar"
deck2.addFact(f) deck2.addFact(f)
deck2.newCardOrder = 1 deck2.newCardOrder = 1
client = SyncClient(deck1) client = SyncClient(deck1)
@ -256,10 +256,18 @@ def test_localsync_media():
def test_oneway_simple(): def test_oneway_simple():
assert deck1.s.scalar("select count(1) from cards") == 2 assert deck1.s.scalar("select count(1) from cards") == 2
assert deck2.s.scalar("select count(1) from cards") == 2 assert deck2.s.scalar("select count(1) from cards") == 2
assert deck1.cardCount == 2
assert deck2.cardCount == 2
assert deck1.s.scalar("select id from tags where tag = 'foo'")
assert not deck1.s.scalar("select id from tags where tag = 'bar'")
server.deckName = "dummy" server.deckName = "dummy"
client.syncOneWay(0) client.syncOneWay(0)
assert deck1.s.scalar("select count(1) from cards") == 4 assert deck1.s.scalar("select count(1) from cards") == 4
assert deck2.s.scalar("select count(1) from cards") == 2 assert deck2.s.scalar("select count(1) from cards") == 2
assert deck1.cardCount == 4
assert deck2.cardCount == 2
assert deck1.s.scalar("select id from tags where tag = 'foo'")
assert deck1.s.scalar("select id from tags where tag = 'bar'")
# should be a noop # should be a noop
client.syncOneWay(0) client.syncOneWay(0)