diff -r 53fbd5644bff -r c655e19cbc35 cubicweb/server/test/unittest_migractions.py --- a/cubicweb/server/test/unittest_migractions.py Wed May 25 09:51:51 2016 +0200 +++ b/cubicweb/server/test/unittest_migractions.py Tue Jun 07 10:05:30 2016 +0200 @@ -20,17 +20,20 @@ from datetime import date import os, os.path as osp from contextlib import contextmanager +import tempfile -from logilab.common.testlib import unittest_main, Tags, tag +from logilab.common.testlib import unittest_main, Tags, tag, with_tempdir from logilab.common import tempattr from yams.constraints import UniqueConstraint -from cubicweb import ConfigurationError, ValidationError, ExecutionError +from cubicweb import (ConfigurationError, ValidationError, + ExecutionError, Binary) from cubicweb.devtools import startpgcluster, stoppgcluster from cubicweb.devtools.testlib import CubicWebTC from cubicweb.server.sqlutils import SQL_PREFIX from cubicweb.server.migractions import ServerMigrationHelper +from cubicweb.server.sources import storages import cubicweb.devtools @@ -488,7 +491,7 @@ 'X ordernum O')] expected = [u'nom', u'prenom', u'sexe', u'promo', u'ass', u'adel', u'titre', u'web', u'tel', u'fax', u'datenaiss', u'test', u'tzdatenaiss', - u'description', u'firstname', + u'description', u'firstname', u'photo', u'creation_date', u'cwuri', u'modification_date'] self.assertEqual(expected, rinorder) @@ -755,6 +758,29 @@ mh.drop_relation_definition('Note', 'ecrit_par', 'CWUser') self.assertFalse(mh.sqlexec('SELECT * FROM cw_Note WHERE cw_ecrit_par IS NOT NULL')) + @with_tempdir + def test_storage_changed(self): + with self.mh() as (cnx, mh): + john = mh.cmd_create_entity('Personne', nom=u'john', + photo=Binary(b'something')) + bill = mh.cmd_create_entity('Personne', nom=u'bill') + mh.commit() + bfs_storage = storages.BytesFileSystemStorage(tempfile.tempdir) + storages.set_attribute_storage(self.repo, 'Personne', 'photo', bfs_storage) + mh.cmd_storage_changed('Personne', 'photo') + bob = mh.cmd_create_entity('Personne', nom=u'bob') + bffss_dir_content = os.listdir(tempfile.tempdir) + self.assertEqual(len(bffss_dir_content), 1) + john.cw_clear_all_caches() + self.assertEqual(john.photo.getvalue(), + osp.join(tempfile.tempdir, bffss_dir_content[0])) + bob.cw_clear_all_caches() + self.assertIsNone(bob.photo) + bill.cw_clear_all_caches() + self.assertIsNone(bill.photo) + storages.unset_attribute_storage(self.repo, 'Personne', 'photo') + + class MigrationCommandsComputedTC(MigrationTC): """ Unit tests for computed relations and attributes """