def METHOD_NAME(
    cfngin_context: MockCFNginContext,
    mock_docker_client: DockerClient,
    mocker: MockerFixture,
) -> None:
    """Test remove."""
    repo = "dkr.test.com/image"
    tags = ["latest", "oldest"]
    image = DockerImage(image=Image({"RepoTags": [f"{repo}:{tag}" for tag in tags]}))
    args = ImageRemoveArgs(force=True, image=image, tags=["latest", "oldest"])
    mocker.patch.object(ImageRemoveArgs, "parse_obj", return_value=args)
    mocker.patch.object(DockerHookData, "client", mock_docker_client)
    docker_hook_data = DockerHookData()
    docker_hook_data.image = image
    mock_from_cfngin_context = mocker.patch.object(
        DockerHookData, "from_cfngin_context", return_value=docker_hook_data
    )
    mock_update_context = mocker.patch.object(
        DockerHookData, "update_context", return_value=docker_hook_data
    )
    cfngin_context.hook_data["docker"] = docker_hook_data
    assert (
        remove(context=cfngin_context, force=args.force, image=image, tags=args.tags)
        == docker_hook_data
    )
    mock_from_cfngin_context.assert_called_once_with(cfngin_context)
    docker_hook_data.client.api.remove_image.assert_has_calls(  # type: ignore
        [
            call(force=True, image=f"{args.repo}:{tag}", noprune=False)
            for tag in args.tags
        ]
    )
    assert docker_hook_data.image is None
    mock_update_context.assert_called_once_with(cfngin_context)