Compare commits
25
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
544febfc41
|
||
|
|
4262776004
|
||
|
|
f47d0f7870
|
||
|
|
4d743f2c4d | ||
|
|
a230b6f58e
|
||
|
|
9cc69d807a
|
||
|
|
12d0c09f9f
|
||
|
|
0bf2da23bb | ||
|
|
8ced11cc1d | ||
|
|
9d98f41311
|
||
|
|
49d2ea433e
|
||
|
|
67bc2d11ec
|
||
|
|
f9b832045d
|
||
|
|
8b5b29999e | ||
|
|
9442df6684 | ||
|
|
bad4c66ce0 | ||
|
|
3512db0ef8 | ||
|
|
7cbbfc9c07 | ||
|
|
cedf5e2336 | ||
|
|
7c967d0c88
|
||
|
|
5c52abdfe3 | ||
|
|
6799f645e9
|
||
|
|
a16c153e7e
|
||
|
|
67b50143ad | ||
|
|
e4d8e06719 |
No files matched your search
+10
-53
@@ -1,57 +1,14 @@
|
|||||||
version: 2.1
|
version: 2.1
|
||||||
|
setup: true
|
||||||
orbs:
|
orbs:
|
||||||
qqq-orb: kingsrook/qqq-orb@0.5.0
|
qqq-orb: kingsrook/qqq-orb@0.8
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
|
setup:
|
||||||
test_only:
|
|
||||||
jobs:
|
jobs:
|
||||||
- qqq-orb/mvn_test_only:
|
- qqq-orb/generate_pipeline:
|
||||||
context: [ qqq-maven-registry-credentials ]
|
orb_version: '0.8'
|
||||||
filters:
|
filters:
|
||||||
branches:
|
branches:
|
||||||
ignore: /(develop|main|release/.*|hotfix/.*|integration.*)/
|
ignore: automation/qbit-rc-pending
|
||||||
tags:
|
tags:
|
||||||
only: []
|
only: /v.*/
|
||||||
|
|
||||||
publish_snapshot:
|
|
||||||
jobs:
|
|
||||||
- qqq-orb/mvn_publish:
|
|
||||||
context: [ qqq-maven-registry-credentials ]
|
|
||||||
branch_type: snapshot
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- develop
|
|
||||||
|
|
||||||
publish_release_candidate:
|
|
||||||
jobs:
|
|
||||||
- qqq-orb/mvn_publish:
|
|
||||||
context: [ qqq-maven-registry-credentials ]
|
|
||||||
branch_type: release_candidate
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /release\/.*/
|
|
||||||
|
|
||||||
publish_release:
|
|
||||||
jobs:
|
|
||||||
- qqq-orb/mvn_publish:
|
|
||||||
context: [ qqq-maven-registry-credentials ]
|
|
||||||
branch_type: release
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore: /.*/
|
|
||||||
tags:
|
|
||||||
only: [ /v.*/ ]
|
|
||||||
|
|
||||||
publish_hotfix_release:
|
|
||||||
jobs:
|
|
||||||
- qqq-orb/mvn_publish:
|
|
||||||
context: [ qqq-maven-registry-credentials ]
|
|
||||||
branch_type: hotfix
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- /hotfix\/.*/
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
name: build
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
jobs:
|
||||||
|
maven:
|
||||||
|
uses: self:KofTwentyTwo/ci-workflows/.gitea/workflows/maven.yaml@v1
|
||||||
|
secrets: inherit
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
name: CodeQL
|
||||||
|
'on':
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- develop
|
||||||
|
- release/**
|
||||||
|
- hotfix/**
|
||||||
|
pull_request: {}
|
||||||
|
schedule:
|
||||||
|
- cron: 41 16 * * 0
|
||||||
|
workflow_dispatch: {}
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
actions: read
|
||||||
|
security-events: write
|
||||||
|
packages: read
|
||||||
|
concurrency:
|
||||||
|
group: codeql-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
uses: QRun-IO/qqq-orb/.github/workflows/qbit-codeql.yml@c288a8864fe9054f68410e1d78f5863aea4c4d22
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
name: Release candidate
|
||||||
|
'on':
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
dry_run:
|
||||||
|
description: Plan a cut without changing release state
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
finalize:
|
||||||
|
description: Retry finalization of an existing cut; do not cut another RC
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
recover:
|
||||||
|
description: Recover the same published RC after a deployment timeout; never
|
||||||
|
reupload
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
circle_build:
|
||||||
|
description: Original Circle publisher build number (recovery only)
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
merge_sha:
|
||||||
|
description: Existing cut merge_sha (finalize retry only)
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
bump_sha:
|
||||||
|
description: Existing cut bump_sha (finalize retry only)
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
branch:
|
||||||
|
description: Existing cut branch (finalize retry only)
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
version:
|
||||||
|
description: Existing cut version (finalize retry only)
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- closed
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
repository_dispatch:
|
||||||
|
types:
|
||||||
|
- qbit-rc-published
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
actions: read
|
||||||
|
checks: read
|
||||||
|
jobs:
|
||||||
|
release-rc:
|
||||||
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'repository_dispatch'
|
||||||
|
|| (github.event_name == 'pull_request' && github.event.pull_request.merged
|
||||||
|
== true && github.event.pull_request.base.ref == 'develop' && contains(github.event.pull_request.labels.*.name,
|
||||||
|
'release:rc'))
|
||||||
|
uses: QRun-IO/qqq-orb/.github/workflows/qbit-release-rc.yml@cc30f599e63c8e41629c99d23395bac1adb8bc44
|
||||||
|
with:
|
||||||
|
dry_run: ${{ github.event_name == 'workflow_dispatch' && inputs.dry_run || false
|
||||||
|
}}
|
||||||
|
finalize: ${{ github.event_name == 'repository_dispatch' || (github.event_name
|
||||||
|
== 'workflow_dispatch' && inputs.finalize) }}
|
||||||
|
recover: ${{ github.event_name == 'workflow_dispatch' && inputs.recover || false
|
||||||
|
}}
|
||||||
|
circle_build: ${{ github.event_name == 'workflow_dispatch' && inputs.circle_build
|
||||||
|
|| '' }}
|
||||||
|
merge_sha: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.merge_sha
|
||||||
|
|| inputs.merge_sha || '' }}
|
||||||
|
bump_sha: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.bump_sha
|
||||||
|
|| inputs.bump_sha || '' }}
|
||||||
|
branch: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch
|
||||||
|
|| inputs.branch || '' }}
|
||||||
|
version: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.version
|
||||||
|
|| inputs.version || '' }}
|
||||||
|
secrets: inherit
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
profile: qbit
|
||||||
|
orb_version: '0.8'
|
||||||
|
default_branch: main
|
||||||
|
java_version: '21'
|
||||||
|
browsers: true
|
||||||
|
api_checks: false
|
||||||
|
docs_only: false
|
||||||
|
release_on_main: false
|
||||||
|
release_tag_policy: v-prefix
|
||||||
|
test_branch_policy: all
|
||||||
|
publish:
|
||||||
|
snapshot: true
|
||||||
|
release_candidate: true
|
||||||
|
release: true
|
||||||
|
asciidoc: false
|
||||||
|
release_completion: false
|
||||||
@@ -24,7 +24,7 @@ This QBit provides a declarative workflow engine. Define states and transitions,
|
|||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- QQQ application (v0.35.0+)
|
- QQQ application (v4.1.0+)
|
||||||
- Database backend configured
|
- Database backend configured
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|||||||
@@ -23,7 +23,8 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<revision>0.4.0</revision>
|
<revision>0.5.0-SNAPSHOT</revision>
|
||||||
|
<qqq.version>4.1.0-RC.21</qqq.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
@@ -69,6 +70,19 @@
|
|||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<!-- Published QQQ 4.1 core (minimum QQQ 4.1), imported ahead of the parent's BOM. -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.kingsrook.qqq</groupId>
|
||||||
|
<artifactId>qqq-bom-pom</artifactId>
|
||||||
|
<version>${qqq.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.kingsrook.qqq</groupId>
|
<groupId>com.kingsrook.qqq</groupId>
|
||||||
@@ -86,8 +100,10 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.kingsrook.qqq</groupId>
|
<groupId>com.kingsrook.qqq</groupId>
|
||||||
|
<!-- 0.27.0-RC.1 references com.kingsrook.qqq.backend.javalin.QJavalinMetaData, which QQQ 4.x moved to com.kingsrook.qqq.middleware.javalin
|
||||||
|
(NoClassDefFoundError when the form adjusters register). 0.42.0-RC.2 is the published line for 4.x; its public API is a superset. -->
|
||||||
<artifactId>qqq-frontend-material-dashboard</artifactId>
|
<artifactId>qqq-frontend-material-dashboard</artifactId>
|
||||||
<version>0.27.0-RC.1</version>
|
<version>0.42.0-RC.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -98,7 +114,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.assertj</groupId>
|
<groupId>org.assertj</groupId>
|
||||||
<artifactId>assertj-core</artifactId>
|
<artifactId>assertj-core</artifactId>
|
||||||
<version>3.27.3</version>
|
<version>3.27.7</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
+2
-1
@@ -39,6 +39,7 @@ import com.kingsrook.qbits.workflows.model.Workflow;
|
|||||||
import com.kingsrook.qbits.workflows.model.WorkflowRevision;
|
import com.kingsrook.qbits.workflows.model.WorkflowRevision;
|
||||||
import com.kingsrook.qbits.workflows.model.WorkflowStep;
|
import com.kingsrook.qbits.workflows.model.WorkflowStep;
|
||||||
import com.kingsrook.qqq.api.actions.GetTableApiFieldsAction;
|
import com.kingsrook.qqq.api.actions.GetTableApiFieldsAction;
|
||||||
|
import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsInput;
|
||||||
import com.kingsrook.qqq.api.utils.ApiQueryFilterUtils;
|
import com.kingsrook.qqq.api.utils.ApiQueryFilterUtils;
|
||||||
import com.kingsrook.qqq.backend.core.actions.tables.GetAction;
|
import com.kingsrook.qqq.backend.core.actions.tables.GetAction;
|
||||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||||
@@ -254,7 +255,7 @@ public class InputRecordFilterStep extends WorkflowStepType implements WorkflowS
|
|||||||
String apiName = workflowRevision.getValueString("apiName");
|
String apiName = workflowRevision.getValueString("apiName");
|
||||||
String apiVersion = workflowRevision.getValueString("apiVersion");
|
String apiVersion = workflowRevision.getValueString("apiVersion");
|
||||||
String tableName = workflow.getValueString("tableName");
|
String tableName = workflow.getValueString("tableName");
|
||||||
Map<String, QFieldMetaData> tableApiFields = GetTableApiFieldsAction.getTableApiFieldMap(new GetTableApiFieldsAction.ApiNameVersionAndTableName(apiName, apiVersion, tableName));
|
Map<String, QFieldMetaData> tableApiFields = GetTableApiFieldsAction.getTableApiFieldMap(new GetTableApiFieldsInput().withApiName(apiName).withVersion(apiVersion).withTableName(tableName));
|
||||||
ArrayList<String> badRequestMessages = new ArrayList<>();
|
ArrayList<String> badRequestMessages = new ArrayList<>();
|
||||||
ApiQueryFilterUtils.manageCriteriaFields(filter, tableApiFields, badRequestMessages, apiName, apiVersion, new QueryInput(tableName).withFilter(filter));
|
ApiQueryFilterUtils.manageCriteriaFields(filter, tableApiFields, badRequestMessages, apiName, apiVersion, new QueryInput(tableName).withFilter(filter));
|
||||||
errors.addAll(badRequestMessages);
|
errors.addAll(badRequestMessages);
|
||||||
|
|||||||
+2
-1
@@ -31,6 +31,7 @@ import com.kingsrook.qbits.workflows.execution.WorkflowExecutionContext;
|
|||||||
import com.kingsrook.qbits.workflows.model.Workflow;
|
import com.kingsrook.qbits.workflows.model.Workflow;
|
||||||
import com.kingsrook.qbits.workflows.model.WorkflowRevision;
|
import com.kingsrook.qbits.workflows.model.WorkflowRevision;
|
||||||
import com.kingsrook.qqq.api.actions.GetTableApiFieldsAction;
|
import com.kingsrook.qqq.api.actions.GetTableApiFieldsAction;
|
||||||
|
import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsInput;
|
||||||
import com.kingsrook.qqq.api.utils.ApiQueryFilterUtils;
|
import com.kingsrook.qqq.api.utils.ApiQueryFilterUtils;
|
||||||
import com.kingsrook.qqq.backend.core.actions.tables.CountAction;
|
import com.kingsrook.qqq.backend.core.actions.tables.CountAction;
|
||||||
import com.kingsrook.qqq.backend.core.actions.tables.DeleteAction;
|
import com.kingsrook.qqq.backend.core.actions.tables.DeleteAction;
|
||||||
@@ -179,7 +180,7 @@ public class RecordWorkflowUtils
|
|||||||
{
|
{
|
||||||
WorkflowRevision workflowRevision = context.getWorkflowRevision();
|
WorkflowRevision workflowRevision = context.getWorkflowRevision();
|
||||||
Workflow workflow = context.getWorkflow();
|
Workflow workflow = context.getWorkflow();
|
||||||
Map<String, QFieldMetaData> tableApiFields = GetTableApiFieldsAction.getTableApiFieldMap(new GetTableApiFieldsAction.ApiNameVersionAndTableName(workflowRevision.getApiName(), workflowRevision.getApiVersion(), workflow.getTableName()));
|
Map<String, QFieldMetaData> tableApiFields = GetTableApiFieldsAction.getTableApiFieldMap(new GetTableApiFieldsInput().withApiName(workflowRevision.getApiName()).withVersion(workflowRevision.getApiVersion()).withTableName(workflow.getTableName()));
|
||||||
List<String> badRequestMessages = new ArrayList<>();
|
List<String> badRequestMessages = new ArrayList<>();
|
||||||
|
|
||||||
CountInput countInput = new CountInput(context.getWorkflow().getTableName())
|
CountInput countInput = new CountInput(context.getWorkflow().getTableName())
|
||||||
|
|||||||
+2
-2
@@ -78,9 +78,9 @@ public class RunRecordWorkflowExtractStep extends ExtractViaQueryStep
|
|||||||
** Make sure associations are fetched (so api records have children!)
|
** Make sure associations are fetched (so api records have children!)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@Override
|
@Override
|
||||||
protected void customizeInputPreQuery(QueryInput queryInput)
|
protected void customizeInputPreQuery(RunBackendStepInput runBackendStepInput, QueryInput queryInput)
|
||||||
{
|
{
|
||||||
super.customizeInputPreQuery(queryInput);
|
super.customizeInputPreQuery(runBackendStepInput, queryInput);
|
||||||
queryInput.setIncludeAssociations(true);
|
queryInput.setIncludeAssociations(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ public class BaseTest
|
|||||||
// basic definition of an instance //
|
// basic definition of an instance //
|
||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
QInstance qInstance = new QInstance();
|
QInstance qInstance = new QInstance();
|
||||||
qInstance.setAuthentication(new QAuthenticationMetaData().withType(QAuthenticationType.FULLY_ANONYMOUS));
|
qInstance.withInstanceDefaultAuthentication(new QAuthenticationMetaData().withType(QAuthenticationType.FULLY_ANONYMOUS));
|
||||||
qInstance.addBackend(new RDBMSBackendMetaData()
|
qInstance.addBackend(new RDBMSBackendMetaData()
|
||||||
.withName(RDBMS_BACKEND_NAME)
|
.withName(RDBMS_BACKEND_NAME)
|
||||||
.withVendor("h2")
|
.withVendor("h2")
|
||||||
|
|||||||
+106
@@ -0,0 +1,106 @@
|
|||||||
|
/*
|
||||||
|
* QQQ - Low-code Application Framework for Engineers.
|
||||||
|
* Copyright (C) 2021-2025. Kingsrook, LLC
|
||||||
|
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||||
|
* contact@kingsrook.com
|
||||||
|
* https://github.com/Kingsrook/
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.kingsrook.qbits.workflows.metadata;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import com.kingsrook.qbits.workflows.BaseTest;
|
||||||
|
import com.kingsrook.qbits.workflows.WorkflowsTestDataSource;
|
||||||
|
import com.kingsrook.qbits.workflows.implementations.recordworkflows.RecordWorkflowsDefinition;
|
||||||
|
import com.kingsrook.qbits.workflows.model.Workflow;
|
||||||
|
import com.kingsrook.qbits.workflows.model.WorkflowTestScenario;
|
||||||
|
import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction;
|
||||||
|
import com.kingsrook.qqq.backend.core.actions.tables.InsertAction;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessOutput;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput;
|
||||||
|
import com.kingsrook.qqq.backend.core.utils.JsonUtils;
|
||||||
|
import com.kingsrook.qqq.frontend.materialdashboard.actions.formadjuster.RunFormAdjusterProcess;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Runs the workflows form adjusters through the current Material Dashboard
|
||||||
|
** form-adjuster process, the same way the UI API's table form-adjuster route
|
||||||
|
** does (path params + multipart-style form params) - not by calling them directly.
|
||||||
|
*******************************************************************************/
|
||||||
|
class WorkflowTestAssertionFormAdjusterTest extends BaseTest
|
||||||
|
{
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Test
|
||||||
|
void testVariableNameAdjusterThroughMaterialDashboardProcess() throws Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
Workflow workflow = WorkflowsTestDataSource.insertWorkflowAndInitialRevision(RecordWorkflowsDefinition.WORKFLOW_TYPE, TABLE_NAME_PERSON);
|
||||||
|
Integer scenarioId = new InsertAction().execute(new InsertInput(WorkflowTestScenario.TABLE_NAME).withRecordEntity(
|
||||||
|
new WorkflowTestScenario().withWorkflowId(workflow.getId()).withName("s").withApiName(API_NAME).withApiVersion(V3).withApiJson("{}"))).getRecords().get(0).getValueInteger("id");
|
||||||
|
|
||||||
|
Map<String, Object> output = runAdjuster("WorkflowTestAssertion.variableName", RunFormAdjusterProcess.EVENT_ON_CHANGE,
|
||||||
|
TABLE_NAME_PERSON + ".firstName", Map.of("workflowTestScenarioId", scenarioId));
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
Map<String, Object> expectedValueField = (Map<String, Object>) ((Map<String, Object>) output.get("updatedFieldMetaData")).get("expectedValue");
|
||||||
|
assertNotNull(expectedValueField);
|
||||||
|
assertTrue(String.valueOf(expectedValueField.get("label")).startsWith("Expected Value ("), "label: " + expectedValueField.get("label"));
|
||||||
|
assertEquals(List.of("expectedValue"), output.get("fieldsToClear"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
**
|
||||||
|
***************************************************************************/
|
||||||
|
private Map<String, Object> runAdjuster(String identifier, String event, String newValue, Map<String, Object> allValues) throws Exception
|
||||||
|
{
|
||||||
|
Map<String, List<String>> formParams = new HashMap<>();
|
||||||
|
formParams.put("event", List.of(event));
|
||||||
|
formParams.put("fieldName", List.of("variableName"));
|
||||||
|
formParams.put("newValue", List.of(newValue));
|
||||||
|
formParams.put("allValues", List.of(JsonUtils.toJson(allValues)));
|
||||||
|
|
||||||
|
RunProcessInput input = new RunProcessInput();
|
||||||
|
input.setProcessName(RunFormAdjusterProcess.NAME);
|
||||||
|
input.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.SKIP);
|
||||||
|
input.addValue("pathParams", new HashMap<>(Map.of("identifier", identifier, "event", event)));
|
||||||
|
input.addValue("formParams", (Serializable) formParams);
|
||||||
|
|
||||||
|
RunProcessOutput processOutput = new RunProcessAction().execute(input);
|
||||||
|
if(processOutput.getException().isPresent())
|
||||||
|
{
|
||||||
|
throw (processOutput.getException().get());
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
Map<String, Object> result = JsonUtils.toObject(processOutput.getValueString("responseString"), Map.class);
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in new issue
Block a user