import unittest
import logging

from py_jftech import autowired, to_str, parse_date
from api import RoboReportor, RoboExportor

logger = logging.getLogger(__name__)


class ReportTest(unittest.TestCase):

    @autowired(names={'reportor': 'benckmark-report'})
    def test_benchmark_report(self, reportor: RoboReportor = None):
        result = reportor.load_report(max_date=parse_date('2022-11-01'))
        logger.info(to_str(result))

    @autowired(names={'reportor': 'indicators-report'})
    def test_indicator_report(self, reportor: RoboReportor = None):
        result = reportor.load_report(max_date=parse_date('2022-11-01'))
        logger.info(to_str(result))

    @autowired(names={'reportor': 'fixed-range-report'})
    def test_fixed_report(self, reportor: RoboReportor = None):
        result = reportor.load_report(max_date=parse_date('2022-11-01'))
        logger.info(to_str(result))

    @autowired(names={'reportor': 'relative-range-report'})
    def test_relative_report(self, reportor: RoboReportor = None):
        result = reportor.load_report(max_date=parse_date('2022-11-01'))
        logger.info(to_str(result))

    @autowired(names={'reportor': 'backtest-export'})
    def test_backtest_export(self, exportor: RoboExportor = None):
        path = exportor.export(max_date=parse_date('2022-11-01'))
        logger.info(path)


if __name__ == '__main__':
    unittest.main()