code: def test_strappend_dollar(client):
      client.json().set(
          "doc1",
          "$",
          {"a": "foo", "nested1": {"a": "hello"}, "nested2": {"a": 31}},
      )
      # Test multi
      client.json().strappend("doc1", "bar", "$..a") == [6, 8, None]
  
      # res = [{"a": "foobar", "nested1": {"a": "hellobar"}, "nested2": {"a": 31}}]
      # assert_resp_response(client, client.json().get("doc1", "$"), res, [res])
  
      # Test single
      client.json().strappend("doc1", "baz", "$.nested1.a") == [11]
  
      # res = [{"a": "foobar", "nested1": {"a": "hellobarbaz"}, "nested2": {"a": 31}}]
      # assert_resp_response(client, client.json().get("doc1", "$"), res, [res])
  
      # Test missing key
      with pytest.raises(exceptions.ResponseError):
          client.json().strappend("non_existing_doc", "$..a", "err")
  
      # Test multi
      client.json().strappend("doc1", "bar", ".*.a") == 8
      # res = [{"a": "foo", "nested1": {"a": "hellobar"}, "nested2": {"a": 31}}]
      # assert_resp_response(client, client.json().get("doc1", "$"), res, [res])
  
      # Test missing path
      with pytest.raises(exceptions.ResponseError):
          client.json().strappend("doc1", "piu")
  
imports: import pytest
  import redis
  from redis import Redis, exceptions
  from redis.commands.json.decoders import decode_list, unstring
  from redis.commands.json.path import Path
  from .conftest import _get_client, assert_resp_response, skip_ifmodversion_lt
label_desc: Use image node_id 32 for calling a global function with example usage: test_strappend_dollar(client) without return types