43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
import boto3
|
|
import pytest
|
|
|
|
from . import dynamodb_aws_verified
|
|
|
|
|
|
@pytest.mark.aws_verified
|
|
@dynamodb_aws_verified()
|
|
def test_update_different_map_elements_in_single_request(table_name=None):
|
|
# https://github.com/getmoto/moto/issues/5552
|
|
dynamodb = boto3.resource("dynamodb", region_name="us-east-1")
|
|
|
|
record = {
|
|
"pk": "example_id",
|
|
"d": {"hello": "h", "world": "w"},
|
|
}
|
|
table = dynamodb.Table(table_name)
|
|
table.put_item(Item=record)
|
|
updated = table.update_item(
|
|
Key={"pk": "example_id"},
|
|
UpdateExpression="set d.hello = :h, d.world = :w",
|
|
ExpressionAttributeValues={":h": "H", ":w": "W"},
|
|
ReturnValues="ALL_NEW",
|
|
)
|
|
assert updated["Attributes"] == {
|
|
"pk": "example_id",
|
|
"d": {"hello": "H", "world": "W"},
|
|
}
|
|
|
|
# Use UpdateExpression that contains a new-line
|
|
# https://github.com/getmoto/moto/issues/7127
|
|
table.update_item(
|
|
Key={"pk": "example_id"},
|
|
UpdateExpression=(
|
|
"""
|
|
ADD
|
|
MyTotalCount :MyCount
|
|
"""
|
|
),
|
|
ExpressionAttributeValues={":MyCount": 5},
|
|
)
|
|
assert table.get_item(Key={"pk": "example_id"})["Item"]["MyTotalCount"] == 5
|