Beispiel #1
0
    def test_migration(self):
        """Teste la migration (partielle/totale) du modèle."""

        # Recherche des scripts de migration dans le dossier des tests.
        module = u'vigilo.models.test.testdata'
        scripts = get_migration_scripts(module)

        expected_scripts = {
            1: '001_Initial_version',
            2: '002_Dummy',
            3: '003_Dummy',
        }
        self.assertEquals(scripts, expected_scripts)

        # On simule l'installation d'un nouveau modèle.
        DBSession.add(tables.Version(
            name=module,
            version=1,
        ))
        DBSession.flush()

        # On vérifie qu'une migration jusqu'à un point fixe fonctionne.
        migrate_model(DBSession.bind, module, scripts, 2)
        version = DBSession.query(tables.Version).filter(
            tables.Version.name == module).one()
        self.assertEquals(version.version, 2)

        # On annule la migration et on teste cette fois une migration
        # jusqu'à la dernière version disponible.
        version.version = 1
        DBSession.flush()
        migrate_model(DBSession.bind, module, scripts)
        version = DBSession.query(tables.Version).filter(
            tables.Version.name == module).one()
        self.assertEquals(version.version, 3)
Beispiel #2
0
def main(migration_no):
    """
    Affiche toutes les migrations depuis la version L{migration_no}
    (exclue) jusqu'à la version actuelle sur la sortie standard.

    @param migration_no: Numéro de la migration de départ.
    @type migration_no: C{int}
    """
    module = 'vigilo.models'
    scripts = get_migration_scripts(module)

    def remove_old_migrations(version):
        return version > migration_no

    versions = filter(remove_old_migrations, scripts.keys())
    sorted(versions)
    for (i, ver) in enumerate(versions):
        if i > 0:
            print "-" * 30

        ep = pkg_resources.EntryPoint.parse(
            'upgrade = %s.migration.%s' % (
                module,
                scripts[ver],
            )).load(require=False)

        print scripts[ver] + '.py'
        print ep.__doc__
Beispiel #3
0
 def test_model_creation(self):
     """Teste la création du modèle."""
     # On vérifie que lorsque le modèle de Vigilo est créé,
     # il l'est avec la toute dernière version disponible.
     populate_db(DBSession.bind)
     installed_version = DBSession.query(tables.Version).filter(
         tables.Version.name == u'vigilo.models').one()
     scripts = get_migration_scripts('vigilo.models')
     latest_version = max(scripts.keys())
     self.assertEquals(installed_version.version, latest_version)