code: def test_send_values_on_join(self):
      # given
      channel_value = ChannelValue(x=1, y="value", ts=self._TS)
      # and
      channels_values_sender = ChannelsValuesSender(
          experiment=self._EXPERIMENT
      )
  
      # when
      channels_values_sender.send(
          self._TEXT_CHANNEL.name,
          self._TEXT_CHANNEL.channelType,
          channel_value,
      )
      # and
      channels_values_sender.join()
  
      # then
      self._EXPERIMENT._send_channels_values.assert_called_with(
          [
              ChannelIdWithValues(
                  channel_id=self._TEXT_CHANNEL.id,
                  channel_name=self._TEXT_CHANNEL.name,
                  channel_type=self._TEXT_CHANNEL.channelType,
                  channel_namespace=ChannelNamespace.USER,
                  channel_values=[channel_value],
              )
          ]
      )
  
file_path: neptune-client/tests/unit/neptune/legacy/internal/channels/test_channels_values_sender.py
imports: from __future__ import unicode_literals
  import threading
  import time
  import unittest
  import mock
  from neptune.legacy.internal.channels.channels import ChannelIdWithValues, ChannelNamespace, ChannelType, ChannelValue
  from neptune.legacy.internal.channels.channels_values_sender import ChannelsValuesSender, ChannelsValuesSendingThread
  from tests.unit.neptune.legacy.experiments_object_factory import a_channel
label_desc: Use image node_id 3 for calling the TestChannelsValuesSender obj's underlying member method code with example usage: obj.test_send_values_on_join() without return types