"""
just checks that the worker methods call the right functions
and some data ends up in the right place ... otherwise not very detailed
"""
import os

from inventory_provider.tasks import worker
from inventory_provider.tasks import common
from inventory_provider.tasks.common import _get_redis


def backend_db():
    return _get_redis({
        'redis': {
            'hostname': None,
            'port': None
        },
        'redis-databases': [0, 7]
    }).db


def test_InventoryTask_obj(data_config_filename):
    os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME'] = data_config_filename
    task = worker.InventoryTask()
    assert task.config


def test_next_redis(data_config, mocked_redis):
    """
    not a very meaningful test ... basically only for sanity & coverage
    :param data_config:
    :param mocked_redis:
    :return:
    """
    common.set_latch(data_config, 10, 20, 100)
    r = common.get_next_redis(data_config)
    assert r

    # there's only one ...
    latch = common.get_latch(r)
    assert latch['current'] == 10
    assert latch['next'] == 20
    assert latch['timestamp'] == 100


def test_next_redis_with_none(data_config, mocked_redis):
    """
    not a very meaningful test ... basically only for sanity & coverage
    :param data_config:
    :param mocked_redis:
    :return:
    """
    r = common._get_redis(data_config)
    assert r

    del r.db['db:latch']  # cf. conftest:MockedRedis
    r = common.get_next_redis(data_config)
    assert r