# Path: grafana_dashboards/cli.py
# def _initialize_exporters(exporter_names, exporter_types, config):
# def _process_paths(paths):
# def main():
# 
# Path: grafana_dashboards/config.py
# class Config(object):
# 
#     def __init__(self, config=None):
#         super(Config, self).__init__()
#         if not os.path.exists(config):
#             logger.debug("Config file '%s' does not exist", config)
#             self._config = {}
#         else:
#             with open(config) as fp:
#                 self._config = yaml.load(fp, Loader=yaml.FullLoader)
# 
#     def get_config(self, section):
#         return self._config.setdefault(section, {})


import os
from mock import patch
from grafana_dashboards import cli
from grafana_dashboards.config import Config


__author__ = 'Jakub Plichta <jakub.plichta@gmail.com>'


class DummyExporter(object):

    def __init__(self, prop, **kwargs):
        super(DummyExporter, self).__init__()
        self.prop = prop
        self.kwargs = kwargs


def test_initialize_exporters():
    config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'config.yaml')
    config = Config(config_file)
    # noinspection PyProtectedMember
    exporters = cli._initialize_exporters('dummy', [DummyExporter], config)

    assert exporters is not None
    assert len(exporters) == 1
    assert exporters[0].prop == 'value'
    assert exporters[0].kwargs == {'other': True}


# noinspection PyUnusedLocal
@patch('os.walk', return_value=[('/path', ['dir1', 'dir2'], ['file1', 'file2'])])
@patch('os.path.isdir', return_value=True)
def test_process_paths(isdir, walk):
    # noinspection PyProtectedMember

# Path: grafana_dashboards/cli.py
# def _initialize_exporters(exporter_names, exporter_types, config):
# def _process_paths(paths):
# def main():
# 
# Path: grafana_dashboards/config.py
# class Config(object):
# 
#     def __init__(self, config=None):
#         super(Config, self).__init__()
#         if not os.path.exists(config):
#             logger.debug("Config file '%s' does not exist", config)
#             self._config = {}
#         else:
#             with open(config) as fp:
#                 self._config = yaml.load(fp, Loader=yaml.FullLoader)
# 
#     def get_config(self, section):
#         return self._config.setdefault(section, {})


# Path: tests/grafana_dashboards/test_cli.py
import os
from mock import patch
from grafana_dashboards import cli
from grafana_dashboards.config import Config



__author__ = 'Jakub Plichta <jakub.plichta@gmail.com>'


class DummyExporter(object):

    def __init__(self, prop, **kwargs):
        super(DummyExporter, self).__init__()
        self.prop = prop
        self.kwargs = kwargs


def test_initialize_exporters():
    config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'config.yaml')
    config = Config(config_file)
    # noinspection PyProtectedMember
    exporters = cli._initialize_exporters('dummy', [DummyExporter], config)

    assert exporters is not None
    assert len(exporters) == 1
    assert exporters[0].prop == 'value'
    assert exporters[0].kwargs == {'other': True}


# noinspection PyUnusedLocal
@patch('os.walk', return_value=[('/path', ['dir1', 'dir2'], ['file1', 'file2'])])
@patch('os.path.isdir', return_value=True)
def test_process_paths(isdir, walk):
    # noinspection PyProtectedMember

    paths = cli._process_paths(['/path'])