def METHOD_NAME(self, db_name, second_db_name, test_conn, **kwargs):
    """
    Create db two times, test conn, remove it two times
    """
    # In case of...
    ret = self.run_state("mysql_database.absent", name=db_name, **kwargs)
    ret = self.run_state("mysql_database.present", name=db_name, **kwargs)
    self.assertSaltTrueReturn(ret)
    self.assertInSaltComment("The database " + db_name + " has been created", ret)
    # 2nd run
    ret = self.run_state("mysql_database.present", name=second_db_name, **kwargs)
    self.assertSaltTrueReturn(ret)
    self.assertInSaltComment("Database " + db_name + " is already present", ret)
    if test_conn:
        # test root connection
        ret = self.run_function(
            "mysql.query", database=db_name, query="SELECT 1", **kwargs
        )
        if not isinstance(ret, dict) or "results" not in ret:
            raise AssertionError(
                (
                    "Unexpected result while testing connection on db '{}': {}"
                ).format(db_name, repr(ret))
            )
        self.assertEqual([["1"]], ret["results"])
    # Now removing databases
    kwargs.pop("character_set")
    kwargs.pop("collate")
    ret = self.run_state("mysql_database.absent", name=db_name, **kwargs)
    self.assertSaltTrueReturn(ret)
    self.assertInSaltComment("Database " + db_name + " has been removed", ret)
    # 2nd run
    ret = self.run_state("mysql_database.absent", name=second_db_name, **kwargs)
    self.assertSaltTrueReturn(ret)
    self.assertInSaltComment(
        "Database " + db_name + " is not present, so it cannot be removed", ret
    )
    self.assertSaltStateChangesEqual(ret, {})