mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-03 12:34:37 +00:00
Compare commits
1 Commits
fix/api-bo
...
fix/utils-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa4d46fd87 |
@@ -120,26 +120,24 @@ class BotService:
|
|||||||
|
|
||||||
async def update_bot(self, bot_uuid: str, bot_data: dict) -> None:
|
async def update_bot(self, bot_uuid: str, bot_data: dict) -> None:
|
||||||
"""Update bot"""
|
"""Update bot"""
|
||||||
update_data = bot_data.copy()
|
if 'uuid' in bot_data:
|
||||||
|
del bot_data['uuid']
|
||||||
if 'uuid' in update_data:
|
|
||||||
del update_data['uuid']
|
|
||||||
|
|
||||||
# set use_pipeline_name
|
# set use_pipeline_name
|
||||||
if 'use_pipeline_uuid' in update_data:
|
if 'use_pipeline_uuid' in bot_data:
|
||||||
result = await self.ap.persistence_mgr.execute_async(
|
result = await self.ap.persistence_mgr.execute_async(
|
||||||
sqlalchemy.select(persistence_pipeline.LegacyPipeline).where(
|
sqlalchemy.select(persistence_pipeline.LegacyPipeline).where(
|
||||||
persistence_pipeline.LegacyPipeline.uuid == update_data['use_pipeline_uuid']
|
persistence_pipeline.LegacyPipeline.uuid == bot_data['use_pipeline_uuid']
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
pipeline = result.first()
|
pipeline = result.first()
|
||||||
if pipeline is not None:
|
if pipeline is not None:
|
||||||
update_data['use_pipeline_name'] = pipeline.name
|
bot_data['use_pipeline_name'] = pipeline.name
|
||||||
else:
|
else:
|
||||||
raise Exception('Pipeline not found')
|
raise Exception('Pipeline not found')
|
||||||
|
|
||||||
await self.ap.persistence_mgr.execute_async(
|
await self.ap.persistence_mgr.execute_async(
|
||||||
sqlalchemy.update(persistence_bot.Bot).values(update_data).where(persistence_bot.Bot.uuid == bot_uuid)
|
sqlalchemy.update(persistence_bot.Bot).values(bot_data).where(persistence_bot.Bot.uuid == bot_uuid)
|
||||||
)
|
)
|
||||||
await self.ap.platform_mgr.remove_bot(bot_uuid)
|
await self.ap.platform_mgr.remove_bot(bot_uuid)
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ def get_func_schema(function: typing.Callable) -> dict:
|
|||||||
|
|
||||||
parameters['properties'][param.name] = {
|
parameters['properties'][param.name] = {
|
||||||
'type': param_type,
|
'type': param_type,
|
||||||
'description': args_doc[param.name],
|
'description': args_doc.get(param.name, ''),
|
||||||
}
|
}
|
||||||
|
|
||||||
# add schema for array
|
# add schema for array
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
from types import SimpleNamespace
|
|
||||||
from unittest.mock import AsyncMock
|
|
||||||
|
|
||||||
from sqlalchemy.sql.dml import Update
|
|
||||||
|
|
||||||
from langbot.pkg.api.http.service.bot import BotService
|
|
||||||
|
|
||||||
|
|
||||||
class _FakeResult:
|
|
||||||
def __init__(self, value):
|
|
||||||
self.value = value
|
|
||||||
|
|
||||||
def first(self):
|
|
||||||
return self.value
|
|
||||||
|
|
||||||
|
|
||||||
class _PersistenceManager:
|
|
||||||
def __init__(self):
|
|
||||||
self.update_values = None
|
|
||||||
|
|
||||||
async def execute_async(self, statement):
|
|
||||||
if isinstance(statement, Update):
|
|
||||||
self.update_values = {
|
|
||||||
key: value for key, value in statement.compile().params.items() if not key.startswith('uuid_')
|
|
||||||
}
|
|
||||||
return None
|
|
||||||
|
|
||||||
return _FakeResult(SimpleNamespace(name='Updated Pipeline'))
|
|
||||||
|
|
||||||
|
|
||||||
async def test_update_bot_copies_input_before_filtering_and_setting_pipeline_name():
|
|
||||||
persistence_mgr = _PersistenceManager()
|
|
||||||
runtime_bot = SimpleNamespace(enable=False)
|
|
||||||
platform_mgr = SimpleNamespace(
|
|
||||||
remove_bot=AsyncMock(),
|
|
||||||
load_bot=AsyncMock(return_value=runtime_bot),
|
|
||||||
)
|
|
||||||
ap = SimpleNamespace(
|
|
||||||
persistence_mgr=persistence_mgr,
|
|
||||||
platform_mgr=platform_mgr,
|
|
||||||
sess_mgr=SimpleNamespace(session_list=[]),
|
|
||||||
)
|
|
||||||
service = BotService(ap)
|
|
||||||
service.get_bot = AsyncMock(return_value={'uuid': 'bot-1'})
|
|
||||||
payload = {
|
|
||||||
'uuid': 'caller-owned-uuid',
|
|
||||||
'name': 'Test Bot',
|
|
||||||
'use_pipeline_uuid': 'pipeline-1',
|
|
||||||
}
|
|
||||||
|
|
||||||
await service.update_bot('bot-1', payload)
|
|
||||||
|
|
||||||
assert payload == {
|
|
||||||
'uuid': 'caller-owned-uuid',
|
|
||||||
'name': 'Test Bot',
|
|
||||||
'use_pipeline_uuid': 'pipeline-1',
|
|
||||||
}
|
|
||||||
assert persistence_mgr.update_values == {
|
|
||||||
'name': 'Test Bot',
|
|
||||||
'use_pipeline_uuid': 'pipeline-1',
|
|
||||||
'use_pipeline_name': 'Updated Pipeline',
|
|
||||||
}
|
|
||||||
15
tests/unit_tests/utils/test_funcschema.py
Normal file
15
tests/unit_tests/utils/test_funcschema.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
from langbot.pkg.utils.funcschema import get_func_schema
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_func_schema_uses_empty_description_for_undocumented_parameter():
|
||||||
|
def sample_function(documented: str, undocumented: int):
|
||||||
|
"""Sample function.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
documented(str): documented parameter description
|
||||||
|
"""
|
||||||
|
|
||||||
|
schema = get_func_schema(sample_function)
|
||||||
|
|
||||||
|
assert schema['parameters']['properties']['documented']['description'] == 'documented parameter description'
|
||||||
|
assert schema['parameters']['properties']['undocumented']['description'] == ''
|
||||||
Reference in New Issue
Block a user