#!python3
import os
import unittest
from inkycal.modules import Weather as Module
from helper_functions import *

environment = get_environment()

# Set to True to preview images. Only works on Raspberry Pi OS with Desktop
use_preview = False

secret_key = os.environ["OPENWEATHERMAP_API_KEY"] or ""
location = 'Stuttgart, DE'

tests = [
    {
        "position": 1,
        "name": "Weather",
        "config": {
            "size": [500, 100],
            "api_key": secret_key,
            "location": location,
            "round_temperature": True,
            "round_windspeed": True,
            "forecast_interval": "daily",
            "units": "metric",
            "hour_format": "12",
            "use_beaufort": True,
            "padding_x": 10,
            "padding_y": 10,
            "fontsize": 12,
            "language": "en"
        }
    },
    {
        "position": 1,
        "name": "Weather",
        "config": {
            "size": [500, 150],
            "api_key": secret_key,
            "location": "2643123",
            "round_temperature": True,
            "round_windspeed": True,
            "forecast_interval": "daily",
            "units": "metric",
            "hour_format": "12",
            "use_beaufort": True,
            "padding_x": 10,
            "padding_y": 10,
            "fontsize": 12,
            "language": "en"
        }
    },
    {
        "position": 1,
        "name": "Weather",
        "config": {
            "size": [500, 200],
            "api_key": secret_key,
            "location": location,
            "round_temperature": False,
            "round_windspeed": True,
            "forecast_interval": "daily",
            "units": "metric",
            "hour_format": "12",
            "use_beaufort": True,
            "padding_x": 10,
            "padding_y": 10,
            "fontsize": 12,
            "language": "en"
        }
    },
    {
        "position": 1,
        "name": "Weather",
        "config": {
            "size": [500, 100],
            "api_key": secret_key,
            "location": location,
            "round_temperature": True,
            "round_windspeed": False,
            "forecast_interval": "daily",
            "units": "metric",
            "hour_format": "12",
            "use_beaufort": True,
            "padding_x": 10,
            "padding_y": 10,
            "fontsize": 12,
            "language": "en"
        }
    },
    {
        "position": 1,
        "name": "Weather",
        "config": {
            "size": [500, 150],
            "api_key": secret_key,
            "location": location,
            "round_temperature": True,
            "round_windspeed": True,
            "forecast_interval": "hourly",
            "units": "metric",
            "hour_format": "12",
            "use_beaufort": True,
            "padding_x": 10,
            "padding_y": 10,
            "fontsize": 12,
            "language": "en"
        }
    },
    {
        "position": 1,
        "name": "Weather",
        "config": {
            "size": [500, 150],
            "api_key": secret_key,
            "location": location,
            "round_temperature": True,
            "round_windspeed": True,
            "forecast_interval": "daily",
            "units": "imperial",
            "hour_format": "12",
            "use_beaufort": True,
            "padding_x": 10,
            "padding_y": 10,
            "fontsize": 12,
            "language": "en"
        }
    },
    {
        "position": 1,
        "name": "Weather",
        "config": {
            "size": [500, 100],
            "api_key": secret_key,
            "location": location,
            "round_temperature": True,
            "round_windspeed": True,
            "forecast_interval": "daily",
            "units": "metric",
            "hour_format": "24",
            "use_beaufort": True,
            "padding_x": 10,
            "padding_y": 10,
            "fontsize": 12,
            "language": "en"
        }
    },
    {
        "position": 1,
        "name": "Weather",
        "config": {
            "size": [500, 100],
            "api_key": secret_key,
            "location": location,
            "round_temperature": True,
            "round_windspeed": True,
            "forecast_interval": "daily",
            "units": "metric",
            "hour_format": "12",
            "use_beaufort": False,
            "padding_x": 10,
            "padding_y": 10,
            "fontsize": 12,
            "language": "en"
        }
    },
]


class module_test(unittest.TestCase):
    def test_get_config(self):
        print('getting data for web-ui...', end="")
        Module.get_config()
        print('OK')

    def test_generate_image(self):
        if secret_key:
            for test in tests:
                print(f'test {tests.index(test) + 1} generating image..')
                module = Module(test)
                im_black, im_colour = module.generate_image()
                print('OK')
                if use_preview == True and environment == 'Raspberry':
                    preview(merge(im_black, im_colour))
        else:
            print('No key given, omitted testing')


if __name__ == '__main__':
    logger = logging.getLogger()
    logger.level = logging.DEBUG
    logger.addHandler(logging.StreamHandler(sys.stdout))

    unittest.main()