feat(api/core/app/segments): Update segment types and variables (#6734)
Signed-off-by: -LAN- <laipz8200@outlook.com>pull/6749/head
parent
b6c3010f02
commit
6a3bef8378
@ -0,0 +1,307 @@
|
|||||||
|
from uuid import uuid4
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from core.app.segments import (
|
||||||
|
ArrayFileVariable,
|
||||||
|
ArrayNumberVariable,
|
||||||
|
ArrayObjectVariable,
|
||||||
|
ArrayStringVariable,
|
||||||
|
FileVariable,
|
||||||
|
FloatVariable,
|
||||||
|
IntegerVariable,
|
||||||
|
NoneSegment,
|
||||||
|
ObjectSegment,
|
||||||
|
SecretVariable,
|
||||||
|
StringVariable,
|
||||||
|
factory,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_string_variable():
|
||||||
|
test_data = {'value_type': 'string', 'name': 'test_text', 'value': 'Hello, World!'}
|
||||||
|
result = factory.build_variable_from_mapping(test_data)
|
||||||
|
assert isinstance(result, StringVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_integer_variable():
|
||||||
|
test_data = {'value_type': 'number', 'name': 'test_int', 'value': 42}
|
||||||
|
result = factory.build_variable_from_mapping(test_data)
|
||||||
|
assert isinstance(result, IntegerVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_float_variable():
|
||||||
|
test_data = {'value_type': 'number', 'name': 'test_float', 'value': 3.14}
|
||||||
|
result = factory.build_variable_from_mapping(test_data)
|
||||||
|
assert isinstance(result, FloatVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_secret_variable():
|
||||||
|
test_data = {'value_type': 'secret', 'name': 'test_secret', 'value': 'secret_value'}
|
||||||
|
result = factory.build_variable_from_mapping(test_data)
|
||||||
|
assert isinstance(result, SecretVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid_value_type():
|
||||||
|
test_data = {'value_type': 'unknown', 'name': 'test_invalid', 'value': 'value'}
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
factory.build_variable_from_mapping(test_data)
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_a_blank_string():
|
||||||
|
result = factory.build_variable_from_mapping(
|
||||||
|
{
|
||||||
|
'value_type': 'string',
|
||||||
|
'name': 'blank',
|
||||||
|
'value': '',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
assert isinstance(result, StringVariable)
|
||||||
|
assert result.value == ''
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_a_object_variable_with_none_value():
|
||||||
|
var = factory.build_segment(
|
||||||
|
{
|
||||||
|
'key1': None,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
assert isinstance(var, ObjectSegment)
|
||||||
|
assert isinstance(var.value['key1'], NoneSegment)
|
||||||
|
|
||||||
|
|
||||||
|
def test_object_variable():
|
||||||
|
mapping = {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'object',
|
||||||
|
'name': 'test_object',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
'value': {
|
||||||
|
'key1': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'string',
|
||||||
|
'name': 'text',
|
||||||
|
'value': 'text',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
'key2': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'number',
|
||||||
|
'name': 'number',
|
||||||
|
'value': 1,
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
variable = factory.build_variable_from_mapping(mapping)
|
||||||
|
assert isinstance(variable, ObjectSegment)
|
||||||
|
assert isinstance(variable.value['key1'], StringVariable)
|
||||||
|
assert isinstance(variable.value['key2'], IntegerVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_array_string_variable():
|
||||||
|
mapping = {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'array[string]',
|
||||||
|
'name': 'test_array',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
'value': [
|
||||||
|
{
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'string',
|
||||||
|
'name': 'text',
|
||||||
|
'value': 'text',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'string',
|
||||||
|
'name': 'text',
|
||||||
|
'value': 'text',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
variable = factory.build_variable_from_mapping(mapping)
|
||||||
|
assert isinstance(variable, ArrayStringVariable)
|
||||||
|
assert isinstance(variable.value[0], StringVariable)
|
||||||
|
assert isinstance(variable.value[1], StringVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_array_number_variable():
|
||||||
|
mapping = {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'array[number]',
|
||||||
|
'name': 'test_array',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
'value': [
|
||||||
|
{
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'number',
|
||||||
|
'name': 'number',
|
||||||
|
'value': 1,
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'number',
|
||||||
|
'name': 'number',
|
||||||
|
'value': 2.0,
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
variable = factory.build_variable_from_mapping(mapping)
|
||||||
|
assert isinstance(variable, ArrayNumberVariable)
|
||||||
|
assert isinstance(variable.value[0], IntegerVariable)
|
||||||
|
assert isinstance(variable.value[1], FloatVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_array_object_variable():
|
||||||
|
mapping = {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'array[object]',
|
||||||
|
'name': 'test_array',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
'value': [
|
||||||
|
{
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'object',
|
||||||
|
'name': 'object',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
'value': {
|
||||||
|
'key1': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'string',
|
||||||
|
'name': 'text',
|
||||||
|
'value': 'text',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
'key2': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'number',
|
||||||
|
'name': 'number',
|
||||||
|
'value': 1,
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'object',
|
||||||
|
'name': 'object',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
'value': {
|
||||||
|
'key1': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'string',
|
||||||
|
'name': 'text',
|
||||||
|
'value': 'text',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
'key2': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'number',
|
||||||
|
'name': 'number',
|
||||||
|
'value': 1,
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
variable = factory.build_variable_from_mapping(mapping)
|
||||||
|
assert isinstance(variable, ArrayObjectVariable)
|
||||||
|
assert isinstance(variable.value[0], ObjectSegment)
|
||||||
|
assert isinstance(variable.value[1], ObjectSegment)
|
||||||
|
assert isinstance(variable.value[0].value['key1'], StringVariable)
|
||||||
|
assert isinstance(variable.value[0].value['key2'], IntegerVariable)
|
||||||
|
assert isinstance(variable.value[1].value['key1'], StringVariable)
|
||||||
|
assert isinstance(variable.value[1].value['key2'], IntegerVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_file_variable():
|
||||||
|
mapping = {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'file',
|
||||||
|
'name': 'test_file',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
'value': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'tenant_id': 'tenant_id',
|
||||||
|
'type': 'image',
|
||||||
|
'transfer_method': 'local_file',
|
||||||
|
'url': 'url',
|
||||||
|
'related_id': 'related_id',
|
||||||
|
'extra_config': {
|
||||||
|
'image_config': {
|
||||||
|
'width': 100,
|
||||||
|
'height': 100,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'filename': 'filename',
|
||||||
|
'extension': 'extension',
|
||||||
|
'mime_type': 'mime_type',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
variable = factory.build_variable_from_mapping(mapping)
|
||||||
|
assert isinstance(variable, FileVariable)
|
||||||
|
|
||||||
|
|
||||||
|
def test_array_file_variable():
|
||||||
|
mapping = {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'value_type': 'array[file]',
|
||||||
|
'name': 'test_array_file',
|
||||||
|
'description': 'Description of the variable.',
|
||||||
|
'value': [
|
||||||
|
{
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'name': 'file',
|
||||||
|
'value_type': 'file',
|
||||||
|
'value': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'tenant_id': 'tenant_id',
|
||||||
|
'type': 'image',
|
||||||
|
'transfer_method': 'local_file',
|
||||||
|
'url': 'url',
|
||||||
|
'related_id': 'related_id',
|
||||||
|
'extra_config': {
|
||||||
|
'image_config': {
|
||||||
|
'width': 100,
|
||||||
|
'height': 100,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'filename': 'filename',
|
||||||
|
'extension': 'extension',
|
||||||
|
'mime_type': 'mime_type',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'name': 'file',
|
||||||
|
'value_type': 'file',
|
||||||
|
'value': {
|
||||||
|
'id': str(uuid4()),
|
||||||
|
'tenant_id': 'tenant_id',
|
||||||
|
'type': 'image',
|
||||||
|
'transfer_method': 'local_file',
|
||||||
|
'url': 'url',
|
||||||
|
'related_id': 'related_id',
|
||||||
|
'extra_config': {
|
||||||
|
'image_config': {
|
||||||
|
'width': 100,
|
||||||
|
'height': 100,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'filename': 'filename',
|
||||||
|
'extension': 'extension',
|
||||||
|
'mime_type': 'mime_type',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
variable = factory.build_variable_from_mapping(mapping)
|
||||||
|
assert isinstance(variable, ArrayFileVariable)
|
||||||
|
assert isinstance(variable.value[0], FileVariable)
|
||||||
|
assert isinstance(variable.value[1], FileVariable)
|
||||||
Loading…
Reference in New Issue