def test_collision(self): "Test collision" data1 = self.data() data2 = self.data() id1 = filestore.set(data1, prefix='test') with patch.object(filestore, '_id') as _id: _id.return_value = id1 id2 = filestore.set(data2, prefix='test') self.assertNotEqual(id1, id2) self.assertEqual(filestore.get(id1, prefix='test'), data1) self.assertEqual(filestore.get(id2, prefix='test'), data2)
def set(self, Model, name, ids, value, *args): transaction = Transaction() table = Model.__table__() cursor = transaction.connection.cursor() prefix = self.store_prefix if prefix is None: prefix = transaction.database.name args = iter((ids, value) + args) for ids, value in zip(args, args): if self.file_id: columns = [Column(table, self.file_id), Column(table, name)] values = [ filestore.set(value, prefix) if value else None, None ] else: columns = [Column(table, name)] values = [self.sql_format(value)] cursor.execute(*table.update( columns, values, where=reduce_ids(table.id, ids)))
def test_duplicate(self): "Test duplicate" data = self.data() id = filestore.set(data, prefix='test') self.assertEqual(filestore.set(data, prefix='test'), id)
def test_bad_prefix(self): "Test bad prefix" with self.assertRaises(ValueError): filestore.set(self.data(), prefix='../')
def test_prefix(self): "Test prefix" data = self.data() id = filestore.set(data, prefix='foo') with self.assertRaises(IOError): filestore.get(id, prefix='bar')
def test_size(self): "Test size" data = self.data() id = filestore.set(data, prefix='test') self.assertEqual(filestore.size(id, prefix='test'), len(data))
def test_get(self): "Test get" data = self.data() id = filestore.set(data, prefix='test') self.assertEqual(filestore.get(id, prefix='test'), data)
def test_set(self): "Test set" result = filestore.set(self.data(), prefix='test') self.assertTrue(result) self.assertIsInstance(result, basestring)