class_docstr: Base class for AWS Provider links tests.
class_docstr_tok: ["Base","class","for","AWS","Provider","links","tests","."]
docstr: Test: Operator links should return empty string if no XCom value.
docstr_tok: ["Test",":","Operator","links","should","return","empty","string","if","no","XCom","value","."]
code: def test_empty_xcom(self):
      """Test: Operator links should return empty string if no XCom value."""
      ti = self.create_op_and_ti(
          self.link_class,
          dag_id="test_empty_xcom",
          task_id=self.task_id,
      ).task_instance
  
      serialized_dag = self.dag_maker.get_serialized_data()
      deserialized_dag = SerializedDAG.from_dict(serialized_dag)
      deserialized_task = deserialized_dag.task_dict[self.task_id]
  
      assert (
          ti.task.get_extra_links(ti, self.link_class.name) == ""
      ), "Operator link should only be added if job id is available in XCom"
  
      assert (
          deserialized_task.get_extra_links(ti, self.link_class.name)
          == ""
      ), "Operator link should be empty for deserialized task with no XCom push"
  
imports: from __future__ import annotations
  from abc import abstractmethod
  from typing import TYPE_CHECKING, NamedTuple
  from unittest import mock
  import pytest
  from airflow.models.xcom import XCom
  from airflow.providers.amazon.aws.links.base_aws import BaseAwsLink
  from airflow.serialization.serialized_objects import SerializedDAG
  from tests.test_utils.mock_operators import MockOperator
label_desc: Use image node_id 7 for calling the BaseAwsLinksTestCase obj's underlying member method code with example usage: obj.test_empty_xcom() without return types