from unittest import mock import pytest from aws_testing_utils import dynamodb_handler @mock.patch('boto3.resource') def test_table(mock_resource: mock.MagicMock) -> None: mock_resource.return_value.Table.return_value = mock.Mock() handler = dynamodb_handler.DynamoDBHandler() name = 'table_name' handler.table(name) mock_resource.return_value.Table.assert_called_with(name) @mock.patch('aws_testing_utils.dynamodb_handler.DynamoDBHandler.table') def test_get(mock_table: mock.MagicMock) -> None: expected_item = {'id': 'expected_item'} mock_table.return_value.get_item.return_value = {'Item': expected_item} handler = dynamodb_handler.DynamoDBHandler() table_name = 'table' key_name = 'key_name' key_value = 'key_value' assert handler.get(table_name, key_name, key_value) == expected_item @mock.patch('aws_testing_utils.dynamodb_handler.DynamoDBHandler.table') def test_get_key_error(mock_table: mock.MagicMock) -> None: mock_table.return_value.get_item.return_value = {} handler = dynamodb_handler.DynamoDBHandler() table_name = 'table' key_name = 'key_name' key_value = 'key_value' with pytest.raises(LookupError): handler.get(table_name, key_name, key_value) @mock.patch('aws_testing_utils.dynamodb_handler.DynamoDBHandler.table') def test_put(mock_table: mock.MagicMock) -> None: mock_table.return_value.put_item.return_value = mock.Mock() handler = dynamodb_handler.DynamoDBHandler() data = {'testField': 'testvalue'} table_name = 'table_name' handler.put(data, table_name) mock_table.assert_called_with(table_name) mock_table.return_value.put_item.assert_called_with(Item=data)