0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 03:31:50 +02:00

test(cli/generate_cli): test added

This commit is contained in:
wyzula-jan
2024-02-29 14:58:58 +01:00
parent d89f596a5d
commit 7e0058a611

View File

@ -0,0 +1,79 @@
import pytest
from bec_widgets.cli.generate_cli import ClientGenerator
from textwrap import dedent
import black
# Mock classes to test the generator
class MockBECWaveform1D:
USER_ACCESS = ["set_frequency", "set_amplitude"]
def set_frequency(self, frequency: float) -> list:
"""Set the frequency of the waveform."""
return [frequency]
def set_amplitude(self, amplitude: float) -> tuple[float, float]:
"""Set the amplitude of the waveform."""
return amplitude, amplitude
class MockBECFigure:
USER_ACCESS = ["add_plot", "remove_plot"]
def add_plot(self, plot_id: str):
"""Add a plot to the figure."""
pass
def remove_plot(self, plot_id: str):
"""Remove a plot from the figure."""
pass
def test_client_generator_with_black_formatting():
generator = ClientGenerator()
generator.generate_client([MockBECWaveform1D, MockBECFigure])
# Format the expected output with black to ensure it matches the generator output
expected_output = dedent(
'''\
# This file was automatically generated by generate_cli.py
from bec_widgets.cli.client_utils import rpc_call, RPCBase, BECFigureClientMixin
from typing import Literal, Optional, overload
class MockBECWaveform1D(RPCBase):
@rpc_call
def set_frequency(self, frequency: float) -> list:
"""
Set the frequency of the waveform.
"""
@rpc_call
def set_amplitude(self, amplitude: float) -> tuple[float, float]:
"""
Set the amplitude of the waveform.
"""
class MockBECFigure(RPCBase):
@rpc_call
def add_plot(self, plot_id: str):
"""
Add a plot to the figure.
"""
@rpc_call
def remove_plot(self, plot_id: str):
"""
Remove a plot from the figure.
"""
'''
)
expected_output_formatted = black.format_str(
expected_output, mode=black.FileMode(line_length=100)
).lstrip()
generated_output_formatted = black.format_str(
generator.header + "\n" + generator.content, mode=black.FileMode(line_length=100)
)
assert expected_output_formatted == generated_output_formatted