def METHOD_NAME():
    from sasctl.core import RestObj, _build_crud_funcs
    _, _, update_item, _ = _build_crud_funcs("/widget")
    target = RestObj({"name": "Test Widget", "id": 12345})
    with mock.patch("sasctl.core.request") as request:
        request.return_value = target
        # ETag should be required
        with pytest.raises(ValueError):
            resp = update_item(target)
        target._headers = {"etag": "abcd"}
        resp = update_item(target)
    assert request.call_count == 1
    assert ("put", "/widget/12345") == request.call_args[0]
    assert target == resp