code: def test_assign(self, get_operation_processor):
      value = FloatSeriesVal([17, 3.6], min=0, max=100, unit="%")
      expected = [
          LogFloats.ValueType(17, None, self._now()),
          LogFloats.ValueType(3.6, None, self._now()),
      ]
  
      processor = MagicMock()
      get_operation_processor.return_value = processor
      path, wait = (
          self._random_path(),
          self._random_wait(),
      )
      with self._exp() as exp:
          var = FloatSeries(exp, path)
          var.assign(value, wait=wait)
          processor.enqueue_operation.assert_has_calls(
              [
                  call(
                      ConfigFloatSeries(path, min=0, max=100, unit="%"),
                      wait=False,
                  ),
                  call(ClearFloatLog(path), wait=False),
                  call(LogFloats(path, expected), wait=wait),
              ]
          )
  
file_path: neptune-client/tests/unit/neptune/new/attributes/series/test_series.py
imports: from mock import MagicMock, call, patch
  from neptune.attributes.series.float_series import FloatSeries, FloatSeriesVal
  from neptune.attributes.series.string_series import StringSeries, StringSeriesVal
  from neptune.internal.operation import ClearFloatLog, ClearStringLog, ConfigFloatSeries, LogFloats
  from tests.unit.neptune.new.attributes.test_attribute_base import TestAttributeBase
label_desc: Use image node_id 1 for calling the TestSeries obj's underlying member method code with example usage: obj.test_assign(get_operation_processor) without return types