Skip to content

Commit

Permalink
#15: Get all db versions.
Browse files Browse the repository at this point in the history
  • Loading branch information
guilhermechapiewski committed Mar 11, 2009
1 parent faf3108 commit f197df9
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/simple_db_migrate/mysql.py
Expand Up @@ -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
25 changes: 25 additions & 0 deletions tests/mysql_test.py
Expand Up @@ -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()

0 comments on commit f197df9

Please sign in to comment.