def test_m2m_add(self): p = Post.get(id=1) t1 = Tag.get(id=1) t2 = Tag.get(id=2) p.tags.add(t1) p.tags.add(t2) self.assertEqual([p.id for p in p.tags.all()], [t1.id, t2.id]) self.assertEqual([p.id for p in t1.posts.all()], [p.id]) self.assertEqual([p.id for p in t2.posts.all()], [p.id])
def test_m2m_remove(self): p = Post.get(id=5) self.assertEqual(p.tags.all(), []) t = Tag.get(id=5) p.tags.add(t) self.assertEqual([t.id for t in p.tags.all()], [t.id]) self.assertEqual([p.id for p in t.posts.all()], [p.id]) p.tags.remove(t) self.assertEqual(p.tags.all(), []) self.assertEqual(t.posts.all(), [])
def test_m2m_count(self): p = Post.get(id=3) self.assertEqual(p.tags.count(), 0) p.tags.add(Tag.get(id=3)) p.tags.add(Tag.get(id=4)) self.assertEqual(p.tags.count(), 2)