def __init__(self, python_package): """ Initialize the MigrationPackage to represent the Python migration package passed in. :param python_package: The Python package this object should represent :type python_package: package """ self._package = python_package migration_tracker_manager = MigrationTrackerManager() # This is an object representation of the DB object that keeps track of the migration # version that has been applied self._migration_tracker = migration_tracker_manager.get_or_create( name=self.name, defaults={'version': self.latest_available_version})
def __init__(self, python_package_name): """ Initialize the MigrationPackage to represent the Python migration package passed in. :param python_package_name: The name of the Python package this object should represent, in dotted notation. :type python_package_name: str """ self._package = _import_all_the_way(python_package_name) migration_tracker_manager = MigrationTrackerManager() # This is an object representation of the DB object that keeps track of the migration # version that has been applied self._migration_tracker = migration_tracker_manager.get_or_create( name=self.name, defaults={"version": self.latest_available_version} )
def __init__(self, python_package): """ Initialize the MigrationPackage to represent the Python migration package passed in. :param python_package: The Python package this object should represent :type python_package: package """ self._package = python_package migration_tracker_manager = MigrationTrackerManager() # This is an object representation of the DB object that keeps track of the migration # version that has been applied self._migration_tracker = migration_tracker_manager.get_or_create( name=self.name, defaults={'version': 0}) # Calculate the latest available version available_versions = self.available_versions if available_versions: self.latest_available_version = available_versions[-1] else: self.latest_available_version = 0
def setUp(self): super(self.__class__, self).setUp() self.mtm = MigrationTrackerManager()
class TestMigrationTrackerManager(MigrationTest): def setUp(self): super(self.__class__, self).setUp() self.mtm = MigrationTrackerManager() def test___init__(self): self.assertEquals(self.mtm._collection, MigrationTracker.get_collection()) def test_create(self): mt = self.mtm.create('first_prime', 2) self.assertEquals(mt.name, 'first_prime') self.assertEquals(mt.version, 2) # Make sure the DB got to the correct state self.assertEquals(mt.get_collection().find({}).count(), 1) mt_bson = mt.get_collection().find_one({'name': 'first_prime'}) self.assertEquals(mt_bson['name'], 'first_prime') self.assertEquals(mt_bson['version'], 2) def test_get(self): self.mtm.create('only_even_prime', 2) mt = self.mtm.get('only_even_prime') self.assertEquals(mt.name, 'only_even_prime') self.assertEquals(mt.version, 2) # Now try to get one that doesn't exist try: self.mtm.get("doesn't exist") self.fail("The get() should have raised DoesNotExist, but did not.") except DoesNotExist: # This is the expected behavior pass def test_get_or_create(self): # Insert one for getting self.mtm.create('smallest_perfect_number', 6) # Now get or create it with an incorrect version. The incorrect version should not be set mt = self.mtm.get_or_create('smallest_perfect_number', defaults={'version': 7}) self.assertEquals(mt.name, 'smallest_perfect_number') self.assertEquals(mt.version, 6) # not 7 mt_bson = mt.get_collection().find_one({'name': 'smallest_perfect_number'}) self.assertEquals(mt_bson['name'], 'smallest_perfect_number') self.assertEquals(mt_bson['version'], 6) # This will cause a create self.assertEquals(mt.get_collection().find({'name': 'x^y=y^x'}).count(), 0) # 16 is the only number for which x^y = y^x, where x != y mt = self.mtm.get_or_create('x^y=y^x', defaults={'version': 16}) self.assertEquals(mt.get_collection().find({'name': 'x^y=y^x'}).count(), 1) self.assertEquals(mt.name, 'x^y=y^x') self.assertEquals(mt.version, 16) mt_bson = mt.get_collection().find_one({'name': 'x^y=y^x'}) self.assertEquals(mt_bson['name'], 'x^y=y^x') self.assertEquals(mt_bson['version'], 16) # Let's use get_or_create without defaults mt = self.mtm.get_or_create('None') self.assertEquals(mt.get_collection().find({'name': 'None'}).count(), 1) self.assertEquals(mt.name, 'None') self.assertEquals(mt.version, None) mt_bson = mt.get_collection().find_one({'name': 'None'}) self.assertEquals(mt_bson['name'], 'None') self.assertEquals(mt_bson['version'], None)
class TestMigrationTrackerManager(MigrationTest): def setUp(self): super(self.__class__, self).setUp() self.mtm = MigrationTrackerManager() def test___init__(self): self.assertEquals(self.mtm._collection, MigrationTracker.get_collection()) def test_create(self): mt = self.mtm.create('first_prime', 2) self.assertEquals(mt.name, 'first_prime') self.assertEquals(mt.version, 2) # Make sure the DB got to the correct state self.assertEquals(mt._collection.find({}).count(), 1) mt_bson = mt._collection.find_one({'name': 'first_prime'}) self.assertEquals(mt_bson['name'], 'first_prime') self.assertEquals(mt_bson['version'], 2) def test_get(self): self.mtm.create('only_even_prime', 2) mt = self.mtm.get('only_even_prime') self.assertEquals(mt.name, 'only_even_prime') self.assertEquals(mt.version, 2) # Now try to get one that doesn't exist try: self.mtm.get("doesn't exist") self.fail( "The get() should have raised DoesNotExist, but did not.") except DoesNotExist: # This is the expected behavior pass def test_get_or_create(self): # Insert one for getting self.mtm.create('smallest_perfect_number', 6) # Now get or create it with an incorrect version. The incorrect version should not be set mt = self.mtm.get_or_create('smallest_perfect_number', defaults={'version': 7}) self.assertEquals(mt.name, 'smallest_perfect_number') self.assertEquals(mt.version, 6) # not 7 mt_bson = mt._collection.find_one({'name': 'smallest_perfect_number'}) self.assertEquals(mt_bson['name'], 'smallest_perfect_number') self.assertEquals(mt_bson['version'], 6) # This will cause a create self.assertEquals(mt._collection.find({'name': 'x^y=y^x'}).count(), 0) # 16 is the only number for which x^y = y^x, where x != y mt = self.mtm.get_or_create('x^y=y^x', defaults={'version': 16}) self.assertEquals(mt._collection.find({'name': 'x^y=y^x'}).count(), 1) self.assertEquals(mt.name, 'x^y=y^x') self.assertEquals(mt.version, 16) mt_bson = mt._collection.find_one({'name': 'x^y=y^x'}) self.assertEquals(mt_bson['name'], 'x^y=y^x') self.assertEquals(mt_bson['version'], 16) # Let's use get_or_create without defaults mt = self.mtm.get_or_create('None') self.assertEquals(mt._collection.find({'name': 'None'}).count(), 1) self.assertEquals(mt.name, 'None') self.assertEquals(mt.version, None) mt_bson = mt._collection.find_one({'name': 'None'}) self.assertEquals(mt_bson['name'], 'None') self.assertEquals(mt_bson['version'], None)