Skip to content

Instantly share code, notes, and snippets.

Created December 21, 2012 17:20

Revisions

  1. @invalid-email-address Anonymous created this gist Dec 21, 2012.
    49 changes: 49 additions & 0 deletions inheritance_tests.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,49 @@

    from django.test import TestCase
    import mongoengine as me

    class TestCollectionNameInheritance(TestCase):
    def test_simple_case(self):
    class BasicUser(me.Document):
    username=me.StringField(required=True, unique=True)
    meta = {
    'allow_inheritance': True,
    # 'indexes': [
    # {'fields': ['username'], 'unique': True}
    # ]
    }

    class CorporateUser(BasicUser):
    title = me.StringField(required=False)
    # meta = {
    # 'collection': 'corporate_user'
    # }


    CorporateUser._meta['collection'] = 'corporate_user'

    BasicUser.drop_collection()
    CorporateUser.drop_collection()

    customer_username = 'customer'
    basic = BasicUser(username=customer_username)
    basic.save()

    username='ceo_user'
    u = CorporateUser(username=username, title='CEO')
    u.save()

    self.assertEqual(BasicUser.objects._collection.name, 'basic_user')
    self.assertEqual(CorporateUser._meta['collection'], 'corporate_user')
    self.assertEqual(CorporateUser.objects._collection.name, 'corporate_user')

    self.assertEqual(CorporateUser.objects(username=username).count(), 1)
    self.assertEqual(BasicUser.objects(username=username).count(), 0)

    db = BasicUser._get_db()
    self.assertEqual(db['basic_user'].find({'username': username}).count(), 0)
    self.assertEqual(db['corporate_user'].find({'username': username}).count(), 1)

    self.assertEqual(db['basic_user'].find({'username': customer_username}).count(), 1)
    self.assertEqual(db['corporate_user'].find({'username': customer_username}).count(), 0)