def test_add_column_with_index(self): """ Test adding a column with an index to a MigrationManager. """ manager = MigrationManager() manager.add_column( table_class_name="Manager", tablename="manager", column_name="email", column_class_name="Varchar", params={ "length": 100, "default": "", "null": True, "primary": False, "key": False, "unique": True, "index": True, }, ) index_name = Manager._get_index_name(["email"]) asyncio.run(manager.run()) self.assertTrue(index_name in Manager.indexes().run_sync()) # Reverse asyncio.run(manager.run_backwards()) self.assertTrue(index_name not in Manager.indexes().run_sync())
def test_get_related(self): """ Make sure you can get a related object from another object instance. """ manager = Manager(name="Guido") manager.save().run_sync() band = Band(name="Pythonistas", manager=manager.id, popularity=100) band.save().run_sync() _manager = band.get_related(Band.manager).run_sync() self.assertTrue(_manager.name == "Guido")
def test_delete(self): manager = Manager(name="Maz") manager.save().run_sync() manager.remove().run_sync() # how can I implement 'flat=True' # Band.select(Band.name).output(as_list=True).run_sync() # Manager.select(Manager.name).run_sync()
def test_alter_column_add_index(self): """ Test altering a column to add an index with MigrationManager. """ manager = MigrationManager() manager.alter_column( table_class_name="Manager", tablename="manager", column_name="name", params={"index": True}, old_params={"index": False}, ) asyncio.run(manager.run()) self.assertTrue( Manager._get_index_name(["name"]) in Manager.indexes().run_sync()) asyncio.run(manager.run_backwards()) self.assertTrue( Manager._get_index_name(["name"]) not in Manager.indexes().run_sync())
def test_foreign_key_self(self): manager = Manager(name="Mr Manager") manager.save().run_sync() worker = Manager(name="Mr Worker", manager=manager.id) worker.save().run_sync() response = ( Manager.select(Manager.name, Manager.manager.name) .order_by(Manager.name) .run_sync() ) self.assertEqual( response, [ {"name": "Mr Manager", "manager.name": None}, {"name": "Mr Worker", "manager.name": "Mr Manager"}, ], )
def test_save_new(self): """ Make sure that saving a new instance works. """ manager = Manager(name="Maz") query = manager.save() print(query) self.assertTrue("INSERT" in query.__str__()) query.run_sync() names = [i["name"] for i in Manager.select(Manager.name).run_sync()] self.assertTrue("Maz" in names) manager.name = "Maz2" query = manager.save() print(query) self.assertTrue("UPDATE" in query.__str__()) query.run_sync() names = [i["name"] for i in Manager.select(Manager.name).run_sync()] self.assertTrue("Maz2" in names) self.assertTrue("Maz" not in names)
def tearDown(self): Manager.alter().drop_table().run_sync()
def setUp(self): Manager.create_table().run_sync()