fix: add GetInputForm for string_transform (#16900)

### Summary

As title:

#### merge:
<img width="2972" height="1473" alt="image"
src="https://github.com/user-attachments/assets/2171e31f-13f4-4799-a6d0-1b9326210658"
/>

---
#### split
<img width="858" height="416" alt="image"
src="https://github.com/user-attachments/assets/f89d39e3-da85-4349-a53c-e27a17cc9dfa"
/>
This commit is contained in:
Haruko386
2026-07-15 10:54:18 +08:00
committed by GitHub
parent 276941f7b4
commit 3339040987
2 changed files with 129 additions and 0 deletions

View File

@@ -173,3 +173,77 @@ func TestStringTransform_Registered(t *testing.T) {
t.Errorf("Name()=%q, want StringTransform", c.Name())
}
}
func TestStringTransform_GetInputFormSplit(t *testing.T) {
c, err := NewStringTransformComponent(map[string]any{
"method": "split",
"delimiters": []string{","},
})
if err != nil {
t.Fatalf("NewStringTransformComponent: %v", err)
}
got := c.(*StringTransformComponent).GetInputForm()
want := map[string]any{
"line": map[string]any{
"name": "String",
"type": "line",
},
}
if !reflect.DeepEqual(got, want) {
t.Errorf("GetInputForm split = %#v, want %#v", got, want)
}
}
func TestStringTransform_GetInputFormMerge(t *testing.T) {
c, err := NewStringTransformComponent(map[string]any{
"method": "merge",
"delimiters": []string{","},
"script": "{{sys.query}} - {{CodeExec:Run@result}} - {{sys.query}}",
})
if err != nil {
t.Fatalf("NewStringTransformComponent: %v", err)
}
got := c.(*StringTransformComponent).GetInputForm()
want := map[string]any{
"sys.query": map[string]any{
"name": "sys.query",
"type": "line",
},
"CodeExec:Run@result": map[string]any{
"name": "CodeExec:Run@result",
"type": "line",
},
}
if !reflect.DeepEqual(got, want) {
t.Errorf("GetInputForm merge = %#v, want %#v", got, want)
}
}
func TestGetInputElementsFromText(t *testing.T) {
got := getInputElementsFromText("{{ sys.query }} {{env.foo}} {{Node_1@answer.text}} {{sys.query}}")
want := map[string]map[string]any{
"sys.query": {
"name": "sys.query",
"value": nil,
"_retrieval": nil,
"_cpn_id": "",
},
"env.foo": {
"name": "env.foo",
"value": nil,
"_retrieval": nil,
"_cpn_id": "",
},
"Node_1@answer.text": {
"name": "Node_1@answer.text",
"value": nil,
"_retrieval": nil,
"_cpn_id": "Node_1",
},
}
if !reflect.DeepEqual(got, want) {
t.Errorf("getInputElementsFromText = %#v, want %#v", got, want)
}
}