import unittest from unittest.mock import Mock import pytest from slz_appreciationengine_availability_check.handler import handler def check_context_side_effect1(*args, **kwargs): return [('AD', 55), ('AE', 56), ('AF', 57)] def check_context_side_effect2(*args, **kwargs): return [('AF', 57)] def check_context_side_effect3(*args, **kwargs): return [] @pytest.mark.parametrize( 'check_context_side_effect,expected_filtered_contexts', [ (check_context_side_effect1, ['AF', 'AE', 'AD']), (check_context_side_effect2, ['AF']), (check_context_side_effect3, []), ] ) @unittest.mock.patch('boto3.client') @unittest.mock.patch('slz_appreciationengine_availability_check.handler.Connection') @unittest.mock.patch( 'slz_appreciationengine_scrapper.dsp.appreciationengine.clients.PaginateClient.configure' ) @unittest.mock.patch( 'slz_appreciationengine_scrapper.dsp.appreciationengine.clients.PaginateClient.check_contexts_availability' ) @unittest.mock.patch( 'slz_appreciationengine_scrapper.content_status_service.ContentStatusService.start_processing' ) def test_context_available_and_check_sorting( start_processing_mock, check_contexts_availability, configure_mock, repository_factory_mock, boto3_client_mock, check_context_side_effect, expected_filtered_contexts, config, payload, ): lambda_context = Mock() logger = Mock() check_contexts_availability.side_effect = check_context_side_effect start_processing_mock.return_value = True actual = handler(lambda_context, logger, config, payload) expected = { 'meta': { 'status': "OK" }, 'FilteredContexts': expected_filtered_contexts, 'isAnyContext': bool(expected_filtered_contexts), } assert actual == expected