From f197df92e5b040aec18b76c865519c0a2861395f Mon Sep 17 00:00:00 2001 From: Guilherme Chapiewski Date: Wed, 11 Mar 2009 19:23:39 -0300 Subject: [PATCH] #15: Get all db versions. --- src/simple_db_migrate/mysql.py | 13 ++++++++++++- tests/mysql_test.py | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/simple_db_migrate/mysql.py b/src/simple_db_migrate/mysql.py index 63aa1e0..de10290 100644 --- a/src/simple_db_migrate/mysql.py +++ b/src/simple_db_migrate/mysql.py @@ -79,4 +79,15 @@ def get_current_schema_version(self): version = cursor.fetchone()[0] db.close() return version - + + def get_all_schema_versions(self): + versions = [] + db = self.__mysql_connect() + cursor = db.cursor() + cursor.execute("select version from __db_version__ order by version;") + all_versions = cursor.fetchall() + for version in all_versions: + versions.append(version[0]) + db.close() + versions.sort() + return versions diff --git a/tests/mysql_test.py b/tests/mysql_test.py index 60a06f1..199398c 100644 --- a/tests/mysql_test.py +++ b/tests/mysql_test.py @@ -91,5 +91,30 @@ def test_it_should_get_current_schema_version(self): mysql = MySQL("test.conf", mysql_driver_mock) self.assertEquals("0", mysql.get_current_schema_version()) + def test_it_should_get_all_db_versions(self): + mysql_driver_mock = Mock() + db_mock = Mock() + cursor_mock = Mock() + + self.__create_init_expectations(mysql_driver_mock, db_mock, cursor_mock) + + expected_versions = [] + expected_versions.append("0") + expected_versions.append("20090211120001") + expected_versions.append("20090211120002") + expected_versions.append("20090211120003") + + db_mock.expects(at_least_once()).method("cursor").will(return_value(cursor_mock)) + cursor_mock.expects(once()).method("execute").execute(eq("select version from __db_version__ order by version;")) + cursor_mock.expects(once()).method("fetchall").will(return_value(tuple(zip(expected_versions)))) + db_mock.expects(once()).method("close") + + mysql = MySQL("test.conf", mysql_driver_mock) + + schema_versions = mysql.get_all_schema_versions() + self.assertEquals(len(expected_versions), len(schema_versions)) + for version in schema_versions: + self.assertTrue(version in expected_versions) + if __name__ == "__main__": unittest.main()