Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
a5394fa2
Unverified
Commit
a5394fa2
authored
Mar 11, 2024
by
Yeuoly
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test: template transform
parent
8dc4d122
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
58 additions
and
26 deletions
+58
-26
template_transform_node.py
...kflow/nodes/template_transform/template_transform_node.py
+8
-1
code_executor.py
.../integration_tests/workflow/nodes/__mock/code_executor.py
+4
-0
test_template_transform.py
...tegration_tests/workflow/nodes/test_template_transform.py
+46
-0
test_tool.py
api/tests/integration_tests/workflow/nodes/test_tool.py
+0
-25
No files found.
api/core/workflow/nodes/template_transform/template_transform_node.py
View file @
a5394fa2
...
@@ -7,6 +7,7 @@ from core.workflow.nodes.base_node import BaseNode
...
@@ -7,6 +7,7 @@ from core.workflow.nodes.base_node import BaseNode
from
core.workflow.nodes.template_transform.entities
import
TemplateTransformNodeData
from
core.workflow.nodes.template_transform.entities
import
TemplateTransformNodeData
from
models.workflow
import
WorkflowNodeExecutionStatus
from
models.workflow
import
WorkflowNodeExecutionStatus
MAX_TEMPLATE_TRANSFORM_OUTPUT_LENGTH
=
1000
class
TemplateTransformNode
(
BaseNode
):
class
TemplateTransformNode
(
BaseNode
):
_node_data_cls
=
TemplateTransformNodeData
_node_data_cls
=
TemplateTransformNodeData
...
@@ -48,7 +49,6 @@ class TemplateTransformNode(BaseNode):
...
@@ -48,7 +49,6 @@ class TemplateTransformNode(BaseNode):
)
)
variables
[
variable
]
=
value
variables
[
variable
]
=
value
# Run code
# Run code
try
:
try
:
result
=
CodeExecutor
.
execute_code
(
result
=
CodeExecutor
.
execute_code
(
...
@@ -62,6 +62,13 @@ class TemplateTransformNode(BaseNode):
...
@@ -62,6 +62,13 @@ class TemplateTransformNode(BaseNode):
status
=
WorkflowNodeExecutionStatus
.
FAILED
,
status
=
WorkflowNodeExecutionStatus
.
FAILED
,
error
=
str
(
e
)
error
=
str
(
e
)
)
)
if
len
(
result
[
'result'
])
>
MAX_TEMPLATE_TRANSFORM_OUTPUT_LENGTH
:
return
NodeRunResult
(
inputs
=
variables
,
status
=
WorkflowNodeExecutionStatus
.
FAILED
,
error
=
f
"Output length exceeds {MAX_TEMPLATE_TRANSFORM_OUTPUT_LENGTH} characters"
)
return
NodeRunResult
(
return
NodeRunResult
(
status
=
WorkflowNodeExecutionStatus
.
SUCCEEDED
,
status
=
WorkflowNodeExecutionStatus
.
SUCCEEDED
,
...
...
api/tests/integration_tests/workflow/nodes/__mock/code_executor.py
View file @
a5394fa2
...
@@ -15,6 +15,10 @@ class MockedCodeExecutor:
...
@@ -15,6 +15,10 @@ class MockedCodeExecutor:
return
{
return
{
"result"
:
3
"result"
:
3
}
}
elif
language
==
'jinja2'
:
return
{
"result"
:
"3"
}
@
pytest
.
fixture
@
pytest
.
fixture
def
setup_code_executor_mock
(
request
,
monkeypatch
:
MonkeyPatch
):
def
setup_code_executor_mock
(
request
,
monkeypatch
:
MonkeyPatch
):
...
...
api/tests/integration_tests/workflow/nodes/test_template_transform.py
0 → 100644
View file @
a5394fa2
import
pytest
from
core.app.entities.app_invoke_entities
import
InvokeFrom
from
core.workflow.entities.variable_pool
import
VariablePool
from
core.workflow.nodes.template_transform.template_transform_node
import
TemplateTransformNode
from
models.workflow
import
WorkflowNodeExecutionStatus
from
tests.integration_tests.workflow.nodes.__mock.code_executor
import
setup_code_executor_mock
@
pytest
.
mark
.
parametrize
(
'setup_code_executor_mock'
,
[[
'none'
]],
indirect
=
True
)
def
test_execute_code
(
setup_code_executor_mock
):
code
=
'''{{args2}}'''
node
=
TemplateTransformNode
(
tenant_id
=
'1'
,
app_id
=
'1'
,
workflow_id
=
'1'
,
user_id
=
'1'
,
user_from
=
InvokeFrom
.
WEB_APP
,
config
=
{
'id'
:
'1'
,
'data'
:
{
'title'
:
'123'
,
'variables'
:
[
{
'variable'
:
'args1'
,
'value_selector'
:
[
'1'
,
'123'
,
'args1'
],
},
{
'variable'
:
'args2'
,
'value_selector'
:
[
'1'
,
'123'
,
'args2'
]
}
],
'template'
:
code
,
}
}
)
# construct variable pool
pool
=
VariablePool
(
system_variables
=
{},
user_inputs
=
{})
pool
.
append_variable
(
node_id
=
'1'
,
variable_key_list
=
[
'123'
,
'args1'
],
value
=
1
)
pool
.
append_variable
(
node_id
=
'1'
,
variable_key_list
=
[
'123'
,
'args2'
],
value
=
3
)
# execute node
result
=
node
.
run
(
pool
)
assert
result
.
status
==
WorkflowNodeExecutionStatus
.
SUCCEEDED
assert
result
.
outputs
[
'output'
]
==
'3'
api/tests/integration_tests/workflow/nodes/test_tool.py
View file @
a5394fa2
import
pytest
from
core.app.entities.app_invoke_entities
import
InvokeFrom
from
core.app.entities.app_invoke_entities
import
InvokeFrom
from
core.workflow.entities.variable_pool
import
VariablePool
from
core.workflow.entities.variable_pool
import
VariablePool
from
core.workflow.nodes.tool.tool_node
import
ToolNode
from
core.workflow.nodes.tool.tool_node
import
ToolNode
from
models.workflow
import
WorkflowNodeExecutionStatus
from
models.workflow
import
WorkflowNodeExecutionStatus
"""
class ToolEntity(BaseModel):
provider_id: str
provider_type: Literal['builtin', 'api']
provider_name: str # redundancy
tool_name: str
tool_label: str # redundancy
tool_configurations: dict[str, ToolParameterValue]
class ToolNodeData(BaseNodeData, ToolEntity):
class ToolInput(VariableSelector):
variable_type: Literal['selector', 'static']
value: Optional[str]
@validator('value')
def check_value(cls, value, values, **kwargs):
if values['variable_type'] == 'static' and value is None:
raise ValueError('value is required for static variable')
return value
tool_parameters: list[ToolInput]
"""
def
test_tool_invoke
():
def
test_tool_invoke
():
pool
=
VariablePool
(
system_variables
=
{},
user_inputs
=
{})
pool
=
VariablePool
(
system_variables
=
{},
user_inputs
=
{})
pool
.
append_variable
(
node_id
=
'1'
,
variable_key_list
=
[
'123'
,
'args1'
],
value
=
'1+1'
)
pool
.
append_variable
(
node_id
=
'1'
,
variable_key_list
=
[
'123'
,
'args1'
],
value
=
'1+1'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment