from unittest.mock import MagicMock from unittest.mock import patch from ows_accounting.utils import dynamodb @patch('ows_accounting.utils.dynamodb.Key') @patch('ows_accounting.utils.dynamodb.Attr') def test_query_items(mock_attr, mock_key): """Test query_items. """ mock_key_obj = MagicMock() mock_key_obj.eq = lambda value: value mock_key.return_value = mock_key_obj mock_attr_obj = MagicMock() mock_attr_obj.eq = lambda value: value mock_attr.return_value = mock_attr_obj mock_table_obj = MagicMock() mock_table_obj.query = lambda **params: {'Items': params} resp = dynamodb.query_items( mock_table_obj, 'user_type_id', '18805L', file_type=235, s3_path=253) assert resp == { 'KeyConditionExpression': '18805L', 'FilterExpression': 233, 'ScanIndexForward': False, 'ConsistentRead': True } @patch('ows_accounting.utils.dynamodb.Key') @patch('ows_accounting.utils.dynamodb.Attr') def test_query_items_sort_key(mock_attr, mock_key): """Test query_items.""" mock_key_obj = MagicMock() mock_key_obj.primary_keys = [] mock_key_obj.eq = lambda value: [ mock_key_obj.primary_keys.append(value), mock_key_obj][1] mock_key_obj.__and__ = lambda obj1, obj2=None: ' '.join(obj1.primary_keys) mock_key.return_value = mock_key_obj mock_attr_obj = MagicMock() mock_attr_obj.eq = lambda value: value mock_attr.return_value = mock_attr_obj mock_table_obj = MagicMock() mock_table_obj.query = lambda **params: {'Items': params} resp = dynamodb.query_items( mock_table_obj, 'user_type_id', '18805L', 'file_name', 'test.txt', file_type=235, s3_path=253) assert resp == { 'KeyConditionExpression': '18805L test.txt', 'FilterExpression': 233, 'ScanIndexForward': False, 'ConsistentRead': True }