def test_no_primary_key(self): tfile = tempfile.NamedTemporaryFile() class MyModel2( Model ): class Meta: filename = tfile.name int_type = fields.IntField(primary_key=True) db = Database( models=[MyModel2] ) for i in range(3): MyModel2(int_type=i).save() db.store() self.assertTrue( os.path.getsize(tfile.name) ) del db # need to add a auto increment for when there is no pk # and/or assert when model doesn't have pk # all records read/write to None/'' when there is no pk #print "fread",open(tfile.name,'r').read() db = Database( models=[MyModel2] ) db.load() # not sure if this is a valid test, MyModel.objects is still around model = db.get_model('MyModel2') self.assertEqual( 3, len(model.objects) )
def test_storage_instance(self): tfile = tempfile.NamedTemporaryFile(mode="w") db = Database( models=[AutoModel1, AutoModel2], storage=MultiStorage([AutoModel1, AutoModel2], tfile.name) ) db.load() AutoModel1(f1="some text 1").save() AutoModel2(f1="some text 1").save() db.store() db = None AutoModel1.objects.clear() AutoModel2.objects.clear() db = Database( models=[AutoModel1, AutoModel2], storage=MultiStorage([AutoModel1, AutoModel2], tfile.name) ) db.load() self.assertEqual("some text 1", AutoModel1.objects.get(f1="some text 1").f1) self.assertEqual("some text 1", AutoModel2.objects.get(f1="some text 1").f1)
def test_6(self): "test saving/loading" tfile = tempfile.NamedTemporaryFile() class MyModel( Model ): class Meta: ordering = ['int_type','str_type','dt_type'] filename = tfile.name int_type = fields.IntField(primary_key=True) str_type = fields.StringField() dt_type = fields.DateTimeField() db = Database( models=[MyModel] ) man = MyModel.objects now = tznow() instances = [ MyModel(int_type=i, str_type='string', dt_type=now ) for i in range(3)] for inst in instances: man.save(inst) db.store() self.assertTrue( os.path.getsize(tfile.name) ) del db # with open(tfile.name,'r') as f: # print f.read() db = Database( models=[MyModel] ) db.load() # not sure if this is a valid test, MyModel.objects is still around model = db.get_model('MyModel') self.assertEqual( 3, len(model.objects) )