import os
from unittest.mock import patch

from src.functions.timeliness_checker.app import lambda_handler


@patch("src.functions.timeliness_checker.app.emit_timeliness_metric")
@patch.dict(os.environ, {
    "VENDOR_A_EXPECTED_TIMEFRAME_HOURS": "1",
    "VENDOR_B_EXPECTED_TIMEFRAME_HOURS": "24"

})
def test_timeliness_checker(mock_emit_timeliness_metric, mock_cloudwatch_client):
    expected_vendor_a_timeframe_hours = 1
    expected_vendor_a_timeliness_metric = 0
    expected_vendor_b_timeframe_hours = 24
    expected_vendor_b_timeliness_metric = 0

    lambda_handler({}, "")
    for call in mock_emit_timeliness_metric.call_args_list:
        args, kwarg = call
        if args[0] == "vendor_a":
            assert args[1] == expected_vendor_a_timeframe_hours
            assert args[2] == expected_vendor_a_timeliness_metric
        elif args[0] == "vendor_b":
            assert args[1] == expected_vendor_b_timeframe_hours
            assert args[2] == expected_vendor_b_timeliness_metric
    assert mock_emit_timeliness_metric.call_count == 2