"""Lambda test module.""" from unittest.mock import patch import pytest from src import app as index from src.app import MultipleVendorsExist @pytest.fixture def input_data_fixture(): """Return input_data. Returns: dict: header dict """ return { 'parent_rep_owner_name': 'test_vendor_name', 'email': 'test@test.com', 'parent_rep_owner_key': 'test_identifier', } @pytest.fixture def input_data_fixture_incorrect(): """Return incorrect input_data. Returns: dict: header dict """ return { 'parent_rep_owner_name': 'test_vendor_name', 'email': 'test@test.com', } @patch('src.app.request.process') def test_check_vendor_already_exist_several_vendors( mock_request_process, input_data_fixture): """Test check_vendor_already_exist with return several vendors.""" get_response = {'items': [{'vendor_id': '1'}, {'vendor_id': '2'}]} mock_request_process.return_value.status_code = 200 mock_request_process.return_value.json.return_value = get_response with pytest.raises(MultipleVendorsExist): index.check_vendor_already_exist(input_data_fixture) @patch('src.app.request.process') def test_check_vendor_already_exist_get_one_vendor( mock_request_process, input_data_fixture): """Test check_vendor_already_exist - one vendor is already exist.""" get_response = {'items': [{'vendor_id': '1'}]} mock_request_process.return_value.status_code = 200 mock_request_process.return_value.json.return_value = get_response result = index.check_vendor_already_exist(input_data_fixture) assert result assert result == {'vendor_id': '1'} @patch('src.app.request.process') def test_check_vendor_already_exist_no_existing_vendors( mock_request_process, input_data_fixture): """Test check_vendor_already_exist - no existing vendors, return None.""" get_response = {'items': []} mock_request_process.return_value.status_code = 200 mock_request_process.return_value.json.return_value = get_response result = index.check_vendor_already_exist(input_data_fixture) assert result is None @patch('src.app.check_vendor_already_exist') @patch('src.app.request.process') def test_handler_existing_vendor( mock_request_process, mock_check_vendor_already_exist, input_data_fixture): """Test handler don't create vendor if it is already exist.""" mock_check_vendor_already_exist.return_value = {'vendor_id': '1'} result = index.handler(input_data_fixture, {}) mock_request_process.assert_not_called() assert result == {'vendor_id': '1'} @patch('src.app.check_vendor_already_exist') @patch('src.app.request.process') def test_handler( mock_request_process, mock_check_vendor_already_exist, input_data_fixture): """Test handler create vendor.""" new_vendor = { 'vendor_id': None } mock_check_vendor_already_exist.return_value = None mock_request_process.return_value.status_code = 200 mock_request_process.return_value.json.return_value = new_vendor result = index.handler(input_data_fixture, {}) mock_check_vendor_already_exist.assert_called_once_with(input_data_fixture) assert result == new_vendor