import pytest

from ansibleplaybookgrapher.grapher import Grapher
from tests import INVENTORY_FILE


@pytest.fixture(name='data_loader')
def fixture_data_loader():
    """
    Return an Ansible  DataLoader
    :return:
    """
    from ansible.parsing.dataloader import DataLoader
    return DataLoader()


@pytest.fixture(name='inventory_manager')
def fixture_inventory_manager(data_loader):
    """
    Return an Ansible  InventoryManager
    :return:
    """
    from ansible.inventory.manager import InventoryManager
    return InventoryManager(loader=data_loader, sources=INVENTORY_FILE)


@pytest.fixture(name='variable_manager')
def fixture_variable_manager(data_loader, inventory_manager):
    """
    Return an Ansible  VariableManager
    :return:
    """
    from ansible.vars.manager import VariableManager
    return VariableManager(loader=data_loader, inventory=inventory_manager)


@pytest.fixture(name='grapher')
def fixture_simple_grapher(data_loader, inventory_manager, variable_manager, request):
    return Grapher(data_loader=data_loader, inventory_manager=inventory_manager, variable_manager=variable_manager,
                   playbook_filename=request.param)