|
@@ -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)
|