Skip to content

Commit e7eaba3

Browse files
committed
test: add validation test for flow with complex node structure and reference values
1 parent 95357ad commit e7eaba3

1 file changed

Lines changed: 258 additions & 0 deletions

File tree

test/flowValidation.test.ts

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,4 +679,262 @@ describe('getFlowValidation - Integrationstest', () => {
679679
})
680680
});
681681

682+
it('9', () => {
683+
684+
const flow: Flow = {
685+
"__typename": "Flow",
686+
"id": "gid://sagittarius/Flow/1",
687+
"createdAt": "2026-04-13T19:45:44Z",
688+
"signature": "(httpURL: HTTP_URL, httpMethod: HTTP_METHOD): { payload: { test: BOOLEAN }, headers: { bla: TEXT } }",
689+
"disabledReason": null,
690+
"name": "Test",
691+
"project": {
692+
"__typename": "NamespaceProject",
693+
"id": "gid://sagittarius/NamespaceProject/1"
694+
},
695+
"settings": {
696+
"nodes": [
697+
{
698+
"value": "/test",
699+
"flowSettingIdentifier": "httpURL"
700+
},
701+
{
702+
"value": "GET",
703+
"flowSettingIdentifier": "httpMethod"
704+
}
705+
]
706+
},
707+
"startingNodeId": "gid://sagittarius/NodeFunction/3",
708+
"type": {
709+
"id": "gid://sagittarius/FlowType/2",
710+
"__typename": "FlowType"
711+
},
712+
"updatedAt": "2026-04-13T19:54:55Z",
713+
"userAbilities": {
714+
"deleteFlow": true,
715+
"__typename": "FlowUserAbilities"
716+
},
717+
"nodes": {
718+
"nodes": [
719+
{
720+
"__typename": "NodeFunction",
721+
"id": "gid://sagittarius/NodeFunction/1",
722+
"functionDefinition": {
723+
"__typename": "FunctionDefinition",
724+
"id": "gid://sagittarius/FunctionDefinition/42",
725+
"identifier": "http::response::create"
726+
},
727+
"parameters": {
728+
"__typename": "NodeParameterConnection",
729+
"nodes": [
730+
{
731+
"__typename": "NodeParameter",
732+
"parameterDefinition": {
733+
"__typename": "ParameterDefinition",
734+
"id": "gid://sagittarius/ParameterDefinition/66",
735+
"identifier": "http_status_code"
736+
},
737+
"value": {
738+
"__typename": "LiteralValue",
739+
"value": 200
740+
}
741+
},
742+
{
743+
"__typename": "NodeParameter",
744+
"parameterDefinition": {
745+
"__typename": "ParameterDefinition",
746+
"id": "gid://sagittarius/ParameterDefinition/67",
747+
"identifier": "headers"
748+
},
749+
"value": {
750+
"__typename": "LiteralValue",
751+
"value": {}
752+
}
753+
},
754+
{
755+
"__typename": "NodeParameter",
756+
"parameterDefinition": {
757+
"__typename": "ParameterDefinition",
758+
"id": "gid://sagittarius/ParameterDefinition/68",
759+
"identifier": "payload"
760+
},
761+
"value": {
762+
"__typename": "ReferenceValue",
763+
"nodeFunctionId": null,
764+
"referencePath": [
765+
{
766+
"path": "payload"
767+
},
768+
{
769+
"path": "test"
770+
}
771+
]
772+
}
773+
}
774+
]
775+
},
776+
"nextNodeId": "gid://sagittarius/NodeFunction/2"
777+
},
778+
{
779+
"__typename": "NodeFunction",
780+
"id": "gid://sagittarius/NodeFunction/2",
781+
"functionDefinition": {
782+
"__typename": "FunctionDefinition",
783+
"id": "gid://sagittarius/FunctionDefinition/114",
784+
"identifier": "rest::control::respond"
785+
},
786+
"parameters": {
787+
"__typename": "NodeParameterConnection",
788+
"nodes": [
789+
{
790+
"__typename": "NodeParameter",
791+
"parameterDefinition": {
792+
"__typename": "ParameterDefinition",
793+
"id": "gid://sagittarius/ParameterDefinition/177",
794+
"identifier": "http_response"
795+
},
796+
"value": {
797+
"__typename": "ReferenceValue",
798+
"nodeFunctionId": "gid://sagittarius/NodeFunction/1"
799+
}
800+
}
801+
]
802+
}
803+
},
804+
{
805+
"__typename": "NodeFunction",
806+
"id": "gid://sagittarius/NodeFunction/3",
807+
"functionDefinition": {
808+
"__typename": "FunctionDefinition",
809+
"id": "gid://sagittarius/FunctionDefinition/5",
810+
"identifier": "std::control::if"
811+
},
812+
"parameters": {
813+
"__typename": "NodeParameterConnection",
814+
"nodes": [
815+
{
816+
"__typename": "NodeParameter",
817+
"parameterDefinition": {
818+
"__typename": "ParameterDefinition",
819+
"id": "gid://sagittarius/ParameterDefinition/6",
820+
"identifier": "condition"
821+
},
822+
"value": {
823+
"__typename": "ReferenceValue",
824+
"nodeFunctionId": null,
825+
"referencePath": [
826+
{
827+
"path": "payload"
828+
},
829+
{
830+
"path": "test"
831+
}
832+
]
833+
}
834+
},
835+
{
836+
"__typename": "NodeParameter",
837+
"parameterDefinition": {
838+
"__typename": "ParameterDefinition",
839+
"id": "gid://sagittarius/ParameterDefinition/7",
840+
"identifier": "runnable"
841+
},
842+
"value": {
843+
"id": "gid://sagittarius/NodeFunction/4",
844+
"__typename": "NodeFunctionIdWrapper"
845+
}
846+
}
847+
]
848+
},
849+
"nextNodeId": "gid://sagittarius/NodeFunction/1"
850+
},
851+
{
852+
"__typename": "NodeFunction",
853+
"id": "gid://sagittarius/NodeFunction/4",
854+
"functionDefinition": {
855+
"__typename": "FunctionDefinition",
856+
"id": "gid://sagittarius/FunctionDefinition/42",
857+
"identifier": "http::response::create"
858+
},
859+
"parameters": {
860+
"__typename": "NodeParameterConnection",
861+
"nodes": [
862+
{
863+
"__typename": "NodeParameter",
864+
"parameterDefinition": {
865+
"__typename": "ParameterDefinition",
866+
"id": "gid://sagittarius/ParameterDefinition/66",
867+
"identifier": "http_status_code"
868+
},
869+
"value": {
870+
"__typename": "LiteralValue",
871+
"value": 200
872+
}
873+
},
874+
{
875+
"__typename": "NodeParameter",
876+
"parameterDefinition": {
877+
"__typename": "ParameterDefinition",
878+
"id": "gid://sagittarius/ParameterDefinition/67",
879+
"identifier": "headers"
880+
},
881+
"value": {
882+
"__typename": "LiteralValue",
883+
"value": {}
884+
}
885+
},
886+
{
887+
"__typename": "NodeParameter",
888+
"parameterDefinition": {
889+
"__typename": "ParameterDefinition",
890+
"id": "gid://sagittarius/ParameterDefinition/68",
891+
"identifier": "payload"
892+
},
893+
"value": {
894+
"__typename": "LiteralValue",
895+
"value": "boolean"
896+
}
897+
}
898+
]
899+
},
900+
"nextNodeId": "gid://sagittarius/NodeFunction/5"
901+
},
902+
{
903+
"__typename": "NodeFunction",
904+
"id": "gid://sagittarius/NodeFunction/5",
905+
"functionDefinition": {
906+
"__typename": "FunctionDefinition",
907+
"id": "gid://sagittarius/FunctionDefinition/114",
908+
"identifier": "rest::control::respond"
909+
},
910+
"parameters": {
911+
"__typename": "NodeParameterConnection",
912+
"nodes": [
913+
{
914+
"__typename": "NodeParameter",
915+
"parameterDefinition": {
916+
"__typename": "ParameterDefinition",
917+
"id": "gid://sagittarius/ParameterDefinition/177",
918+
"identifier": "http_response"
919+
},
920+
"value": {
921+
"__typename": "ReferenceValue",
922+
"nodeFunctionId": "gid://sagittarius/NodeFunction/4"
923+
}
924+
}
925+
]
926+
}
927+
}
928+
]
929+
}
930+
};
931+
932+
const result = getFlowValidation(flow, FUNCTION_SIGNATURES, DATA_TYPES);
933+
934+
expect(result.isValid).toBe(true);
935+
result.diagnostics.forEach((error) => {
936+
expect(error.parameterIndex).toBeDefined()
937+
})
938+
});
939+
682940
});

0 commit comments

Comments
 (0)