Created
December 21, 2012 17:20
-
-
Save anonymous/4354211 to your computer and use it in GitHub Desktop.
Unit test to reproduce a problem with mongoengine inheritance. I need to save instances of child class in different collection, and have no idea how to do it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment