# Copyright(c) Microsoft Corporation.
# Licensed under the MIT license.

import sqlmlutils


def foo():
    return "bar"


sqlpython = sqlmlutils.SQLPythonExecutor(
    sqlmlutils.ConnectionInfo(server="localhost", database="master"))
result = sqlpython.execute_function_in_sql(foo)
assert result == "bar"
# Copyright(c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT license.

import pytest
import sqlmlutils
from contextlib import redirect_stdout
from subprocess import Popen, PIPE, STDOUT
from pandas import DataFrame
import io
import os

from conftest import connection

current_dir = os.path.dirname(__file__)
script_dir = os.path.join(current_dir, "scripts")
sqlpy = sqlmlutils.SQLPythonExecutor(connection)


###################
# No output tests #
###################

def test_no_output():
    def my_func():
        print("blah blah blah")

    name = "test_no_output"
    sqlpy.drop_sproc(name)

    sqlpy.create_sproc_from_function(name, my_func)
    assert sqlpy.check_sproc(name)
    import matplotlib.pyplot as plt
    import io

    title = x_col + " vs. " + y_col

    plt.scatter(input_df[x_col], input_df[y_col])
    plt.xlabel(x_col)
    plt.ylabel(y_col)
    plt.title(title)

    # Save scatter plot image as a png
    buf = io.BytesIO()
    plt.savefig(buf, format="png")
    buf.seek(0)

    # Returns the bytes of the png to the client
    return buf


sqlpy = sqlmlutils.SQLPythonExecutor(
    sqlmlutils.ConnectionInfo(server="localhost", database="AirlineTestDB"))

sql_query = "select top 100 * from airline5000"
plot_data = sqlpy.execute_function_in_sql(func=scatter_plot,
                                          input_data_query=sql_query,
                                          x_col="ArrDelay",
                                          y_col="CRSDepTime")
im = Image.open(plot_data)
im.show()
#im.save("scatter_test.png")