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 = ""
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()