code: def test_send_text(self, ChannelsValuesSender):
      # given
      channels_values_sender = ChannelsValuesSender.return_value
      experiment = Experiment(
          mock.MagicMock(),
          a_project(),
          an_experiment_id(),
          a_uuid_string(),
      )
      channel_value = ChannelValue(
          x=random.randint(0, 100),
          y=dict(text_value=a_string()),
          ts=time.time(),
      )
  
      # when
      experiment.send_text(
          "stdout",
          channel_value.x,
          channel_value.y["text_value"],
          channel_value.ts,
      )
  
      # then
      channels_values_sender.send.assert_called_with(
          "stdout", ChannelType.TEXT.value, channel_value
      )
  
imports: import base64
  import random
  import time
  import unittest
  from io import StringIO
  import mock
  import pandas
  from mock import MagicMock, call
  from munch import Munch
  from pandas.testing import assert_frame_equal
  from neptune.legacy.experiments import Experiment
  from neptune.legacy.internal.channels.channels import ChannelType, ChannelValue
  from tests.unit.neptune.legacy.random_utils import a_project, a_string, a_uuid_string, an_experiment_id, sort_df_by_columns
label_desc: Use image node_id 2 for calling the TestExperiment obj's underlying member method code with example usage: obj.test_send_text(ChannelsValuesSender) without return types