# Path: tests/helpers.py
# def eq_(a, b):
# def skip_test(reason='No reason given to skip_test'):
# def mark_slow(f):
#     def __str__(self):
# def mssqlconn(conn_properties=None):
# def pymssqlconn(**kwargs):
# def get_app_lock():
# def release_app_lock():
# def drop_table(conn, tname):
# def clear_table(conn, tname):
#     def table_sql(cls):
#     def newconn(cls):
#     def setup_class(cls):
#     def setUp(self):
#     def row_count(self):
#     def execute(self, sql, params=None):
#     def __init__(self, conn, tname, *cols):
#     def table_sql(self):
#     def drop(self):
#     def execute(self, sql):
#     def create(self):
#     def clear(self):
#     def count(self):
#     def execute(self, sql):
#     def executemany(self, sql, params_seq):
#     def setup_class(cls):
#     def setup_method(self, method):
#     def test_description_not_used(self):
#     def test_description_after_insert(self):
#     def test_description_after_select(self):
#     def test_sticky_description(self):
#     def test_fetchone(self):
#     def test_insert_rowcount(self):
#     def test_delete_rowcount(self):
#     def test_update_rowcount(self):
#     def test_select_rowcount(self):
#     def test_fetchone_rowcount(self):
#     def test_fetchmany_rowcount(self):
#     def test_as_dict(self):
#     def test_as_dict_no_column_name(self):
#     def test_as_dict_no_column_name_2(self):
#     def test_fetchmany(self):
#     def test_execute_many(self):
# def clear_db():
#     def __init__(self, name, args, body, mssql=None):
#     def create(self, mssql=None):
#     def execute(self, mssql=None, args=()):
#     def drop(self, mssql=None):
#     def __enter__(self):
#     def __exit__(self, type, value, tb):
# def get_sql_server_version(mssql_connection):
# class Config(object):
# class PyTableBase(object):
# class TableManager(object):
# class DBAPIBase(object):
# class CursorBase(DBAPIBase):
# class StoredProc(object):


import unittest
import pytest
import pymssql as pym
from .helpers import (pymssqlconn, PyTableBase, CursorBase, eq_, config,
                      skip_test, mssql_server_required)
            else:
                pytest.fail()
        else:
            cur.execute("DROP DATABASE {0}".format(self.test_db_name))

    def test_db_creation_without_autocommit(self):
        """
        Try creating and dropping database without autocommit, expecting it to fail
        """
        cur = pymssqlconn(autocommit=False).cursor()
        with pytest.raises(pym.OperationalError) as excinfo:
            cur.execute("CREATE DATABASE autocommit_test_database")
        expected_msg = "CREATE DATABASE statement not allowed within multi-statement transaction"
        assert expected_msg in excinfo.exconly()

    def test_autocommit_flipping_tf(self):
        insert_value = 'true-false'
        conn = pymssqlconn(autocommit=True)
        conn.autocommit(False)
        cur = conn.cursor()
        cur.execute(self.insert_query, insert_value)
        conn.commit()
        cur.execute(self.select_query, insert_value)
        row = cur.fetchone()
        cur.close()
        conn.close()
        assert len(row) > 0

    def test_autocommit_flipping_ft(self):
        insert_value = 'false-true'

# Path: tests/helpers.py
# def eq_(a, b):
# def skip_test(reason='No reason given to skip_test'):
# def mark_slow(f):
#     def __str__(self):
# def mssqlconn(conn_properties=None):
# def pymssqlconn(**kwargs):
# def get_app_lock():
# def release_app_lock():
# def drop_table(conn, tname):
# def clear_table(conn, tname):
#     def table_sql(cls):
#     def newconn(cls):
#     def setup_class(cls):
#     def setUp(self):
#     def row_count(self):
#     def execute(self, sql, params=None):
#     def __init__(self, conn, tname, *cols):
#     def table_sql(self):
#     def drop(self):
#     def execute(self, sql):
#     def create(self):
#     def clear(self):
#     def count(self):
#     def execute(self, sql):
#     def executemany(self, sql, params_seq):
#     def setup_class(cls):
#     def setup_method(self, method):
#     def test_description_not_used(self):
#     def test_description_after_insert(self):
#     def test_description_after_select(self):
#     def test_sticky_description(self):
#     def test_fetchone(self):
#     def test_insert_rowcount(self):
#     def test_delete_rowcount(self):
#     def test_update_rowcount(self):
#     def test_select_rowcount(self):
#     def test_fetchone_rowcount(self):
#     def test_fetchmany_rowcount(self):
#     def test_as_dict(self):
#     def test_as_dict_no_column_name(self):
#     def test_as_dict_no_column_name_2(self):
#     def test_fetchmany(self):
#     def test_execute_many(self):
# def clear_db():
#     def __init__(self, name, args, body, mssql=None):
#     def create(self, mssql=None):
#     def execute(self, mssql=None, args=()):
#     def drop(self, mssql=None):
#     def __enter__(self):
#     def __exit__(self, type, value, tb):
# def get_sql_server_version(mssql_connection):
# class Config(object):
# class PyTableBase(object):
# class TableManager(object):
# class DBAPIBase(object):
# class CursorBase(DBAPIBase):
# class StoredProc(object):


# Path: tests/test_pymssql.py
import unittest
import pytest
import pymssql as pym
from .helpers import (pymssqlconn, PyTableBase, CursorBase, eq_, config,
                      skip_test, mssql_server_required)

            else:
                pytest.fail()
        else:
            cur.execute("DROP DATABASE {0}".format(self.test_db_name))

    def test_db_creation_without_autocommit(self):
        """
        Try creating and dropping database without autocommit, expecting it to fail
        """
        cur = pymssqlconn(autocommit=False).cursor()
        with pytest.raises(pym.OperationalError) as excinfo:
            cur.execute("CREATE DATABASE autocommit_test_database")
        expected_msg = "CREATE DATABASE statement not allowed within multi-statement transaction"
        assert expected_msg in excinfo.exconly()

    def test_autocommit_flipping_tf(self):
        insert_value = 'true-false'
        conn = pymssqlconn(autocommit=True)
        conn.autocommit(False)
        cur = conn.cursor()
        cur.execute(self.insert_query, insert_value)
        conn.commit()
        cur.execute(self.select_query, insert_value)
        row = cur.fetchone()
        cur.close()
        conn.close()
        assert len(row) > 0

    def test_autocommit_flipping_ft(self):
        insert_value = 'false-true'

        conn = pymssqlconn(autocommit=False)