From d3fa1df56f95ebcc223c965c8e4608678c984cd5 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Sun, 15 Jan 2023 19:30:57 -0600 Subject: [PATCH] Implementation of QContext everywhere, instead of passing QInstance and QSession in all ActionInputs --- .../actions/AbstractQActionBiConsumer.java | 8 + .../core/actions/AbstractQActionFunction.java | 8 + .../core/actions/async/AsyncJobManager.java | 5 + .../RecordAutomationStatusUpdater.java | 5 +- .../PollingAutomationPerTableRunner.java | 18 +- .../ChildInserterPostInsertCustomizer.java | 6 +- .../widgets/AbstractWidgetRenderer.java | 3 +- .../widgets/ChildRecordListRenderer.java | 6 +- ...lkTableActionProcessPermissionChecker.java | 3 +- .../permissions/PermissionsHelper.java | 5 + .../processes/RunBackendStepAction.java | 5 +- .../actions/processes/RunProcessAction.java | 15 +- .../core/actions/queues/SQSQueuePoller.java | 7 +- .../core/actions/reporting/ExportAction.java | 6 +- .../reporting/GenerateReportAction.java | 12 +- .../scripts/RunAssociatedScriptAction.java | 12 +- .../scripts/StoreAssociatedScriptAction.java | 24 +- .../scripts/TestScriptActionInterface.java | 3 +- ...iptLogAndScriptLogLineExecutionLogger.java | 9 +- .../core/actions/tables/DeleteAction.java | 2 +- .../core/actions/tables/GetAction.java | 15 +- .../tables/helpers/UniqueKeyHelper.java | 3 +- .../templates/RenderTemplateAction.java | 3 +- .../values/QPossibleValueTranslator.java | 5 +- .../SearchPossibleValueSourceAction.java | 3 +- .../backend/core/context/CapturedContext.java | 38 +++ .../qqq/backend/core/context/QContext.java | 247 ++++++++++++++++++ .../model/actions/AbstractActionInput.java | 68 +---- .../actions/AbstractTableActionInput.java | 49 +--- .../model/actions/metadata/MetaDataInput.java | 11 - .../metadata/ProcessMetaDataInput.java | 11 - .../actions/metadata/TableMetaDataInput.java | 11 - .../processes/RunBackendStepInput.java | 21 +- .../actions/processes/RunProcessInput.java | 15 +- .../model/actions/reporting/ExportInput.java | 23 -- .../model/actions/reporting/ReportInput.java | 23 -- .../actions/scripts/ExecuteCodeInput.java | 4 +- .../scripts/RunAssociatedScriptInput.java | 4 +- .../scripts/StoreAssociatedScriptInput.java | 4 +- .../actions/scripts/TestScriptInput.java | 4 +- .../tables/aggregate/AggregateInput.java | 11 - .../actions/tables/count/CountInput.java | 11 - .../actions/tables/delete/DeleteInput.java | 11 - .../model/actions/tables/get/GetInput.java | 23 -- .../actions/tables/insert/InsertInput.java | 11 - .../actions/tables/query/QueryInput.java | 24 +- .../actions/tables/update/UpdateInput.java | 13 +- .../SearchPossibleValueSourceInput.java | 13 +- .../actions/widgets/RenderWidgetInput.java | 38 +-- .../automation/RecordAutomationInput.java | 6 +- .../core/model/metadata/QInstance.java | 6 +- .../templates/ConvertHtmlToPdfInput.java | 4 +- .../model/templates/RenderTemplateInput.java | 4 +- .../TableBasedAuthenticationModule.java | 149 ++++++----- .../enumeration/EnumerationCountAction.java | 5 +- .../memory/MemoryRecordStore.java | 3 +- .../etl/basic/BasicETLExtractFunction.java | 3 +- .../etl/basic/BasicETLLoadFunction.java | 3 +- .../etl/streamed/StreamedETLBackendStep.java | 3 +- .../ExtractViaQueryStep.java | 6 +- .../LoadViaDeleteStep.java | 6 +- .../LoadViaInsertOrUpdateStep.java | 9 +- .../LoadViaInsertStep.java | 6 +- .../LoadViaUpdateStep.java | 6 +- .../StreamedBackendStepInput.java | 2 +- .../reports/ExecuteReportStep.java | 3 +- .../reports/PrepareReportForRecordStep.java | 3 +- .../AbstractTableSyncTransformStep.java | 3 +- .../processes/utils/GeneralProcessUtils.java | 38 +-- .../core/scheduler/ScheduleManager.java | 9 +- .../qqq/backend/core/utils/QLogger.java | 32 +-- .../kingsrook/qqq/backend/core/BaseTest.java | 61 +++++ .../actions/async/AsyncJobCallbackTest.java | 3 +- .../actions/async/AsyncJobManagerTest.java | 3 +- .../PollingAutomationPerTableRunnerTest.java | 34 +-- .../StandardScheduledExecutorTest.java | 14 +- ...ChildInserterPostInsertCustomizerTest.java | 19 +- .../QuickSightChartRendererTest.java | 7 +- .../dashboard/RenderWidgetActionTest.java | 10 +- .../widgets/ChildRecordListRendererTest.java | 20 +- .../widgets/ParentWidgetRendererTest.java | 22 +- .../widgets/ProcessWidgetRendererTest.java | 20 +- .../dashboard/widgets/USMapRendererTest.java | 20 +- .../actions/metadata/MetaDataActionTest.java | 42 +-- .../metadata/ProcessMetaDataActionTest.java | 9 +- .../metadata/TableMetaDataActionTest.java | 10 +- .../permissions/PermissionsHelperTest.java | 145 +++++----- .../ReportProcessPermissionCheckerTest.java | 12 +- .../processes/RunBackendStepActionTest.java | 9 +- .../actions/processes/RunProcessTest.java | 44 ++-- .../actions/reporting/ExportActionTest.java | 14 +- .../reporting/FormulaInterpreterTest.java | 3 +- .../reporting/GenerateReportActionTest.java | 37 ++- .../scripts/ExecuteCodeActionTest.java | 16 +- .../RunAssociatedScriptActionTest.java | 43 ++- .../StoreAssociatedScriptActionTest.java | 13 +- .../TestScriptActionInterfaceTest.java | 11 +- ...ogAndScriptLogLineExecutionLoggerTest.java | 10 +- ...ogAndScriptLogLineExecutionLoggerTest.java | 10 +- .../actions/tables/AggregateActionTest.java | 7 +- .../core/actions/tables/CountActionTest.java | 7 +- .../core/actions/tables/DeleteActionTest.java | 10 +- .../core/actions/tables/GetActionTest.java | 51 ++-- .../core/actions/tables/InsertActionTest.java | 28 +- .../core/actions/tables/QueryActionTest.java | 20 +- .../core/actions/tables/UpdateActionTest.java | 11 +- .../templates/ConvertHtmlToPdfActionTest.java | 11 +- .../templates/RenderTemplateActionTest.java | 14 +- .../values/QPossibleValueTranslatorTest.java | 20 +- .../actions/values/QValueFormatterTest.java | 3 +- .../SearchPossibleValueSourceActionTest.java | 16 +- .../values/ValueBehaviorApplierTest.java | 8 +- .../adapters/CsvToQRecordAdapterTest.java | 3 +- .../JsonToQFieldMappingAdapterTest.java | 7 +- .../adapters/JsonToQRecordAdapterTest.java | 12 +- .../core/adapters/QInstanceAdapterTest.java | 17 +- .../backend/core/context/QContextTest.java | 110 ++++++++ .../core/instances/QInstanceEnricherTest.java | 3 +- .../instances/QInstanceValidatorTest.java | 10 +- .../QMetaDataVariableInterpreterTest.java | 3 +- .../tables/query/QFilterCriteriaTest.java | 3 +- .../core/model/data/QRecordEntityTest.java | 3 +- .../core/model/metadata/QInstanceTest.java | 15 +- .../metadata/tables/QTableMetaDataTest.java | 3 +- .../core/model/session/QSessionTest.java | 3 +- .../QAuthenticationModuleDispatcherTest.java | 3 +- .../Auth0AuthenticationModuleTest.java | 7 +- ...ullyAnonymousAuthenticationModuleTest.java | 3 +- .../TableBasedAuthenticationModuleTest.java | 8 +- .../backend/QBackendModuleDispatcherTest.java | 8 +- .../backend/QBackendModuleInterfaceTest.java | 3 +- .../EnumerationCountActionTest.java | 14 +- .../EnumerationQueryActionTest.java | 20 +- .../memory/MemoryBackendModuleTest.java | 56 ++-- .../ExtractViaBasepullQueryStepTest.java | 6 +- .../bulk/delete/BulkDeleteTest.java | 9 +- .../bulk/edit/BulkEditTest.java | 9 +- .../bulk/insert/BulkInsertTest.java | 6 +- .../insert/BulkInsertTransformStepTest.java | 13 +- .../etl/basic/BasicETLProcessTest.java | 9 +- .../basic/BasicETLTransformFunctionTest.java | 3 +- .../etl/streamed/StreamedETLProcessTest.java | 9 +- .../LoadViaInsertOrUpdateStepTest.java | 10 +- .../NoopTransformStepTest.java | 7 +- .../StreamedETLWithFrontendProcessTest.java | 22 +- .../reports/BasicRunReportProcessTest.java | 8 +- .../RunReportForRecordProcessTest.java | 9 +- .../tablesync/TableSyncProcessTest.java | 10 +- .../utils/GeneralProcessUtilsTest.java | 89 +++---- .../utils/RecordLookupHelperTest.java | 17 +- .../core/scheduler/ScheduleManagerTest.java | 9 +- .../core/state/InMemoryStateProviderTest.java | 8 +- .../core/state/TempFileStateProviderTest.java | 8 +- .../core/utils/CollectionUtilsTest.java | 15 +- .../core/utils/ExceptionUtilsTest.java | 5 +- .../qqq/backend/core/utils/JsonUtilsTest.java | 3 +- .../backend/core/utils/ListingHashTest.java | 13 +- .../qqq/backend/core/utils/LogUtilsTest.java | 3 +- .../backend/core/utils/SleepUtilsTest.java | 5 +- .../backend/core/utils/StringUtilsTest.java | 3 +- .../qqq/backend/core/utils/TestUtils.java | 15 +- .../qqq/backend/core/utils/TimerTest.java | 3 +- .../backend/core/utils/ValueUtilsTest.java | 3 +- .../core/utils/aggregates/AggregatesTest.java | 3 +- .../utils/collections/MutableListTest.java | 3 +- .../utils/collections/MutableMapTest.java | 3 +- .../core/utils/lambdas/LambdasTest.java | 3 +- .../module/api/actions/BaseAPIActionUtil.java | 46 ++-- .../qqq/backend/module/api/BaseTest.java | 60 +++++ .../backend/module/api/EasyPostApiTest.java | 18 +- .../qqq/backend/module/api/TestUtils.java | 2 +- .../metadata/APIBackendMetaDataTest.java | 3 +- .../api/utils/QueryStringBuilderTest.java | 3 +- .../actions/AbstractBaseFilesystemAction.java | 3 +- .../backend/module/filesystem/BaseTest.java | 61 +++++ .../local/actions/FilesystemActionTest.java | 6 +- .../actions/FilesystemCountActionTest.java | 1 - .../actions/FilesystemInsertActionTest.java | 6 +- .../actions/FilesystemQueryActionTest.java | 3 +- .../BasicETLCleanupSourceFilesStepTest.java | 21 +- ...asicETLCollectSourceFileNamesStepTest.java | 7 +- .../StreamedETLFilesystemBackendStepTest.java | 7 +- .../sync/FilesystemSyncProcessS3Test.java | 16 +- .../sync/FilesystemSyncProcessTest.java | 11 +- .../module/filesystem/s3/BaseS3Test.java | 3 +- .../s3/actions/S3CountActionTest.java | 1 - .../s3/actions/S3InsertActionTest.java | 6 +- .../s3/actions/S3QueryActionTest.java | 1 - .../rdbms/actions/RDBMSQueryAction.java | 2 +- .../rdbms/actions/RDBMSUpdateAction.java | 5 +- .../qqq/backend/module/rdbms/BaseTest.java | 60 +++++ .../module/rdbms/actions/RDBMSActionTest.java | 4 +- .../actions/RDBMSAggregateActionTest.java | 17 +- .../rdbms/actions/RDBMSCountActionTest.java | 10 +- .../rdbms/actions/RDBMSDeleteActionTest.java | 5 +- .../rdbms/actions/RDBMSInsertActionTest.java | 1 - .../rdbms/actions/RDBMSQueryActionTest.java | 115 ++++---- .../rdbms/actions/RDBMSTransactionTest.java | 3 +- .../rdbms/actions/RDBMSUpdateActionTest.java | 1 - .../rdbms/jdbc/ConnectionManagerTest.java | 17 +- .../module/rdbms/jdbc/QueryManagerTest.java | 3 +- .../metadata/RDBMSBackendMetaDataTest.java | 3 +- .../GenerateReportActionRDBMSTest.java | 8 +- .../qqq/languages/javascript/BaseTest.java | 60 +++++ .../javascript/ExecuteCodeActionTest.java | 8 +- .../javalin/QJavalinImplementation.java | 44 ++-- .../javalin/QJavalinProcessHandler.java | 11 +- .../javalin/QJavalinScriptsHandler.java | 14 +- ...valinImplementationAuthenticationTest.java | 5 +- .../javalin/QJavalinScriptsHandlerTest.java | 40 ++- .../qqq/backend/javalin/TestUtils.java | 3 +- .../qqq/lambda/QStandardLambdaHandler.java | 4 +- .../picocli/QPicoCliImplementation.java | 33 +-- .../picocli/QPicoCliImplementationTest.java | 17 +- .../qqq/slack/QSlackImplementation.java | 11 +- .../kingsrook/sampleapp/SampleCliTest.java | 5 + .../sampleapp/SampleMetaDataProviderTest.java | 24 +- .../PersonsByCreateDateBarChartTest.java | 3 +- .../ClonePeopleTransformStepTest.java | 5 +- 219 files changed, 1955 insertions(+), 1581 deletions(-) create mode 100644 qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/context/CapturedContext.java create mode 100644 qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/context/QContext.java create mode 100644 qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/BaseTest.java create mode 100644 qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/context/QContextTest.java create mode 100644 qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/BaseTest.java create mode 100644 qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/BaseTest.java create mode 100644 qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/BaseTest.java create mode 100644 qqq-language-support-javascript/src/test/java/com/kingsrook/qqq/languages/javascript/BaseTest.java diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/AbstractQActionBiConsumer.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/AbstractQActionBiConsumer.java index bdd0d488..c22d3dac 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/AbstractQActionBiConsumer.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/AbstractQActionBiConsumer.java @@ -25,6 +25,8 @@ package com.kingsrook.qqq.backend.core.actions; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import com.kingsrook.qqq.backend.core.context.CapturedContext; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionOutput; @@ -50,11 +52,13 @@ public abstract class AbstractQActionBiConsumer executeAsync(I input, O output) { + CapturedContext capturedContext = QContext.capture(); CompletableFuture completableFuture = new CompletableFuture<>(); Executors.newCachedThreadPool().submit(() -> { try { + QContext.init(capturedContext); execute(input, output); completableFuture.complete(null); } @@ -62,6 +66,10 @@ public abstract class AbstractQActionBiConsumer executeAsync(I input) { + CapturedContext capturedContext = QContext.capture(); CompletableFuture completableFuture = new CompletableFuture<>(); Executors.newCachedThreadPool().submit(() -> { try { + QContext.init(capturedContext); O output = execute(input); completableFuture.complete(output); } @@ -62,6 +66,10 @@ public abstract class AbstractQActionFunction future = CompletableFuture.supplyAsync(() -> { + QContext.init(capturedContext); return (runAsyncJob(jobName, asyncJob, uuidAndTypeStateKey, asyncJobStatus)); }); @@ -153,6 +157,7 @@ public class AsyncJobManager finally { Thread.currentThread().setName(originalThreadName); + QContext.clear(); } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/automation/RecordAutomationStatusUpdater.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/automation/RecordAutomationStatusUpdater.java index 9028fc6d..80f9d220 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/automation/RecordAutomationStatusUpdater.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/automation/RecordAutomationStatusUpdater.java @@ -76,7 +76,7 @@ public class RecordAutomationStatusUpdater String className = stackTraceElement.getClassName(); if(className.contains("com.kingsrook.qqq.backend.core.actions.automation") && !className.equals(RecordAutomationStatusUpdater.class.getName()) && !className.endsWith("Test")) { - LOG.debug(session, "Avoiding re-setting automation status to PENDING_UPDATE while running an automation"); + LOG.debug("Avoiding re-setting automation status to PENDING_UPDATE while running an automation"); return (false); } } @@ -143,8 +143,7 @@ public class RecordAutomationStatusUpdater boolean didSetStatusField = setAutomationStatusInRecords(session, table, records, automationStatus); if(didSetStatusField) { - UpdateInput updateInput = new UpdateInput(instance); - updateInput.setSession(session); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(table.getName()); ///////////////////////////////////////////////////////////////////////////////////// diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/automation/polling/PollingAutomationPerTableRunner.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/automation/polling/PollingAutomationPerTableRunner.java index 78692fde..4be624a1 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/automation/polling/PollingAutomationPerTableRunner.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/automation/polling/PollingAutomationPerTableRunner.java @@ -39,6 +39,7 @@ import com.kingsrook.qqq.backend.core.actions.processes.QProcessCallback; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; import com.kingsrook.qqq.backend.core.actions.reporting.RecordPipe; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessOutput; @@ -175,6 +176,8 @@ public class PollingAutomationPerTableRunner implements Runnable @Override public void run() { + QContext.init(instance, sessionSupplier.get()); + String originalThreadName = Thread.currentThread().getName(); Thread.currentThread().setName(name + StandardScheduledExecutor.newThreadNameRandomSuffix()); LOG.debug("Running " + this.getClass().getSimpleName() + "[" + name + "]"); @@ -191,6 +194,7 @@ public class PollingAutomationPerTableRunner implements Runnable finally { Thread.currentThread().setName(originalThreadName); + QContext.clear(); } } @@ -199,7 +203,7 @@ public class PollingAutomationPerTableRunner implements Runnable /******************************************************************************* ** Query for and process records that have a PENDING_INSERT or PENDING_UPDATE status on a given table. *******************************************************************************/ - private void processTableInsertOrUpdate(QTableMetaData table, QSession session, AutomationStatus automationStatus, List actions) throws QException + public void processTableInsertOrUpdate(QTableMetaData table, QSession session, AutomationStatus automationStatus, List actions) throws QException { if(CollectionUtils.nullSafeIsEmpty(actions)) { @@ -219,8 +223,7 @@ public class PollingAutomationPerTableRunner implements Runnable asyncRecordPipeLoop.run("PollingAutomationRunner>Query>" + automationStatus + ">" + table.getName(), null, recordPipe, (status) -> { - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); AutomationStatusTrackingType statusTrackingType = automationDetails.getStatusTracking().getType(); @@ -318,8 +321,7 @@ public class PollingAutomationPerTableRunner implements Runnable *******************************************************************************/ private List getRecordsMatchingActionFilter(QSession session, QTableMetaData table, List records, TableAutomationAction action) throws QException { - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); QQueryFilter filter = new QQueryFilter(); @@ -368,8 +370,7 @@ public class PollingAutomationPerTableRunner implements Runnable // tell it to SKIP frontend steps. // // give the process a callback w/ a query filter that has the p-keys of these records. // ///////////////////////////////////////////////////////////////////////////////////////// - RunProcessInput runProcessInput = new RunProcessInput(instance); - runProcessInput.setSession(session); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(action.getProcessName()); runProcessInput.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.SKIP); runProcessInput.setCallback(new QProcessCallback() @@ -392,8 +393,7 @@ public class PollingAutomationPerTableRunner implements Runnable else if(action.getCodeReference() != null) { LOG.debug(" Executing action: [" + action.getName() + "] as code reference: " + action.getCodeReference()); - RecordAutomationInput input = new RecordAutomationInput(instance); - input.setSession(session); + RecordAutomationInput input = new RecordAutomationInput(); input.setTableName(table.getName()); input.setRecordList(records); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/customizers/ChildInserterPostInsertCustomizer.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/customizers/ChildInserterPostInsertCustomizer.java index b94ff98d..9bb38b0a 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/customizers/ChildInserterPostInsertCustomizer.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/customizers/ChildInserterPostInsertCustomizer.java @@ -113,8 +113,7 @@ public abstract class ChildInserterPostInsertCustomizer extends AbstractPostInse ///////////////////////// // insert the children // ///////////////////////// - InsertInput insertInput = new InsertInput(getInsertInput().getInstance()); - insertInput.setSession(getInsertInput().getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(getChildTableName()); insertInput.setRecords(childrenToInsert); insertInput.setTransaction(this.insertInput.getTransaction()); @@ -145,8 +144,7 @@ public abstract class ChildInserterPostInsertCustomizer extends AbstractPostInse //////////////////////////////////////////////////////////////////////////// // update the originally inserted records to reference their new children // //////////////////////////////////////////////////////////////////////////// - UpdateInput updateInput = new UpdateInput(insertInput.getInstance()); - updateInput.setSession(getInsertInput().getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(getInsertInput().getTableName()); updateInput.setRecords(recordsToUpdate); updateInput.setTransaction(this.insertInput.getTransaction()); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/AbstractWidgetRenderer.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/AbstractWidgetRenderer.java index a13c1e79..da5ebcd0 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/AbstractWidgetRenderer.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/AbstractWidgetRenderer.java @@ -89,8 +89,7 @@ public abstract class AbstractWidgetRenderer pvsLabels.add(pvsLabel); pvsNames.add(possibleValueSourceName); - SearchPossibleValueSourceInput pvsInput = new SearchPossibleValueSourceInput(input.getInstance()); - pvsInput.setSession(input.getSession()); + SearchPossibleValueSourceInput pvsInput = new SearchPossibleValueSourceInput(); pvsInput.setPossibleValueSourceName(possibleValueSourceName); if(dropdownData.getForeignKeyFieldName() != null) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRenderer.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRenderer.java index 95857a09..6004475a 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRenderer.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRenderer.java @@ -154,8 +154,7 @@ public class ChildRecordListRenderer extends AbstractWidgetRenderer // fetch the record that we're getting children for. // // e.g., the left-side of the join, with the input id // //////////////////////////////////////////////////////// - GetInput getInput = new GetInput(input.getInstance()); - getInput.setSession(input.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName(join.getLeftTable()); getInput.setPrimaryKey(id); GetOutput getOutput = new GetAction().execute(getInput); @@ -177,8 +176,7 @@ public class ChildRecordListRenderer extends AbstractWidgetRenderer } filter.setOrderBys(join.getOrderBys()); - QueryInput queryInput = new QueryInput(input.getInstance()); - queryInput.setSession(input.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(join.getRightTable()); queryInput.setShouldTranslatePossibleValues(true); queryInput.setShouldGenerateDisplayValues(true); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/permissions/BulkTableActionProcessPermissionChecker.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/permissions/BulkTableActionProcessPermissionChecker.java index 752e0df1..3a28ada0 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/permissions/BulkTableActionProcessPermissionChecker.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/permissions/BulkTableActionProcessPermissionChecker.java @@ -52,8 +52,7 @@ public class BulkTableActionProcessPermissionChecker implements CustomPermission String tableName = parts[0]; String bulkActionName = parts[1]; - AbstractTableActionInput tableActionInput = new AbstractTableActionInput(actionInput.getInstance()); - tableActionInput.setSession(actionInput.getSession()); + AbstractTableActionInput tableActionInput = new AbstractTableActionInput(); tableActionInput.setTableName(tableName); switch(bulkActionName) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/permissions/PermissionsHelper.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/permissions/PermissionsHelper.java index 500cea1b..ee112b9f 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/permissions/PermissionsHelper.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/permissions/PermissionsHelper.java @@ -387,6 +387,11 @@ public class PermissionsHelper *******************************************************************************/ public static QPermissionRules getEffectivePermissionRules(MetaDataWithPermissionRules metaDataWithPermissionRules, QInstance instance) { + if(metaDataWithPermissionRules.getPermissionRules() == null) + { + LOG.warn("Null permission rules on meta data object [" + metaDataWithPermissionRules.getClass().getSimpleName() + "][" + metaDataWithPermissionRules.getName() + "] - does the instance need enriched? Returning instance default rules."); + return (instance.getDefaultPermissionRules()); + } return (metaDataWithPermissionRules.getPermissionRules()); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunBackendStepAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunBackendStepAction.java index 1d242057..38172b49 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunBackendStepAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunBackendStepAction.java @@ -107,7 +107,7 @@ public class RunBackendStepAction return; } - List fieldsToGet = new ArrayList<>(); + List fieldsToGet = new ArrayList<>(); List requiredFieldsMissing = new ArrayList<>(); for(QFieldMetaData field : inputMetaData.getFieldList()) { @@ -175,8 +175,7 @@ public class RunBackendStepAction { if(CollectionUtils.nullSafeIsEmpty(runBackendStepInput.getRecords())) { - QueryInput queryInput = new QueryInput(runBackendStepInput.getInstance()); - queryInput.setSession(runBackendStepInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(inputMetaData.getRecordListMetaData().getTableName()); // todo - handle this being async (e.g., http) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessAction.java index f93cbf50..4899c3dc 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessAction.java @@ -295,11 +295,10 @@ public class RunProcessAction *******************************************************************************/ private void runBackendStep(RunProcessInput runProcessInput, QProcessMetaData process, RunProcessOutput runProcessOutput, UUIDAndTypeStateKey stateKey, QBackendStepMetaData backendStep, QProcessMetaData qProcessMetaData, ProcessState processState) throws Exception { - RunBackendStepInput runBackendStepInput = new RunBackendStepInput(runProcessInput.getInstance(), processState); + RunBackendStepInput runBackendStepInput = new RunBackendStepInput(processState); runBackendStepInput.setProcessName(process.getName()); runBackendStepInput.setStepName(backendStep.getName()); runBackendStepInput.setTableName(process.getTableName()); - runBackendStepInput.setSession(runProcessInput.getSession()); runBackendStepInput.setCallback(runProcessInput.getCallback()); runBackendStepInput.setFrontendStepBehavior(runProcessInput.getFrontendStepBehavior()); runBackendStepInput.setAsyncJobCallback(runProcessInput.getAsyncJobCallback()); @@ -444,8 +443,7 @@ public class RunProcessAction /////////////////////////////////////// // get the stored basepull timestamp // /////////////////////////////////////// - QueryInput queryInput = new QueryInput(runProcessInput.getInstance()); - queryInput.setSession(runProcessInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(basepullTableName); queryInput.setFilter(new QQueryFilter().withCriteria( new QFilterCriteria() @@ -473,8 +471,7 @@ public class RunProcessAction //////////// // update // //////////// - UpdateInput updateInput = new UpdateInput(runProcessInput.getInstance()); - updateInput.setSession(runProcessInput.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(basepullTableName); updateInput.setRecords(List.of(basepullRecord)); new UpdateAction().execute(updateInput); @@ -488,8 +485,7 @@ public class RunProcessAction //////////////////////////////// // insert new basepull record // //////////////////////////////// - InsertInput insertInput = new InsertInput(runProcessInput.getInstance()); - insertInput.setSession(runProcessInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(basepullTableName); insertInput.setRecords(List.of(basepullRecord)); new InsertAction().execute(insertInput); @@ -527,8 +523,7 @@ public class RunProcessAction /////////////////////////////////////// // get the stored basepull timestamp // /////////////////////////////////////// - QueryInput queryInput = new QueryInput(runProcessInput.getInstance()); - queryInput.setSession(runProcessInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(basepullTableName); queryInput.setFilter(new QQueryFilter().withCriteria( new QFilterCriteria() diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/queues/SQSQueuePoller.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/queues/SQSQueuePoller.java index efb24d22..f56f911c 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/queues/SQSQueuePoller.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/queues/SQSQueuePoller.java @@ -35,6 +35,7 @@ import com.amazonaws.services.sqs.model.Message; import com.amazonaws.services.sqs.model.ReceiveMessageRequest; import com.amazonaws.services.sqs.model.ReceiveMessageResult; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; +import com.kingsrook.qqq.backend.core.context.QContext; 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.metadata.QInstance; @@ -70,6 +71,8 @@ public class SQSQueuePoller implements Runnable @Override public void run() { + QContext.init(qInstance, sessionSupplier.get()); + String originalThreadName = Thread.currentThread().getName(); Thread.currentThread().setName("SQSPoller>" + queueMetaData.getName() + StandardScheduledExecutor.newThreadNameRandomSuffix()); LOG.debug("Running " + this.getClass().getSimpleName() + "[" + queueMetaData.getName() + "]"); @@ -125,8 +128,7 @@ public class SQSQueuePoller implements Runnable ///////////////////////////////////////////////////////////////////////////////////// try { - RunProcessInput runProcessInput = new RunProcessInput(qInstance); - runProcessInput.setSession(sessionSupplier.get()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(queueMetaData.getProcessName()); runProcessInput.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.SKIP); runProcessInput.addValue("bodies", bodies); @@ -165,6 +167,7 @@ public class SQSQueuePoller implements Runnable finally { Thread.currentThread().setName(originalThreadName); + QContext.clear(); } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/ExportAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/ExportAction.java index 98187f79..3ecd354c 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/ExportAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/ExportAction.java @@ -149,8 +149,7 @@ public class ExportAction // set up a query input // ////////////////////////// QueryAction queryAction = new QueryAction(); - QueryInput queryInput = new QueryInput(exportInput.getInstance()); - queryInput.setSession(exportInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(exportInput.getTableName()); queryInput.setFilter(exportInput.getQueryFilter()); queryInput.setLimit(exportInput.getLimit()); @@ -350,8 +349,7 @@ public class ExportAction if(exportInput.getLimit() == null || exportInput.getLimit() > reportFormat.getMaxRows()) { CountInterface countInterface = backendModule.getCountInterface(); - CountInput countInput = new CountInput(exportInput.getInstance()); - countInput.setSession(exportInput.getSession()); + CountInput countInput = new CountInput(); countInput.setTableName(exportInput.getTableName()); countInput.setFilter(exportInput.getQueryFilter()); CountOutput countOutput = countInterface.execute(countInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/GenerateReportAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/GenerateReportAction.java index b14e2ae3..835f8f70 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/GenerateReportAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/GenerateReportAction.java @@ -216,8 +216,7 @@ public class GenerateReportAction QMetaDataVariableInterpreter variableInterpreter = new QMetaDataVariableInterpreter(); variableInterpreter.addValueMap("input", reportInput.getInputValues()); - ExportInput exportInput = new ExportInput(reportInput.getInstance()); - exportInput.setSession(reportInput.getSession()); + ExportInput exportInput = new ExportInput(); exportInput.setReportFormat(reportFormat); exportInput.setFilename(reportInput.getFilename()); exportInput.setTitleRow(getTitle(reportView, variableInterpreter)); @@ -277,8 +276,7 @@ public class GenerateReportAction { transformStep = QCodeLoader.getBackendStep(AbstractTransformStep.class, tableView.getRecordTransformStep()); - transformStepInput = new RunBackendStepInput(reportInput.getInstance()); - transformStepInput.setSession(reportInput.getSession()); + transformStepInput = new RunBackendStepInput(); transformStepInput.setValues(reportInput.getInputValues()); transformStepOutput = new RunBackendStepOutput(); @@ -304,8 +302,7 @@ public class GenerateReportAction QQueryFilter queryFilter = dataSource.getQueryFilter() == null ? new QQueryFilter() : dataSource.getQueryFilter().clone(); setInputValuesInQueryFilter(reportInput, queryFilter); - QueryInput queryInput = new QueryInput(reportInput.getInstance()); - queryInput.setSession(reportInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setRecordPipe(recordPipe); queryInput.setTableName(dataSource.getSourceTable()); queryInput.setFilter(queryFilter); @@ -597,8 +594,7 @@ public class GenerateReportAction QTableMetaData table = reportInput.getInstance().getTable(dataSource.getSourceTable()); SummaryOutput summaryOutput = computeSummaryRowsForView(reportInput, view, table); - ExportInput exportInput = new ExportInput(reportInput.getInstance()); - exportInput.setSession(reportInput.getSession()); + ExportInput exportInput = new ExportInput(); exportInput.setReportFormat(reportFormat); exportInput.setFilename(reportInput.getFilename()); exportInput.setTitleRow(summaryOutput.titleRow); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/RunAssociatedScriptAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/RunAssociatedScriptAction.java index 9a88b15a..3238a92c 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/RunAssociatedScriptAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/RunAssociatedScriptAction.java @@ -70,8 +70,7 @@ public class RunAssociatedScriptAction ScriptRevision scriptRevision = getCurrentScriptRevision(input, script.getCurrentScriptRevisionId()); - ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(input.getInstance()); - executeCodeInput.setSession(input.getSession()); + ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(); executeCodeInput.setInput(new HashMap<>(input.getInputValues())); executeCodeInput.setContext(new HashMap<>()); if(input.getOutputObject() != null) @@ -93,8 +92,7 @@ public class RunAssociatedScriptAction *******************************************************************************/ private ScriptRevision getCurrentScriptRevision(RunAssociatedScriptInput input, Serializable scriptRevisionId) throws QException { - GetInput getInput = new GetInput(input.getInstance()); - getInput.setSession(input.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName("scriptRevision"); getInput.setPrimaryKey(scriptRevisionId); GetOutput getOutput = new GetAction().execute(getInput); @@ -114,8 +112,7 @@ public class RunAssociatedScriptAction *******************************************************************************/ private Script getScript(RunAssociatedScriptInput input, Serializable scriptId) throws QException { - GetInput getInput = new GetInput(input.getInstance()); - getInput.setSession(input.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName("script"); getInput.setPrimaryKey(scriptId); GetOutput getOutput = new GetAction().execute(getInput); @@ -136,8 +133,7 @@ public class RunAssociatedScriptAction *******************************************************************************/ private Serializable getScriptId(RunAssociatedScriptInput input) throws QException { - GetInput getInput = new GetInput(input.getInstance()); - getInput.setSession(input.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName(input.getCodeReference().getRecordTable()); getInput.setPrimaryKey(input.getCodeReference().getRecordPrimaryKey()); GetOutput getOutput = new GetAction().execute(getInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptAction.java index 884e2f19..1d2d8848 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptAction.java @@ -83,8 +83,7 @@ public class StoreAssociatedScriptAction ///////////////////////////////////////////////////////////// QRecord associatedRecord; { - GetInput getInput = new GetInput(input.getInstance()); - getInput.setSession(input.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName(input.getTableName()); getInput.setPrimaryKey(input.getRecordPrimaryKey()); getInput.setShouldGenerateDisplayValues(true); @@ -107,8 +106,7 @@ public class StoreAssociatedScriptAction //////////////////////////////////////////////////////////////////// // get the script type - that'll be part of the new script's name // //////////////////////////////////////////////////////////////////// - GetInput getInput = new GetInput(input.getInstance()); - getInput.setSession(input.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName("scriptType"); getInput.setPrimaryKey(associatedScript.getScriptTypeId()); getInput.setShouldGenerateDisplayValues(true); @@ -125,8 +123,7 @@ public class StoreAssociatedScriptAction script = new QRecord(); script.setValue("scriptTypeId", associatedScript.getScriptTypeId()); script.setValue("name", associatedRecord.getRecordLabel() + " - " + scriptType.getRecordLabel()); - InsertInput insertInput = new InsertInput(input.getInstance()); - insertInput.setSession(input.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("script"); insertInput.setRecords(List.of(script)); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -135,8 +132,7 @@ public class StoreAssociatedScriptAction ///////////////////////////////////////////////////////////// // update the associated record to point at the new script // ///////////////////////////////////////////////////////////// - UpdateInput updateInput = new UpdateInput(input.getInstance()); - updateInput.setSession(input.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(input.getTableName()); updateInput.setRecords(List.of(new QRecord() .withValue(table.getPrimaryKeyField(), associatedRecord.getValue(table.getPrimaryKeyField())) @@ -149,15 +145,13 @@ public class StoreAssociatedScriptAction //////////////////////////////////////// // get the existing script, to update // //////////////////////////////////////// - GetInput getInput = new GetInput(input.getInstance()); - getInput.setSession(input.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName("script"); getInput.setPrimaryKey(existingScriptId); GetOutput getOutput = new GetAction().execute(getInput); script = getOutput.getRecord(); - QueryInput queryInput = new QueryInput(input.getInstance()); - queryInput.setSession(input.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName("scriptRevision"); queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria("scriptId", QCriteriaOperator.EQUALS, List.of(script.getValue("id")))) @@ -202,8 +196,7 @@ public class StoreAssociatedScriptAction scriptRevision.setValue("author", "Unknown"); } - InsertInput insertInput = new InsertInput(input.getInstance()); - insertInput.setSession(input.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("scriptRevision"); insertInput.setRecords(List.of(scriptRevision)); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -213,8 +206,7 @@ public class StoreAssociatedScriptAction // update the script to point at the new revision // //////////////////////////////////////////////////// script.setValue("currentScriptRevisionId", scriptRevision.getValue("id")); - UpdateInput updateInput = new UpdateInput(input.getInstance()); - updateInput.setSession(input.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName("script"); updateInput.setRecords(List.of(script)); new UpdateAction().execute(updateInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/TestScriptActionInterface.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/TestScriptActionInterface.java index d2cf509f..47d741f8 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/TestScriptActionInterface.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/TestScriptActionInterface.java @@ -80,8 +80,7 @@ public interface TestScriptActionInterface *******************************************************************************/ default void execute(TestScriptInput input, TestScriptOutput output) throws QException { - ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(input.getInstance()); - executeCodeInput.setSession(input.getSession()); + ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(); executeCodeInput.setContext(new HashMap<>()); executeCodeInput.setCodeReference(input.getCodeReference()); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/StoreScriptLogAndScriptLogLineExecutionLogger.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/StoreScriptLogAndScriptLogLineExecutionLogger.java index 6e0b84fc..c9534d2c 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/StoreScriptLogAndScriptLogLineExecutionLogger.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/StoreScriptLogAndScriptLogLineExecutionLogger.java @@ -66,8 +66,7 @@ public class StoreScriptLogAndScriptLogLineExecutionLogger extends BuildScriptLo { super.acceptExecutionStart(executeCodeInput); - InsertInput insertInput = new InsertInput(executeCodeInput.getInstance()); - insertInput.setSession(executeCodeInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("scriptLog"); insertInput.setRecords(List.of(getScriptLog())); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -112,16 +111,14 @@ public class StoreScriptLogAndScriptLogLineExecutionLogger extends BuildScriptLo try { updateHeaderAtEnd(output, exception); - UpdateInput updateInput = new UpdateInput(executeCodeInput.getInstance()); - updateInput.setSession(executeCodeInput.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName("scriptLog"); updateInput.setRecords(List.of(getScriptLog())); new UpdateAction().execute(updateInput); if(CollectionUtils.nullSafeHasContents(getScriptLogLines())) { - InsertInput insertInput = new InsertInput(executeCodeInput.getInstance()); - insertInput.setSession(executeCodeInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("scriptLogLine"); insertInput.setRecords(getScriptLogLines()); new InsertAction().execute(insertInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java index 21ce7bee..166ffaab 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java @@ -102,7 +102,7 @@ public class DeleteAction QBackendModuleDispatcher qBackendModuleDispatcher = new QBackendModuleDispatcher(); QBackendModuleInterface qModule = qBackendModuleDispatcher.getQBackendModule(deleteInput.getBackend()); - QueryInput queryInput = new QueryInput(deleteInput.getInstance(), deleteInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(deleteInput.getTableName()); queryInput.setFilter(deleteInput.getQueryFilter()); QueryOutput queryOutput = qModule.getQueryInterface().execute(queryInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/GetAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/GetAction.java index e6b2329b..663ae0ec 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/GetAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/GetAction.java @@ -123,8 +123,7 @@ public class GetAction { QRecord recordToCache = mapSourceRecordToCacheRecord(table, recordFromSource); - InsertInput insertInput = new InsertInput(getInput.getInstance()); - insertInput.setSession(getInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(getInput.getTableName()); insertInput.setRecords(List.of(recordToCache)); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -190,8 +189,7 @@ public class GetAction QRecord recordToCache = mapSourceRecordToCacheRecord(table, recordFromSource); recordToCache.setValue(table.getPrimaryKeyField(), cachedRecord.getValue(table.getPrimaryKeyField())); - UpdateInput updateInput = new UpdateInput(getInput.getInstance()); - updateInput.setSession(getInput.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(getInput.getTableName()); updateInput.setRecords(List.of(recordToCache)); UpdateOutput updateOutput = new UpdateAction().execute(updateInput); @@ -203,8 +201,7 @@ public class GetAction ///////////////////////////////////////////////////////////////////////////// // if the record is no longer in the source, then remove it from the cache // ///////////////////////////////////////////////////////////////////////////// - DeleteInput deleteInput = new DeleteInput(getInput.getInstance()); - deleteInput.setSession(getInput.getSession()); + DeleteInput deleteInput = new DeleteInput(); deleteInput.setTableName(getInput.getTableName()); deleteInput.setPrimaryKeys(List.of(getOutput.getRecord().getValue(table.getPrimaryKeyField()))); new DeleteAction().execute(deleteInput); @@ -252,8 +249,7 @@ public class GetAction ///////////////////////////////////////////////////// // do a Get on the source table, by the unique key // ///////////////////////////////////////////////////// - GetInput sourceGetInput = new GetInput(getInput.getInstance()); - sourceGetInput.setSession(getInput.getSession()); + GetInput sourceGetInput = new GetInput(); sourceGetInput.setTableName(sourceTableName); sourceGetInput.setUniqueKey(getInput.getUniqueKey()); GetOutput sourceGetOutput = new GetAction().execute(sourceGetInput); @@ -270,8 +266,7 @@ public class GetAction @Override public GetOutput execute(GetInput getInput) throws QException { - QueryInput queryInput = new QueryInput(getInput.getInstance()); - queryInput.setSession(getInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(getInput.getTableName()); ////////////////////////////////////////////////// diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/helpers/UniqueKeyHelper.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/helpers/UniqueKeyHelper.java index 15e2ca03..55a17644 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/helpers/UniqueKeyHelper.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/helpers/UniqueKeyHelper.java @@ -61,8 +61,7 @@ public class UniqueKeyHelper Set> existingRecords = new HashSet<>(); if(ukFieldNames != null) { - QueryInput queryInput = new QueryInput(actionInput.getInstance()); - queryInput.setSession(actionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); queryInput.setTransaction(transaction); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/templates/RenderTemplateAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/templates/RenderTemplateAction.java index 423fe26a..5449c942 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/templates/RenderTemplateAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/templates/RenderTemplateAction.java @@ -82,8 +82,7 @@ public class RenderTemplateAction extends AbstractQActionFunction context, String code) throws QException { - RenderTemplateInput renderTemplateInput = new RenderTemplateInput(parentActionInput.getInstance()); - renderTemplateInput.setSession(parentActionInput.getSession()); + RenderTemplateInput renderTemplateInput = new RenderTemplateInput(); renderTemplateInput.setCode(code); renderTemplateInput.setContext(context); renderTemplateInput.setTemplateType(templateType); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QPossibleValueTranslator.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QPossibleValueTranslator.java index f1272be1..ef4f63f8 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QPossibleValueTranslator.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QPossibleValueTranslator.java @@ -76,6 +76,8 @@ public class QPossibleValueTranslator /////////////////////////////////////////////////////// private Map> possibleValueCache; + // todo not commit - remove instance & session - use Context + /******************************************************************************* @@ -503,8 +505,7 @@ public class QPossibleValueTranslator for(List page : CollectionUtils.getPages(values, 1000)) { - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); queryInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria(primaryKeyField, QCriteriaOperator.IN, page))); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/SearchPossibleValueSourceAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/SearchPossibleValueSourceAction.java index 369785ed..a0ba2249 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/SearchPossibleValueSourceAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/SearchPossibleValueSourceAction.java @@ -153,8 +153,7 @@ public class SearchPossibleValueSourceAction { SearchPossibleValueSourceOutput output = new SearchPossibleValueSourceOutput(); - QueryInput queryInput = new QueryInput(input.getInstance()); - queryInput.setSession(input.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(possibleValueSource.getTableName()); QTableMetaData table = input.getInstance().getTable(possibleValueSource.getTableName()); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/context/CapturedContext.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/context/CapturedContext.java new file mode 100644 index 00000000..1d1a52bb --- /dev/null +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/context/CapturedContext.java @@ -0,0 +1,38 @@ +/* + * QQQ - Low-code Application Framework for Engineers. + * Copyright (C) 2021-2023. 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 . + */ + +package com.kingsrook.qqq.backend.core.context; + + +import java.util.Stack; +import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; +import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.session.QSession; + + +/******************************************************************************* + ** record containing the values managed by QContext. + *******************************************************************************/ +public record CapturedContext(QInstance qInstance, QSession qSession, QBackendTransaction qBackendTransaction, Stack actionStack) +{ + +} diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/context/QContext.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/context/QContext.java new file mode 100644 index 00000000..3d666c07 --- /dev/null +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/context/QContext.java @@ -0,0 +1,247 @@ +/* + * QQQ - Low-code Application Framework for Engineers. + * Copyright (C) 2021-2022. 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 . + */ + +package com.kingsrook.qqq.backend.core.context; + + +import java.util.Stack; +import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; +import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException; +import com.kingsrook.qqq.backend.core.instances.QInstanceValidator; +import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.session.QSession; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + + +/******************************************************************************* + ** A collection of thread-local variables, to define the current context of the + ** QQQ code that is running. e.g., what QInstance is being used, what QSession + ** is active, etc. + *******************************************************************************/ +public class QContext +{ + private static final Logger LOG = LogManager.getLogger(QContext.class); + + private static ThreadLocal qInstanceThreadLocal = new ThreadLocal<>(); + private static ThreadLocal qSessionThreadLocal = new ThreadLocal<>(); + private static ThreadLocal qBackendTransactionThreadLocal = new ThreadLocal<>(); + private static ThreadLocal> actionStackThreadLocal = new ThreadLocal<>(); + + + + /******************************************************************************* + ** private constructor - class is not meant to be instantiated. + *******************************************************************************/ + private QContext() + { + } + + + + /******************************************************************************* + ** Most common method to set or init the context - e.g., set the current thread + ** with a QInstance and QSession. + *******************************************************************************/ + public static void init(QInstance qInstance, QSession qSession) + { + init(qInstance, qSession, null, null); + } + + + + /******************************************************************************* + ** Full flavor init method - also take a transaction and action input (to seed the stack). + *******************************************************************************/ + public static void init(QInstance qInstance, QSession qSession, QBackendTransaction transaction, AbstractActionInput actionInput) + { + qInstanceThreadLocal.set(qInstance); + qSessionThreadLocal.set(qSession); + qBackendTransactionThreadLocal.set(transaction); + + actionStackThreadLocal.set(new Stack<>()); + if(actionInput != null) + { + actionStackThreadLocal.get().add(actionInput); + } + + if(!qInstance.getHasBeenValidated()) + { + try + { + new QInstanceValidator().validate(qInstance); + } + catch(QInstanceValidationException e) + { + LOG.warn(e); + throw (new IllegalArgumentException("QInstance failed validation" + e.getMessage(), e)); + } + } + } + + + + /******************************************************************************* + ** Init a new thread with the context captured from a different thread. e.g., + ** when starting some async task. + *******************************************************************************/ + public static void init(CapturedContext capturedContext) + { + init(capturedContext.qInstance(), capturedContext.qSession(), capturedContext.qBackendTransaction(), null); + actionStackThreadLocal.set(capturedContext.actionStack()); + } + + + + /******************************************************************************* + ** Capture all values from the current thread - meant to be used with the init + ** overload that takes a CapturedContext, for setting up a child thread. + *******************************************************************************/ + public static CapturedContext capture() + { + return (new CapturedContext(getQInstance(), getQSession(), getQBackendTransaction(), getActionStack())); + } + + + + /******************************************************************************* + ** Clear all values in the current thread. + *******************************************************************************/ + public static void clear() + { + qInstanceThreadLocal.remove(); + qSessionThreadLocal.remove(); + qBackendTransactionThreadLocal.remove(); + actionStackThreadLocal.remove(); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static QInstance getQInstance() + { + return (qInstanceThreadLocal.get()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static QSession getQSession() + { + return (qSessionThreadLocal.get()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static QBackendTransaction getQBackendTransaction() + { + return (qBackendTransactionThreadLocal.get()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static Stack getActionStack() + { + return (actionStackThreadLocal.get()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void pushAction(AbstractActionInput action) + { + if(actionStackThreadLocal.get() == null) + { + actionStackThreadLocal.set(new Stack<>()); + } + actionStackThreadLocal.get().push(action); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void popAction() + { + try + { + actionStackThreadLocal.get().pop(); + } + catch(Exception e) + { + LOG.debug("Error popping action stack", e); + } + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void setQInstance(QInstance qInstance) + { + qInstanceThreadLocal.set(qInstance); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void setQSession(QSession qSession) + { + qSessionThreadLocal.set(qSession); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void setTransaction(QBackendTransaction transaction) + { + qBackendTransactionThreadLocal.set(transaction); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void clearTransaction() + { + qBackendTransactionThreadLocal.remove(); + } +} diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/AbstractActionInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/AbstractActionInput.java index a771475d..2edbe935 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/AbstractActionInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/AbstractActionInput.java @@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.core.model.actions; import java.util.UUID; import com.kingsrook.qqq.backend.core.actions.async.AsyncJobCallback; import com.kingsrook.qqq.backend.core.actions.async.AsyncJobStatus; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException; import com.kingsrook.qqq.backend.core.instances.QInstanceValidator; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; @@ -42,9 +43,6 @@ public class AbstractActionInput { private static final Logger LOG = LogManager.getLogger(AbstractActionInput.class); - protected QInstance instance; - protected QSession session; - private AsyncJobCallback asyncJobCallback; @@ -58,30 +56,9 @@ public class AbstractActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public AbstractActionInput(QInstance instance) - { - this.instance = instance; - validateInstance(instance); - } - - - - /******************************************************************************* - ** - *******************************************************************************/ - public AbstractActionInput(QInstance instance, QSession session) - { - this(instance); - this.session = session; - } - - - /******************************************************************************* ** performance instance validation (if not previously done). + * // todo - verify this is happening (e.g., when context is set i guess) *******************************************************************************/ private void validateInstance(QInstance instance) { @@ -110,7 +87,7 @@ public class AbstractActionInput *******************************************************************************/ public QAuthenticationMetaData getAuthenticationMetaData() { - return (instance.getAuthentication()); + return (getInstance().getAuthentication()); } @@ -121,19 +98,7 @@ public class AbstractActionInput *******************************************************************************/ public QInstance getInstance() { - return instance; - } - - - - /******************************************************************************* - ** Setter for instance - ** - *******************************************************************************/ - public void setInstance(QInstance instance) - { - validateInstance(instance); - this.instance = instance; + return (QContext.getQInstance()); } @@ -144,18 +109,7 @@ public class AbstractActionInput *******************************************************************************/ public QSession getSession() { - return session; - } - - - - /******************************************************************************* - ** Setter for session - ** - *******************************************************************************/ - public void setSession(QSession session) - { - this.session = session; + return (QContext.getQSession()); } @@ -194,18 +148,6 @@ public class AbstractActionInput *******************************************************************************/ public AbstractActionInput withInstance(QInstance instance) { - this.instance = instance; - return (this); - } - - - - /******************************************************************************* - ** Fluent setter for session - *******************************************************************************/ - public AbstractActionInput withSession(QSession session) - { - this.session = session; return (this); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/AbstractTableActionInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/AbstractTableActionInput.java index 74295d6a..c62bf6f8 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/AbstractTableActionInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/AbstractTableActionInput.java @@ -22,10 +22,9 @@ package com.kingsrook.qqq.backend.core.model.actions; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; -import com.kingsrook.qqq.backend.core.model.session.QSession; /******************************************************************************* @@ -38,26 +37,6 @@ public class AbstractTableActionInput extends AbstractActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public QBackendMetaData getBackend() - { - return (instance.getBackendForTable(getTableName())); - } - - - - /******************************************************************************* - ** - *******************************************************************************/ - public QTableMetaData getTable() - { - return (instance.getTable(getTableName())); - } - - - /******************************************************************************* ** *******************************************************************************/ @@ -70,9 +49,19 @@ public class AbstractTableActionInput extends AbstractActionInput /******************************************************************************* ** *******************************************************************************/ - public AbstractTableActionInput(QInstance instance) + public QBackendMetaData getBackend() { - super(instance); + return (QContext.getQInstance().getBackendForTable(getTableName())); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public QTableMetaData getTable() + { + return (QContext.getQInstance().getTable(getTableName())); } @@ -108,16 +97,4 @@ public class AbstractTableActionInput extends AbstractActionInput return (this); } - - - /******************************************************************************* - ** Fluent setter for session - *******************************************************************************/ - @Override - public AbstractTableActionInput withSession(QSession session) - { - super.withSession(session); - return (this); - } - } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/MetaDataInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/MetaDataInput.java index c2f24077..f450493d 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/MetaDataInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/MetaDataInput.java @@ -23,7 +23,6 @@ package com.kingsrook.qqq.backend.core.model.actions.metadata; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -40,14 +39,4 @@ public class MetaDataInput extends AbstractActionInput { } - - - /******************************************************************************* - ** - *******************************************************************************/ - public MetaDataInput(QInstance instance) - { - super(instance); - } - } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/ProcessMetaDataInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/ProcessMetaDataInput.java index 9754f361..1961111b 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/ProcessMetaDataInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/ProcessMetaDataInput.java @@ -23,7 +23,6 @@ package com.kingsrook.qqq.backend.core.model.actions.metadata; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -45,16 +44,6 @@ public class ProcessMetaDataInput extends AbstractActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public ProcessMetaDataInput(QInstance instance) - { - super(instance); - } - - - /******************************************************************************* ** Getter for processName ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/TableMetaDataInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/TableMetaDataInput.java index e3ee9486..dda312ce 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/TableMetaDataInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/metadata/TableMetaDataInput.java @@ -23,7 +23,6 @@ package com.kingsrook.qqq.backend.core.model.actions.metadata; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -40,14 +39,4 @@ public class TableMetaDataInput extends AbstractTableActionInput { } - - - /******************************************************************************* - ** - *******************************************************************************/ - public TableMetaDataInput(QInstance instance) - { - super(instance); - } - } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunBackendStepInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunBackendStepInput.java index ec37ec0a..18d63f75 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunBackendStepInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunBackendStepInput.java @@ -31,9 +31,9 @@ import java.util.UUID; import com.kingsrook.qqq.backend.core.actions.async.AsyncJobCallback; import com.kingsrook.qqq.backend.core.actions.async.AsyncJobStatus; import com.kingsrook.qqq.backend.core.actions.processes.QProcessCallback; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.processes.QStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.utils.ValueUtils; @@ -73,20 +73,8 @@ public class RunBackendStepInput extends AbstractActionInput /******************************************************************************* ** *******************************************************************************/ - public RunBackendStepInput(QInstance instance) + public RunBackendStepInput(ProcessState processState) { - super(instance); - processState = new ProcessState(); - } - - - - /******************************************************************************* - ** - *******************************************************************************/ - public RunBackendStepInput(QInstance instance, ProcessState processState) - { - super(instance); this.processState = processState; } @@ -102,7 +90,6 @@ public class RunBackendStepInput extends AbstractActionInput public void cloneFieldsInto(RunBackendStepInput target) { target.setStepName(getStepName()); - target.setSession(getSession()); target.setTableName(getTableName()); target.setProcessName(getProcessName()); target.setAsyncJobCallback(getAsyncJobCallback()); @@ -117,7 +104,7 @@ public class RunBackendStepInput extends AbstractActionInput *******************************************************************************/ public QStepMetaData getStepMetaData() { - return (instance.getProcessStep(getProcessName(), getStepName())); + return (QContext.getQInstance().getProcessStep(getProcessName(), getStepName())); } @@ -200,7 +187,7 @@ public class RunBackendStepInput extends AbstractActionInput return (null); } - return (instance.getTable(tableName)); + return (QContext.getQInstance().getTable(tableName)); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunProcessInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunProcessInput.java index 016e12ba..15e0e063 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunProcessInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunProcessInput.java @@ -27,9 +27,9 @@ import java.util.List; import java.util.Map; import com.kingsrook.qqq.backend.core.actions.async.AsyncJobCallback; import com.kingsrook.qqq.backend.core.actions.processes.QProcessCallback; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; @@ -71,17 +71,6 @@ public class RunProcessInput extends AbstractActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public RunProcessInput(QInstance instance) - { - super(instance); - processState = new ProcessState(); - } - - - /******************************************************************************* ** e.g., for steps after the first step in a process, seed the data in a run ** function request from a process state. @@ -99,7 +88,7 @@ public class RunProcessInput extends AbstractActionInput *******************************************************************************/ public QProcessMetaData getProcessMetaData() { - return (instance.getProcess(getProcessName())); + return (QContext.getQInstance().getProcess(getProcessName())); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/reporting/ExportInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/reporting/ExportInput.java index a90826d8..b774ed73 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/reporting/ExportInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/reporting/ExportInput.java @@ -26,8 +26,6 @@ import java.io.OutputStream; import java.util.List; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; /******************************************************************************* @@ -56,27 +54,6 @@ public class ExportInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public ExportInput(QInstance instance) - { - super(instance); - } - - - - /******************************************************************************* - ** - *******************************************************************************/ - public ExportInput(QInstance instance, QSession session) - { - super(instance); - setSession(session); - } - - - /******************************************************************************* ** Getter for queryFilter ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/reporting/ReportInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/reporting/ReportInput.java index 60b7af34..e712a79e 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/reporting/ReportInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/reporting/ReportInput.java @@ -27,8 +27,6 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; /******************************************************************************* @@ -54,27 +52,6 @@ public class ReportInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public ReportInput(QInstance instance) - { - super(instance); - } - - - - /******************************************************************************* - ** - *******************************************************************************/ - public ReportInput(QInstance instance, QSession session) - { - super(instance); - setSession(session); - } - - - /******************************************************************************* ** Getter for reportName ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/ExecuteCodeInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/ExecuteCodeInput.java index 6bb4df7d..eed42565 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/ExecuteCodeInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/ExecuteCodeInput.java @@ -27,7 +27,6 @@ import java.util.HashMap; import java.util.Map; import com.kingsrook.qqq.backend.core.actions.scripts.logging.QCodeExecutionLoggerInterface; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; @@ -47,9 +46,8 @@ public class ExecuteCodeInput extends AbstractActionInput ** Constructor ** *******************************************************************************/ - public ExecuteCodeInput(QInstance qInstance) + public ExecuteCodeInput() { - super(qInstance); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/RunAssociatedScriptInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/RunAssociatedScriptInput.java index 77acfe43..40a5ce3d 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/RunAssociatedScriptInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/RunAssociatedScriptInput.java @@ -25,7 +25,6 @@ package com.kingsrook.qqq.backend.core.model.actions.scripts; import java.io.Serializable; import java.util.Map; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.code.AssociatedScriptCodeReference; @@ -44,9 +43,8 @@ public class RunAssociatedScriptInput extends AbstractTableActionInput /******************************************************************************* ** *******************************************************************************/ - public RunAssociatedScriptInput(QInstance qInstance) + public RunAssociatedScriptInput() { - super(qInstance); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/StoreAssociatedScriptInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/StoreAssociatedScriptInput.java index 4f3915b4..1d522c38 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/StoreAssociatedScriptInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/StoreAssociatedScriptInput.java @@ -24,7 +24,6 @@ package com.kingsrook.qqq.backend.core.model.actions.scripts; import java.io.Serializable; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -44,9 +43,8 @@ public class StoreAssociatedScriptInput extends AbstractTableActionInput ** Constructor ** *******************************************************************************/ - public StoreAssociatedScriptInput(QInstance instance) + public StoreAssociatedScriptInput() { - super(instance); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/TestScriptInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/TestScriptInput.java index 4021e27b..8a116221 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/TestScriptInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/scripts/TestScriptInput.java @@ -25,7 +25,6 @@ package com.kingsrook.qqq.backend.core.model.actions.scripts; import java.io.Serializable; import java.util.Map; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; @@ -42,9 +41,8 @@ public class TestScriptInput extends AbstractTableActionInput /******************************************************************************* ** *******************************************************************************/ - public TestScriptInput(QInstance qInstance) + public TestScriptInput() { - super(qInstance); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/aggregate/AggregateInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/aggregate/AggregateInput.java index 6443cc4e..6e292b4e 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/aggregate/AggregateInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/aggregate/AggregateInput.java @@ -27,7 +27,6 @@ import java.util.List; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryJoin; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -53,16 +52,6 @@ public class AggregateInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public AggregateInput(QInstance instance) - { - super(instance); - } - - - /******************************************************************************* ** Getter for filter ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/count/CountInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/count/CountInput.java index 622e0001..09ff116c 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/count/CountInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/count/CountInput.java @@ -27,7 +27,6 @@ import java.util.List; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryJoin; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -51,16 +50,6 @@ public class CountInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public CountInput(QInstance instance) - { - super(instance); - } - - - /******************************************************************************* ** Getter for filter ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/delete/DeleteInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/delete/DeleteInput.java index ec7c1805..778118b3 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/delete/DeleteInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/delete/DeleteInput.java @@ -27,7 +27,6 @@ import java.util.List; import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -51,16 +50,6 @@ public class DeleteInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public DeleteInput(QInstance instance) - { - super(instance); - } - - - /******************************************************************************* ** Getter for transaction ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/get/GetInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/get/GetInput.java index ccb3bb1f..5e28cf88 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/get/GetInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/get/GetInput.java @@ -26,8 +26,6 @@ import java.io.Serializable; import java.util.Map; import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; /******************************************************************************* @@ -55,27 +53,6 @@ public class GetInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public GetInput(QInstance instance) - { - super(instance); - } - - - - /******************************************************************************* - ** - *******************************************************************************/ - public GetInput(QInstance instance, QSession session) - { - super(instance); - setSession(session); - } - - - /******************************************************************************* ** Getter for primaryKey ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/insert/InsertInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/insert/InsertInput.java index 074de4cf..b23537a2 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/insert/InsertInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/insert/InsertInput.java @@ -26,7 +26,6 @@ import java.util.List; import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -51,16 +50,6 @@ public class InsertInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public InsertInput(QInstance instance) - { - super(instance); - } - - - /******************************************************************************* ** Getter for transaction ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QueryInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QueryInput.java index 396b773a..45822c7a 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QueryInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QueryInput.java @@ -28,8 +28,6 @@ import java.util.Set; import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; import com.kingsrook.qqq.backend.core.actions.reporting.RecordPipe; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; /******************************************************************************* @@ -68,27 +66,6 @@ public class QueryInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public QueryInput(QInstance instance) - { - super(instance); - } - - - - /******************************************************************************* - ** - *******************************************************************************/ - public QueryInput(QInstance instance, QSession session) - { - super(instance); - setSession(session); - } - - - /******************************************************************************* ** Getter for filter ** @@ -326,6 +303,7 @@ public class QueryInput extends AbstractTableActionInput } + /******************************************************************************* ** Fluent setter for fieldsToTranslatePossibleValues ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/update/UpdateInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/update/UpdateInput.java index adabb9f4..149c83df 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/update/UpdateInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/update/UpdateInput.java @@ -26,7 +26,6 @@ import java.util.List; import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -57,16 +56,6 @@ public class UpdateInput extends AbstractTableActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public UpdateInput(QInstance instance) - { - super(instance); - } - - - /******************************************************************************* ** Getter for transaction ** @@ -98,7 +87,7 @@ public class UpdateInput extends AbstractTableActionInput this.transaction = transaction; return (this); } - + /******************************************************************************* diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/values/SearchPossibleValueSourceInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/values/SearchPossibleValueSourceInput.java index 9ae171bc..6d4b27f0 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/values/SearchPossibleValueSourceInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/values/SearchPossibleValueSourceInput.java @@ -26,7 +26,6 @@ import java.io.Serializable; import java.util.List; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -53,16 +52,6 @@ public class SearchPossibleValueSourceInput extends AbstractActionInput - /******************************************************************************* - ** - *******************************************************************************/ - public SearchPossibleValueSourceInput(QInstance instance) - { - super(instance); - } - - - /******************************************************************************* ** Getter for possibleValueSourceName ** @@ -198,7 +187,7 @@ public class SearchPossibleValueSourceInput extends AbstractActionInput } - + /******************************************************************************* ** Getter for skip ** diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/widgets/RenderWidgetInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/widgets/RenderWidgetInput.java index 395c09f4..18a8fb0f 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/widgets/RenderWidgetInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/widgets/RenderWidgetInput.java @@ -25,7 +25,6 @@ package com.kingsrook.qqq.backend.core.model.actions.widgets; import java.util.HashMap; import java.util.Map; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaDataInterface; import com.kingsrook.qqq.backend.core.model.session.QSession; @@ -45,43 +44,8 @@ public class RenderWidgetInput extends AbstractActionInput /******************************************************************************* ** *******************************************************************************/ - public RenderWidgetInput(QInstance instance) + public RenderWidgetInput() { - super(instance); - } - - - - /******************************************************************************* - ** Getter for session - ** - *******************************************************************************/ - public QSession getSession() - { - return session; - } - - - - /******************************************************************************* - ** Setter for session - ** - *******************************************************************************/ - public void setSession(QSession session) - { - this.session = session; - } - - - - /******************************************************************************* - ** Fluent setter for session - ** - *******************************************************************************/ - public RenderWidgetInput withSession(QSession session) - { - this.session = session; - return (this); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/automation/RecordAutomationInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/automation/RecordAutomationInput.java index 17042c3a..2c9275f5 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/automation/RecordAutomationInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/automation/RecordAutomationInput.java @@ -25,7 +25,6 @@ package com.kingsrook.qqq.backend.core.model.automation; import java.util.List; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TableAutomationAction; @@ -35,16 +34,15 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TableAuto public class RecordAutomationInput extends AbstractTableActionInput { private TableAutomationAction action; - private List recordList; + private List recordList; /******************************************************************************* ** *******************************************************************************/ - public RecordAutomationInput(QInstance instance) + public RecordAutomationInput() { - super(instance); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QInstance.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QInstance.java index 9e5210af..fdf2aeb8 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QInstance.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QInstance.java @@ -192,8 +192,7 @@ public class QInstance { if(!memoizedTablePaths.containsKey(tableName)) { - MetaDataInput input = new MetaDataInput(this); - input.setSession(actionInput.getSession()); + MetaDataInput input = new MetaDataInput(); MetaDataOutput output = new MetaDataAction().execute(input); memoizedTablePaths.put(tableName, searchAppTree(output.getAppTree(), tableName, AppTreeNodeType.TABLE, "")); } @@ -209,8 +208,7 @@ public class QInstance { if(!memoizedProcessPaths.containsKey(processName)) { - MetaDataInput input = new MetaDataInput(this); - input.setSession(actionInput.getSession()); + MetaDataInput input = new MetaDataInput(); MetaDataOutput output = new MetaDataAction().execute(input); return searchAppTree(output.getAppTree(), processName, AppTreeNodeType.PROCESS, ""); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/templates/ConvertHtmlToPdfInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/templates/ConvertHtmlToPdfInput.java index 1390b1e5..75ea07e4 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/templates/ConvertHtmlToPdfInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/templates/ConvertHtmlToPdfInput.java @@ -27,7 +27,6 @@ import java.nio.file.Path; import java.util.HashMap; import java.util.Map; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -47,9 +46,8 @@ public class ConvertHtmlToPdfInput extends AbstractActionInput ** Constructor ** *******************************************************************************/ - public ConvertHtmlToPdfInput(QInstance instance) + public ConvertHtmlToPdfInput() { - super(instance); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/templates/RenderTemplateInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/templates/RenderTemplateInput.java index 2b3b0dd7..eeaf05aa 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/templates/RenderTemplateInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/templates/RenderTemplateInput.java @@ -24,7 +24,6 @@ package com.kingsrook.qqq.backend.core.model.templates; import java.util.Map; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; /******************************************************************************* @@ -42,9 +41,8 @@ public class RenderTemplateInput extends AbstractActionInput /******************************************************************************* ** *******************************************************************************/ - public RenderTemplateInput(QInstance instance) + public RenderTemplateInput() { - super(instance); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/TableBasedAuthenticationModule.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/TableBasedAuthenticationModule.java index b6e1207b..0b9a782d 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/TableBasedAuthenticationModule.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/TableBasedAuthenticationModule.java @@ -38,6 +38,7 @@ import java.util.UUID; import com.kingsrook.qqq.backend.core.actions.tables.GetAction; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput; @@ -112,8 +113,11 @@ public class TableBasedAuthenticationModule implements QAuthenticationModuleInte /////////////////////////////////////////////////////////// if(context.containsKey(BASIC_AUTH_KEY)) { + QSession contextSessionBefore = QContext.getQSession(); try { + QContext.setQSession(chickenAndEggSession); + ///////////////////////////////////////////////// // decode the credentials from the header auth // ///////////////////////////////////////////////// @@ -124,8 +128,7 @@ public class TableBasedAuthenticationModule implements QAuthenticationModuleInte /////////////////////////// // fetch the user record // /////////////////////////// - GetInput getInput = new GetInput(qInstance); - getInput.setSession(chickenAndEggSession); + GetInput getInput = new GetInput(); getInput.setTableName(metaData.getUserTableName()); getInput.setUniqueKey(Map.of(metaData.getUserTableUsernameField(), credentials.split(":")[0])); GetOutput getOutput = new GetAction().execute(getInput); @@ -155,8 +158,7 @@ public class TableBasedAuthenticationModule implements QAuthenticationModuleInte .withValue(metaData.getSessionTableUuidField(), sessionUuid) .withValue(metaData.getSessionTableAccessTimestampField(), Instant.now()) .withValue(metaData.getSessionTableUserIdField(), user.getValue(metaData.getUserTablePrimaryKeyField())); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(chickenAndEggSession); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(metaData.getSessionTableName()); insertInput.setRecords(List.of(sessionRecord)); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -181,6 +183,10 @@ public class TableBasedAuthenticationModule implements QAuthenticationModuleInte LOG.error(message, e); throw (new QAuthenticationException(message)); } + finally + { + QContext.setQSession(contextSessionBefore); + } } ////////////////////////////////////////////////// @@ -310,42 +316,50 @@ public class TableBasedAuthenticationModule implements QAuthenticationModuleInte *******************************************************************************/ private QSession revalidateSession(QInstance qInstance, String sessionUuid) throws QException { - TableBasedAuthenticationMetaData metaData = (TableBasedAuthenticationMetaData) qInstance.getAuthentication(); - - GetInput getSessionInput = new GetInput(qInstance); - getSessionInput.setSession(chickenAndEggSession); - getSessionInput.setTableName(metaData.getSessionTableName()); - getSessionInput.setUniqueKey(Map.of(metaData.getSessionTableUuidField(), sessionUuid)); - GetOutput getSessionOutput = new GetAction().execute(getSessionInput); - if(getSessionOutput.getRecord() == null) + QSession contextSessionBefore = QContext.getQSession(); + try { - throw (new QAuthenticationException("Session not found.")); - } - QRecord sessionRecord = getSessionOutput.getRecord(); - Instant lastAccess = sessionRecord.getValueInstant(metaData.getSessionTableAccessTimestampField()); + QContext.setQSession(chickenAndEggSession); - /////////////////////////////////////////////////////////////////////////////////////////////////// - // returns negative int if less than compared duration, 0 if equal, positive int if greater than // - // - so this is basically saying, if the time between the last time the session was marked as // - // active, and right now is more than the timeout seconds, then the session is expired // - /////////////////////////////////////////////////////////////////////////////////////////////////// - if(lastAccess.plus(Duration.ofSeconds(metaData.getInactivityTimeoutSeconds())).isBefore(Instant.now())) + TableBasedAuthenticationMetaData metaData = (TableBasedAuthenticationMetaData) qInstance.getAuthentication(); + + GetInput getSessionInput = new GetInput(); + getSessionInput.setTableName(metaData.getSessionTableName()); + getSessionInput.setUniqueKey(Map.of(metaData.getSessionTableUuidField(), sessionUuid)); + GetOutput getSessionOutput = new GetAction().execute(getSessionInput); + if(getSessionOutput.getRecord() == null) + { + throw (new QAuthenticationException("Session not found.")); + } + QRecord sessionRecord = getSessionOutput.getRecord(); + Instant lastAccess = sessionRecord.getValueInstant(metaData.getSessionTableAccessTimestampField()); + + /////////////////////////////////////////////////////////////////////////////////////////////////// + // returns negative int if less than compared duration, 0 if equal, positive int if greater than // + // - so this is basically saying, if the time between the last time the session was marked as // + // active, and right now is more than the timeout seconds, then the session is expired // + /////////////////////////////////////////////////////////////////////////////////////////////////// + if(lastAccess.plus(Duration.ofSeconds(metaData.getInactivityTimeoutSeconds())).isBefore(Instant.now())) + { + throw (new QAuthenticationException("Session is expired.")); + } + + /////////////////////////////////////////////// + // update the timestamp in the session table // + /////////////////////////////////////////////// + UpdateInput updateInput = new UpdateInput(); + updateInput.setTableName(metaData.getSessionTableName()); + updateInput.setRecords(List.of(new QRecord() + .withValue(metaData.getSessionTablePrimaryKeyField(), sessionRecord.getValue(metaData.getSessionTablePrimaryKeyField())) + .withValue(metaData.getSessionTableAccessTimestampField(), Instant.now()))); + new UpdateAction().execute(updateInput); + + return (buildQSessionFromUuid(qInstance, metaData, sessionUuid)); + } + finally { - throw (new QAuthenticationException("Session is expired.")); + QContext.setQSession(contextSessionBefore); } - - /////////////////////////////////////////////// - // update the timestamp in the session table // - /////////////////////////////////////////////// - UpdateInput updateInput = new UpdateInput(qInstance); - updateInput.setSession(chickenAndEggSession); - updateInput.setTableName(metaData.getSessionTableName()); - updateInput.setRecords(List.of(new QRecord() - .withValue(metaData.getSessionTablePrimaryKeyField(), sessionRecord.getValue(metaData.getSessionTablePrimaryKeyField())) - .withValue(metaData.getSessionTableAccessTimestampField(), Instant.now()))); - new UpdateAction().execute(updateInput); - - return (buildQSessionFromUuid(qInstance, metaData, sessionUuid)); } @@ -356,37 +370,46 @@ public class TableBasedAuthenticationModule implements QAuthenticationModuleInte *******************************************************************************/ private QSession buildQSessionFromUuid(QInstance qInstance, TableBasedAuthenticationMetaData metaData, String sessionUuid) throws QException { - GetInput getSessionInput = new GetInput(qInstance); - getSessionInput.setSession(chickenAndEggSession); - getSessionInput.setTableName(metaData.getSessionTableName()); - getSessionInput.setUniqueKey(Map.of(metaData.getSessionTableUuidField(), sessionUuid)); - GetOutput getSessionOutput = new GetAction().execute(getSessionInput); - if(getSessionOutput.getRecord() == null) + QSession contextSessionBefore = QContext.getQSession(); + + try { - throw (new QAuthenticationException("Session not found.")); - } - QRecord sessionRecord = getSessionOutput.getRecord(); + QContext.setQSession(chickenAndEggSession); - GetInput getUserInput = new GetInput(qInstance); - getUserInput.setSession(chickenAndEggSession); - getUserInput.setTableName(metaData.getUserTableName()); - getUserInput.setPrimaryKey(sessionRecord.getValue(metaData.getSessionTableUserIdField())); - GetOutput getUserOutput = new GetAction().execute(getUserInput); - if(getUserOutput.getRecord() == null) + GetInput getSessionInput = new GetInput(); + getSessionInput.setTableName(metaData.getSessionTableName()); + getSessionInput.setUniqueKey(Map.of(metaData.getSessionTableUuidField(), sessionUuid)); + GetOutput getSessionOutput = new GetAction().execute(getSessionInput); + if(getSessionOutput.getRecord() == null) + { + throw (new QAuthenticationException("Session not found.")); + } + QRecord sessionRecord = getSessionOutput.getRecord(); + + GetInput getUserInput = new GetInput(); + getUserInput.setTableName(metaData.getUserTableName()); + getUserInput.setPrimaryKey(sessionRecord.getValue(metaData.getSessionTableUserIdField())); + GetOutput getUserOutput = new GetAction().execute(getUserInput); + if(getUserOutput.getRecord() == null) + { + throw (new QAuthenticationException("User for session not found.")); + } + QRecord userRecord = getUserOutput.getRecord(); + + QUser qUser = new QUser(); + qUser.setFullName(userRecord.getValueString(metaData.getUserTableFullNameField())); + qUser.setIdReference(userRecord.getValueString(metaData.getUserTableUsernameField())); + + QSession qSession = new QSession(); + qSession.setIdReference(sessionUuid); + qSession.setUser(qUser); + + return (qSession); + } + finally { - throw (new QAuthenticationException("User for session not found.")); + QContext.setQSession(contextSessionBefore); } - QRecord userRecord = getUserOutput.getRecord(); - - QUser qUser = new QUser(); - qUser.setFullName(userRecord.getValueString(metaData.getUserTableFullNameField())); - qUser.setIdReference(userRecord.getValueString(metaData.getUserTableUsernameField())); - - QSession qSession = new QSession(); - qSession.setIdReference(sessionUuid); - qSession.setUser(qUser); - - return (qSession); } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationCountAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationCountAction.java index 42bd015e..6b311a50 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationCountAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationCountAction.java @@ -43,12 +43,11 @@ public class EnumerationCountAction implements CountInterface @Override public CountOutput execute(CountInput countInput) throws QException { - QueryInput queryInput = new QueryInput(countInput.getInstance()); - queryInput.setSession(countInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(countInput.getTableName()); queryInput.setFilter(countInput.getFilter()); QueryOutput queryOutput = new QueryAction().execute(queryInput); - + CountOutput countOutput = new CountOutput(); countOutput.setCount(queryOutput.getRecords().size()); return (countOutput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryRecordStore.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryRecordStore.java index 3b047c02..c98a687d 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryRecordStore.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryRecordStore.java @@ -158,8 +158,7 @@ public class MemoryRecordStore *******************************************************************************/ public Integer count(CountInput input) { - QueryInput queryInput = new QueryInput(input.getInstance()); - queryInput.setSession(input.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(input.getTableName()); queryInput.setFilter(input.getFilter()); List queryResult = query(queryInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLExtractFunction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLExtractFunction.java index 70317044..6c158313 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLExtractFunction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLExtractFunction.java @@ -54,8 +54,7 @@ public class BasicETLExtractFunction implements BackendStep String tableName = runBackendStepInput.getValueString(BasicETLProcess.FIELD_SOURCE_TABLE); LOG.debug("Start query on table: " + tableName); - QueryInput queryInput = new QueryInput(runBackendStepInput.getInstance()); - queryInput.setSession(runBackendStepInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); // queryRequest.setSkip(integerQueryParam(context, "skip")); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLLoadFunction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLLoadFunction.java index 68dbb512..a25bf4cb 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLLoadFunction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLLoadFunction.java @@ -89,8 +89,7 @@ public class BasicETLLoadFunction implements BackendStep LOG.info("Inserting a page of [" + page.size() + "] records. Progress: " + recordsInserted + " loaded out of " + inputRecords.size() + " total"); runBackendStepInput.getAsyncJobCallback().updateStatus("Inserting records", recordsInserted, inputRecords.size()); - InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); - insertInput.setSession(runBackendStepInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(table); insertInput.setRecords(page); insertInput.setTransaction(transaction); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamed/StreamedETLBackendStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamed/StreamedETLBackendStep.java index 04e3c199..0969e4a8 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamed/StreamedETLBackendStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamed/StreamedETLBackendStep.java @@ -112,9 +112,8 @@ public class StreamedETLBackendStep implements BackendStep *******************************************************************************/ private QBackendTransaction openTransaction(RunBackendStepInput runBackendStepInput) throws QException { - InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); + InsertInput insertInput = new InsertInput(); - insertInput.setSession(runBackendStepInput.getSession()); insertInput.setTableName(runBackendStepInput.getValueString(BasicETLProcess.FIELD_DESTINATION_TABLE)); return new InsertAction().openTransaction(insertInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/ExtractViaQueryStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/ExtractViaQueryStep.java index 2f1cdc05..414b0c54 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/ExtractViaQueryStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/ExtractViaQueryStep.java @@ -77,8 +77,7 @@ public class ExtractViaQueryStep extends AbstractExtractStep @Override public void run(RunBackendStepInput runBackendStepInput, RunBackendStepOutput runBackendStepOutput) throws QException { - QueryInput queryInput = new QueryInput(runBackendStepInput.getInstance()); - queryInput.setSession(runBackendStepInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(runBackendStepInput.getValueString(FIELD_SOURCE_TABLE)); queryInput.setFilter(queryFilter); queryInput.setRecordPipe(getRecordPipe()); @@ -99,8 +98,7 @@ public class ExtractViaQueryStep extends AbstractExtractStep @Override public Integer doCount(RunBackendStepInput runBackendStepInput) throws QException { - CountInput countInput = new CountInput(runBackendStepInput.getInstance()); - countInput.setSession(runBackendStepInput.getSession()); + CountInput countInput = new CountInput(); countInput.setTableName(runBackendStepInput.getValueString(FIELD_SOURCE_TABLE)); countInput.setFilter(queryFilter); CountOutput countOutput = new CountAction().execute(countInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaDeleteStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaDeleteStep.java index 9697f1c4..3d67a810 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaDeleteStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaDeleteStep.java @@ -54,8 +54,7 @@ public class LoadViaDeleteStep extends AbstractLoadStep { QTableMetaData table = runBackendStepInput.getTable(); - DeleteInput deleteInput = new DeleteInput(runBackendStepInput.getInstance()); - deleteInput.setSession(runBackendStepInput.getSession()); + DeleteInput deleteInput = new DeleteInput(); deleteInput.setTableName(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); deleteInput.setPrimaryKeys(runBackendStepInput.getRecords().stream().map(r -> r.getValue(table.getPrimaryKeyField())).collect(Collectors.toList())); deleteInput.setAsyncJobCallback(runBackendStepInput.getAsyncJobCallback()); @@ -72,8 +71,7 @@ public class LoadViaDeleteStep extends AbstractLoadStep @Override public Optional openTransaction(RunBackendStepInput runBackendStepInput) throws QException { - InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); - insertInput.setSession(runBackendStepInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); return (Optional.of(new InsertAction().openTransaction(insertInput))); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStep.java index 875c2fb7..f1ab3544 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStep.java @@ -78,8 +78,7 @@ public class LoadViaInsertOrUpdateStep extends AbstractLoadStep if(CollectionUtils.nullSafeHasContents(recordsToInsert)) { - InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); - insertInput.setSession(runBackendStepInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(tableMetaData.getName()); insertInput.setRecords(recordsToInsert); getTransaction().ifPresent(insertInput::setTransaction); @@ -96,8 +95,7 @@ public class LoadViaInsertOrUpdateStep extends AbstractLoadStep if(CollectionUtils.nullSafeHasContents(recordsToUpdate)) { - UpdateInput updateInput = new UpdateInput(runBackendStepInput.getInstance()); - updateInput.setSession(runBackendStepInput.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(tableMetaData.getName()); updateInput.setRecords(recordsToUpdate); getTransaction().ifPresent(updateInput::setTransaction); @@ -115,8 +113,7 @@ public class LoadViaInsertOrUpdateStep extends AbstractLoadStep @Override public Optional openTransaction(RunBackendStepInput runBackendStepInput) throws QException { - InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); - insertInput.setSession(runBackendStepInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); return (Optional.of(new InsertAction().openTransaction(insertInput))); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertStep.java index 8c3ea7d5..6024b21a 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertStep.java @@ -50,8 +50,7 @@ public class LoadViaInsertStep extends AbstractLoadStep @Override public void run(RunBackendStepInput runBackendStepInput, RunBackendStepOutput runBackendStepOutput) throws QException { - InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); - insertInput.setSession(runBackendStepInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); insertInput.setRecords(runBackendStepInput.getRecords()); getTransaction().ifPresent(insertInput::setTransaction); @@ -74,8 +73,7 @@ public class LoadViaInsertStep extends AbstractLoadStep @Override public Optional openTransaction(RunBackendStepInput runBackendStepInput) throws QException { - InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); - insertInput.setSession(runBackendStepInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); return (Optional.of(new InsertAction().openTransaction(insertInput))); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaUpdateStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaUpdateStep.java index b8f6abe8..058c5ec2 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaUpdateStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaUpdateStep.java @@ -51,8 +51,7 @@ public class LoadViaUpdateStep extends AbstractLoadStep @Override public void run(RunBackendStepInput runBackendStepInput, RunBackendStepOutput runBackendStepOutput) throws QException { - UpdateInput updateInput = new UpdateInput(runBackendStepInput.getInstance()); - updateInput.setSession(runBackendStepInput.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); updateInput.setRecords(runBackendStepInput.getRecords()); getTransaction().ifPresent(updateInput::setTransaction); @@ -69,8 +68,7 @@ public class LoadViaUpdateStep extends AbstractLoadStep @Override public Optional openTransaction(RunBackendStepInput runBackendStepInput) throws QException { - InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); - insertInput.setSession(runBackendStepInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); return (Optional.of(new InsertAction().openTransaction(insertInput))); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedBackendStepInput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedBackendStepInput.java index 14b8f10e..1428a1fb 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedBackendStepInput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedBackendStepInput.java @@ -47,7 +47,7 @@ public class StreamedBackendStepInput extends RunBackendStepInput *******************************************************************************/ public StreamedBackendStepInput(RunBackendStepInput runBackendStepInput, List inputRecords) { - super(runBackendStepInput.getInstance()); + super(); runBackendStepInput.cloneFieldsInto(this); this.inputRecords = inputRecords; } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/ExecuteReportStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/ExecuteReportStep.java index ca0525fd..8d71629e 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/ExecuteReportStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/ExecuteReportStep.java @@ -64,8 +64,7 @@ public class ExecuteReportStep implements BackendStep try(FileOutputStream reportOutputStream = new FileOutputStream(tmpFile)) { - ReportInput reportInput = new ReportInput(runBackendStepInput.getInstance()); - reportInput.setSession(runBackendStepInput.getSession()); + ReportInput reportInput = new ReportInput(); reportInput.setReportName(reportName); reportInput.setReportFormat(ReportFormat.XLSX); // todo - variable reportInput.setReportOutputStream(reportOutputStream); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/PrepareReportForRecordStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/PrepareReportForRecordStep.java index 696c2133..d97bc159 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/PrepareReportForRecordStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/PrepareReportForRecordStep.java @@ -94,8 +94,7 @@ public class PrepareReportForRecordStep extends PrepareReportStep } } - GetInput getInput = new GetInput(runBackendStepInput.getInstance()); - getInput.setSession(runBackendStepInput.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName(runBackendStepInput.getTableName()); getInput.setPrimaryKey(recordId); getInput.setShouldGenerateDisplayValues(true); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/AbstractTableSyncTransformStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/AbstractTableSyncTransformStep.java index 4b8d5758..0e3d21a7 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/AbstractTableSyncTransformStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/AbstractTableSyncTransformStep.java @@ -205,8 +205,7 @@ public abstract class AbstractTableSyncTransformStep extends AbstractTransformSt Map existingRecordsByForeignKey = Collections.emptyMap(); if(!sourceKeyList.isEmpty()) { - QueryInput queryInput = new QueryInput(runBackendStepInput.getInstance()); - queryInput.setSession(runBackendStepInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(destinationTableName); getTransaction().ifPresent(queryInput::setTransaction); QQueryFilter filter = getExistingRecordQueryFilter(runBackendStepInput, sourceKeyList); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/utils/GeneralProcessUtils.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/utils/GeneralProcessUtils.java index 59bfe44a..4cde210b 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/utils/GeneralProcessUtils.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/utils/GeneralProcessUtils.java @@ -71,6 +71,8 @@ public class GeneralProcessUtils return getForeignRecordMap(parentActionInput, sourceRecords, sourceTableForeignKeyFieldName, foreignTableName, foreignTablePrimaryKeyName, new QQueryFilter()); } + // todo not commit - clean up all method sigs + /******************************************************************************* @@ -84,8 +86,7 @@ public class GeneralProcessUtils public static Map getForeignRecordMap(AbstractActionInput parentActionInput, List sourceRecords, String sourceTableForeignKeyFieldName, String foreignTableName, String foreignTablePrimaryKeyName, QQueryFilter additionalFilter) throws QException { Map foreignRecordMap = new HashMap<>(); - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(foreignTableName); List foreignIds = new ArrayList<>(sourceRecords.stream().map(r -> r.getValue(sourceTableForeignKeyFieldName)).toList()); @@ -113,8 +114,7 @@ public class GeneralProcessUtils public static ListingHash getForeignRecordListingHashMap(AbstractActionInput parentActionInput, List sourceRecords, String sourceTableForeignKeyFieldName, String foreignTableName, String foreignTableForeignKeyName) throws QException { ListingHash foreignRecordMap = new ListingHash<>(); - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(foreignTableName); List foreignIds = new ArrayList<>(sourceRecords.stream().map(r -> r.getValue(sourceTableForeignKeyFieldName)).toList()); @@ -186,8 +186,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static List getRecordListByField(AbstractActionInput parentActionInput, String tableName, String fieldName, Serializable fieldValue) throws QException { - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); queryInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria(fieldName, QCriteriaOperator.EQUALS, List.of(fieldValue)))); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -208,8 +207,7 @@ public class GeneralProcessUtils return (Optional.empty()); } - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); queryInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria(fieldName, QCriteriaOperator.EQUALS, fieldValue))); queryInput.setLimit(1); @@ -252,8 +250,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static Optional getRecordByPrimaryKey(AbstractActionInput parentActionInput, String tableName, Serializable value) throws QException { - GetInput getInput = new GetInput(parentActionInput.getInstance()); - getInput.setSession(parentActionInput.getSession()); + GetInput getInput = new GetInput(); getInput.setTableName(tableName); getInput.setPrimaryKey(value); GetOutput getOutput = new GetAction().execute(getInput); @@ -281,8 +278,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static List loadTable(AbstractActionInput parentActionInput, String tableName) throws QException { - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); QueryOutput queryOutput = new QueryAction().execute(queryInput); return (queryOutput.getRecords()); @@ -298,8 +294,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static List loadTable(AbstractActionInput parentActionInput, String tableName, Class entityClass) throws QException { - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -342,8 +337,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static Map loadTableToMap(AbstractActionInput parentActionInput, String tableName, String keyFieldName, QQueryFilter filter) throws QException { - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); queryInput.setFilter(filter); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -377,8 +371,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static Map loadTableToMap(AbstractActionInput parentActionInput, String tableName, Class keyType, String keyFieldName) throws QException { - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); QueryOutput queryOutput = new QueryAction().execute(queryInput); List records = queryOutput.getRecords(); @@ -403,8 +396,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static Map loadTableToMap(AbstractActionInput parentActionInput, String tableName, String keyFieldName, Class entityClass) throws QException { - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); QueryOutput queryOutput = new QueryAction().execute(queryInput); List records = queryOutput.getRecords(); @@ -435,8 +427,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static ListingHash loadTableToListingHash(AbstractActionInput parentActionInput, String tableName, String keyFieldName) throws QException { - QueryInput queryInput = new QueryInput(parentActionInput.getInstance()); - queryInput.setSession(parentActionInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); QueryOutput queryOutput = new QueryAction().execute(queryInput); List records = queryOutput.getRecords(); @@ -509,8 +500,7 @@ public class GeneralProcessUtils *******************************************************************************/ public static Integer count(AbstractActionInput input, String tableName, QQueryFilter filter) throws QException { - CountInput countInput = new CountInput(input.getInstance()); - countInput.setSession(input.getSession()); + CountInput countInput = new CountInput(); countInput.setTableName(tableName); countInput.setFilter(filter); CountOutput countOutput = new CountAction().execute(countInput); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/scheduler/ScheduleManager.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/scheduler/ScheduleManager.java index 1999f928..8a1a76d8 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/scheduler/ScheduleManager.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/scheduler/ScheduleManager.java @@ -29,6 +29,8 @@ import java.util.function.Supplier; import com.kingsrook.qqq.backend.core.actions.automation.polling.PollingAutomationPerTableRunner; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; import com.kingsrook.qqq.backend.core.actions.queues.SQSQueuePoller; +import com.kingsrook.qqq.backend.core.context.CapturedContext; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.automation.QAutomationProviderMetaData; @@ -235,16 +237,18 @@ public class ScheduleManager *******************************************************************************/ private void startProcess(QProcessMetaData process) { + CapturedContext capturedContext = QContext.capture(); + Runnable runProcess = () -> { + QContext.init(capturedContext); String originalThreadName = Thread.currentThread().getName(); Thread.currentThread().setName("ScheduledProcess>" + process.getName() + StandardScheduledExecutor.newThreadNameRandomSuffix()); LOG.debug("Running Scheduled Process [" + process.getName() + "]"); try { - RunProcessInput runProcessInput = new RunProcessInput(qInstance); - runProcessInput.setSession(sessionSupplier.get()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(process.getName()); runProcessInput.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.SKIP); @@ -258,6 +262,7 @@ public class ScheduleManager finally { Thread.currentThread().setName(originalThreadName); + QContext.clear(); } }; diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/QLogger.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/QLogger.java index 305a4c21..bd3446d9 100755 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/QLogger.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/QLogger.java @@ -1,6 +1,6 @@ /* * QQQ - Low-code Application Framework for Engineers. - * Copyright (C) 2021-2022. Kingsrook, LLC + * Copyright (C) 2021-2023. Kingsrook, LLC * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States * contact@kingsrook.com * https://github.com/Kingsrook/ @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.utils; import java.util.HashMap; import java.util.Map; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.session.QSession; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -63,9 +64,9 @@ public class QLogger /******************************************************************************* ** *******************************************************************************/ - public void debug(QSession session, String message) + public void debug(String message) { - logger.debug(wrapMessage(session, message)); + logger.debug(wrapMessage(message)); } @@ -73,9 +74,9 @@ public class QLogger /******************************************************************************* ** *******************************************************************************/ - public void info(QSession session, String message) + public void info(String message) { - logger.info(wrapMessage(session, message)); + logger.info(wrapMessage(message)); } @@ -83,9 +84,9 @@ public class QLogger /******************************************************************************* ** *******************************************************************************/ - public void warn(QSession session, String message) + public void warn(String message) { - logger.warn(wrapMessage(session, message)); + logger.warn(wrapMessage(message)); } @@ -93,9 +94,9 @@ public class QLogger /******************************************************************************* ** *******************************************************************************/ - public void warn(QSession session, String message, Throwable t) + public void warn(String message, Throwable t) { - logger.warn(wrapMessage(session, message), t); + logger.warn(wrapMessage(message), t); } @@ -103,9 +104,9 @@ public class QLogger /******************************************************************************* ** *******************************************************************************/ - public void error(QSession session, String message) + public void error(String message) { - logger.error(wrapMessage(session, message)); + logger.error(wrapMessage(message)); } @@ -113,9 +114,9 @@ public class QLogger /******************************************************************************* ** *******************************************************************************/ - public void error(QSession session, String message, Throwable t) + public void error(String message, Throwable t) { - logger.error(wrapMessage(session, message), t); + logger.error(wrapMessage(message), t); } @@ -123,7 +124,7 @@ public class QLogger /******************************************************************************* ** *******************************************************************************/ - private String wrapMessage(QSession session, String message) + private String wrapMessage(String message) { String propertyName = "qqq.logger.logSessionId.disabled"; String propertyValue = System.getProperty(propertyName, ""); @@ -132,7 +133,8 @@ public class QLogger return (message); } - String sessionString = (session != null) ? session.getUuid() : "Not provided"; + QSession session = QContext.getQSession(); + String sessionString = (session != null) ? session.getUuid() : "Not provided"; return ("Session [" + sessionString + "] | " + message); } } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/BaseTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/BaseTest.java new file mode 100644 index 00000000..258e7026 --- /dev/null +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/BaseTest.java @@ -0,0 +1,61 @@ +/* + * Copyright © 2022-2023. Nutrifresh Services . All Rights Reserved. + */ + +package com.kingsrook.qqq.backend.core; + + +import com.kingsrook.qqq.backend.core.context.QContext; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.session.QSession; +import com.kingsrook.qqq.backend.core.utils.TestUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; + + +/******************************************************************************* + ** + *******************************************************************************/ +public class BaseTest +{ + private static final Logger LOG = LogManager.getLogger(BaseTest.class); + + + + /******************************************************************************* + ** + *******************************************************************************/ + @BeforeEach + void baseBeforeEach() + { + QContext.init(TestUtils.defineInstance(), new QSession()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @AfterEach + void baseAfterEach() + { + QContext.clear(); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + protected static void reInitInstanceInContext(QInstance qInstance) + { + if(qInstance.equals(QContext.getQInstance())) + { + LOG.warn("Unexpected condition - the same qInstance that is already in the QContext was passed into reInit. You probably want a new QInstance object instance."); + } + QContext.init(qInstance, new QSession()); + } + +} diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/async/AsyncJobCallbackTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/async/AsyncJobCallbackTest.java index 062cbe70..8938c2e9 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/async/AsyncJobCallbackTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/async/AsyncJobCallbackTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.actions.async; import java.util.UUID; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -30,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for AsyncJobCallback *******************************************************************************/ -class AsyncJobCallbackTest +class AsyncJobCallbackTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/async/AsyncJobManagerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/async/AsyncJobManagerTest.java index 276f0b31..37102433 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/async/AsyncJobManagerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/async/AsyncJobManagerTest.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.actions.async; import java.util.Optional; import java.util.concurrent.TimeUnit; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -35,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.fail; /******************************************************************************* ** Unit test for AsyncJobManager *******************************************************************************/ -class AsyncJobManagerTest +class AsyncJobManagerTest extends BaseTest { public static final int ANSWER = 42; diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/automation/polling/PollingAutomationPerTableRunnerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/automation/polling/PollingAutomationPerTableRunnerTest.java index ac60cf88..354e4753 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/automation/polling/PollingAutomationPerTableRunnerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/automation/polling/PollingAutomationPerTableRunnerTest.java @@ -27,9 +27,11 @@ import java.time.Month; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.automation.AutomationStatus; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput; import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput; @@ -60,7 +62,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for PollingAutomationPerTableRunner *******************************************************************************/ -class PollingAutomationPerTableRunnerTest +class PollingAutomationPerTableRunnerTest extends BaseTest { /******************************************************************************* @@ -81,13 +83,12 @@ class PollingAutomationPerTableRunnerTest @Test void testInsertAndUpdate() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // insert 2 person records, both updated by the insert action, and 1 logged by logger-on-update automation // ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of( new QRecord().withValue("id", 1).withValue("firstName", "Tim").withValue("birthDate", LocalDate.now()), @@ -120,8 +121,7 @@ class PollingAutomationPerTableRunnerTest //////////////////////////////////////////////////////////////////////////////////////////////////////////// // now do an user-driven update - this SHOULD trigger the update automation next time we run automations. // //////////////////////////////////////////////////////////////////////////////////////////////////////////// - UpdateInput updateInput = new UpdateInput(qInstance); - updateInput.setSession(new QSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); updateInput.setRecords(List.of( new QRecord().withValue("id", 1).withValue("lastName", "now with a LastName"), @@ -154,12 +154,18 @@ class PollingAutomationPerTableRunnerTest /******************************************************************************* ** *******************************************************************************/ - private void runAllTableActions(QInstance qInstance) + private void runAllTableActions(QInstance qInstance) throws QException { List tableActions = PollingAutomationPerTableRunner.getTableActions(qInstance, TestUtils.POLLING_AUTOMATION); for(PollingAutomationPerTableRunner.TableActions tableAction : tableActions) { - new PollingAutomationPerTableRunner(qInstance, TestUtils.POLLING_AUTOMATION, null, tableAction).run(); + PollingAutomationPerTableRunner pollingAutomationPerTableRunner = new PollingAutomationPerTableRunner(qInstance, TestUtils.POLLING_AUTOMATION, QSession::new, tableAction); + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + // note - don't call run - it is meant to be called async - e.g., it sets & clears thread context. // + ///////////////////////////////////////////////////////////////////////////////////////////////////// + pollingAutomationPerTableRunner.processTableInsertOrUpdate(qInstance.getTable(tableAction.tableName()), QContext.getQSession(), tableAction.status(), tableAction.actions()); + } } @@ -175,13 +181,12 @@ class PollingAutomationPerTableRunnerTest @Test void testMultiPages() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ////////////////////////////////////////////////////////////////////////////////// // insert many people - half who should be updated by the AgeChecker automation // ////////////////////////////////////////////////////////////////////////////////// - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(new ArrayList<>()); @@ -225,13 +230,12 @@ class PollingAutomationPerTableRunnerTest @Test void testRunningProcess() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); //////////////////////////////////////////////////////////////////// // insert 2 person records, 1 to trigger the "increaseAge" action // //////////////////////////////////////////////////////////////////// - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of( new QRecord().withValue("id", 1).withValue("firstName", "Tim").withValue("birthDate", LocalDate.of(1886, Month.JUNE, 6)), @@ -261,7 +265,7 @@ class PollingAutomationPerTableRunnerTest @Test void testRunningEtlWithFrontendProcess() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); //////////////////////////////////////////////////////// // define the process - an ELT from Shapes to Persons // diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/automation/polling/StandardScheduledExecutorTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/automation/polling/StandardScheduledExecutorTest.java index 352e34a7..7f5681ab 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/automation/polling/StandardScheduledExecutorTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/automation/polling/StandardScheduledExecutorTest.java @@ -30,9 +30,11 @@ import java.util.Optional; import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.automation.AutomationStatus; import com.kingsrook.qqq.backend.core.actions.automation.RecordAutomationHandler; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput; import com.kingsrook.qqq.backend.core.model.automation.RecordAutomationInput; @@ -54,7 +56,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for StandardScheduledExecutor *******************************************************************************/ -class StandardScheduledExecutorTest +class StandardScheduledExecutorTest extends BaseTest { /******************************************************************************* @@ -75,13 +77,12 @@ class StandardScheduledExecutorTest @Test void testInsert() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ///////////////////////////////////////////////////////////////////////////// // insert 2 people - one who should be updated by the check-age automation // ///////////////////////////////////////////////////////////////////////////// - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of( new QRecord().withValue("id", 1).withValue("firstName", "John").withValue("birthDate", LocalDate.of(1970, Month.JANUARY, 1)), @@ -121,7 +122,7 @@ class StandardScheduledExecutorTest @Test void testSessionSupplier() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ////////////////////////////////////////////////////////////////////// // make the person-memory table's insert-action run a class in here // @@ -134,8 +135,7 @@ class StandardScheduledExecutorTest //////////////////////////////////////////////////////////// // insert a person that will trigger the on-insert action // //////////////////////////////////////////////////////////// - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of( new QRecord().withValue("id", 1).withValue("firstName", "Tim").withValue("birthDate", LocalDate.now()) diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/customizers/ChildInserterPostInsertCustomizerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/customizers/ChildInserterPostInsertCustomizerTest.java index 20335285..614d8dd1 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/customizers/ChildInserterPostInsertCustomizerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/customizers/ChildInserterPostInsertCustomizerTest.java @@ -24,7 +24,9 @@ package com.kingsrook.qqq.backend.core.actions.customizers; import java.io.Serializable; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput; import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertOutput; @@ -49,7 +51,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; ** so a rule of "every time we insert a person, if they aren't already pointed at ** a favoriteShape, insert a new shape for them". *******************************************************************************/ -class ChildInserterPostInsertCustomizerTest +class ChildInserterPostInsertCustomizerTest extends BaseTest { /******************************************************************************* ** @@ -69,11 +71,10 @@ class ChildInserterPostInsertCustomizerTest @Test void testEmptyCases() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); addPostInsertActionToTable(qInstance); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of()); @@ -110,13 +111,12 @@ class ChildInserterPostInsertCustomizerTest @Test void testSimpleCase() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); addPostInsertActionToTable(qInstance); assertEquals(0, TestUtils.queryTable(qInstance, TestUtils.TABLE_NAME_SHAPE).size()); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of( new QRecord().withValue("firstName", "Darin") @@ -139,13 +139,12 @@ class ChildInserterPostInsertCustomizerTest @Test void testComplexCase() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); addPostInsertActionToTable(qInstance); assertEquals(0, TestUtils.queryTable(qInstance, TestUtils.TABLE_NAME_SHAPE).size()); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of( new QRecord().withValue("firstName", "Darin"), diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/QuickSightChartRendererTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/QuickSightChartRendererTest.java index a9ddefc3..670cbf52 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/QuickSightChartRendererTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/QuickSightChartRendererTest.java @@ -23,12 +23,12 @@ package com.kingsrook.qqq.backend.core.actions.dashboard; import java.net.UnknownHostException; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.dashboard.widgets.QuickSightChartRenderer; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QuickSightChartMetaData; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -36,7 +36,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; /******************************************************************************* ** Unit test for QuickSightChartRenderer *******************************************************************************/ -class QuickSightChartRendererTest +class QuickSightChartRendererTest extends BaseTest { /******************************************************************************* @@ -88,10 +88,9 @@ class QuickSightChartRendererTest /******************************************************************************* ** *******************************************************************************/ - private RenderWidgetInput getInput() { - return (new RenderWidgetInput(TestUtils.defineInstance()).withSession(TestUtils.getMockSession())); + return (new RenderWidgetInput()); } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/RenderWidgetActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/RenderWidgetActionTest.java index 2631b7e5..bb3c36f3 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/RenderWidgetActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/RenderWidgetActionTest.java @@ -22,13 +22,14 @@ package com.kingsrook.qqq.backend.core.actions.dashboard; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetOutput; import com.kingsrook.qqq.backend.core.model.dashboard.widgets.ChartData; import com.kingsrook.qqq.backend.core.model.dashboard.widgets.WidgetType; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -38,7 +39,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; /******************************************************************************* ** Unit test for RenderWidgetAction *******************************************************************************/ -class RenderWidgetActionTest +class RenderWidgetActionTest extends BaseTest { /******************************************************************************* ** @@ -46,9 +47,8 @@ class RenderWidgetActionTest @Test void test() throws QException { - QInstance testQInstance = TestUtils.defineInstance(); - RenderWidgetInput input = new RenderWidgetInput(testQInstance) - .withSession(TestUtils.getMockSession()) + QInstance testQInstance = QContext.getQInstance(); + RenderWidgetInput input = new RenderWidgetInput() .withWidgetMetaData(testQInstance.getWidget(PersonsByCreateDateBarChart.class.getSimpleName())); RenderWidgetOutput output = new RenderWidgetAction().execute(input); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRendererTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRendererTest.java index 5775802c..8232cadb 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRendererTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ChildRecordListRendererTest.java @@ -25,7 +25,9 @@ package com.kingsrook.qqq.backend.core.actions.dashboard.widgets; import java.util.HashMap; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.dashboard.RenderWidgetAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QNotFoundException; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput; @@ -34,7 +36,6 @@ import com.kingsrook.qqq.backend.core.model.dashboard.widgets.ChildRecordListDat import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -47,7 +48,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; /******************************************************************************* ** Unit test for ChildRecordListRenderer *******************************************************************************/ -class ChildRecordListRendererTest +class ChildRecordListRendererTest extends BaseTest { /******************************************************************************* @@ -68,14 +69,13 @@ class ChildRecordListRendererTest @Test void testParentRecordNotFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); qInstance.addWidget(widget); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); @@ -92,7 +92,7 @@ class ChildRecordListRendererTest @Test void testNoChildRecordsFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); @@ -102,8 +102,7 @@ class ChildRecordListRendererTest new QRecord().withValue("id", 1) )); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); @@ -123,7 +122,7 @@ class ChildRecordListRendererTest @Test void testChildRecordsFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); @@ -140,8 +139,7 @@ class ChildRecordListRendererTest new QRecord().withValue("orderId", 2).withValue("sku", "XYZ") // should not be found. )); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ParentWidgetRendererTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ParentWidgetRendererTest.java index 9791f69d..db3d858d 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ParentWidgetRendererTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ParentWidgetRendererTest.java @@ -25,7 +25,9 @@ package com.kingsrook.qqq.backend.core.actions.dashboard.widgets; import java.util.HashMap; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.dashboard.RenderWidgetAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetOutput; @@ -39,7 +41,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.dashboard.ParentWidgetMetaD import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaDataInterface; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.WidgetDropdownData; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -51,7 +52,7 @@ import static org.assertj.core.api.Assertions.assertThat; /******************************************************************************* ** Unit test for ChildRecordListRenderer *******************************************************************************/ -class ParentWidgetRendererTest +class ParentWidgetRendererTest extends BaseTest { /******************************************************************************* @@ -72,7 +73,7 @@ class ParentWidgetRendererTest @Test void testParentWidget() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaDataInterface parentWidget = new ParentWidgetMetaData() .withTitle("Parent") @@ -97,8 +98,7 @@ class ParentWidgetRendererTest .withIcon("local_shipping"); qInstance.addWidget(parentWidget); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(parentWidget); RenderWidgetAction renderWidgetAction = new RenderWidgetAction(); @@ -119,18 +119,18 @@ class ParentWidgetRendererTest @Test void testNoChildRecordsFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); qInstance.addWidget(widget); + reInitInstanceInContext(qInstance); TestUtils.insertRecords(qInstance, qInstance.getTable(TestUtils.TABLE_NAME_ORDER), List.of( new QRecord().withValue("id", 1) )); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); @@ -150,11 +150,12 @@ class ParentWidgetRendererTest @Test void testChildRecordsFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); qInstance.addWidget(widget); + reInitInstanceInContext(qInstance); TestUtils.insertRecords(qInstance, qInstance.getTable(TestUtils.TABLE_NAME_ORDER), List.of( new QRecord().withValue("id", 1), @@ -167,8 +168,7 @@ class ParentWidgetRendererTest new QRecord().withValue("orderId", 2).withValue("sku", "XYZ") // should not be found. )); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ProcessWidgetRendererTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ProcessWidgetRendererTest.java index 2f788cf9..34289f8c 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ProcessWidgetRendererTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/ProcessWidgetRendererTest.java @@ -25,7 +25,9 @@ package com.kingsrook.qqq.backend.core.actions.dashboard.widgets; import java.util.HashMap; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.dashboard.RenderWidgetAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetOutput; @@ -36,7 +38,6 @@ import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -48,7 +49,7 @@ import static org.assertj.core.api.Assertions.assertThat; /******************************************************************************* ** Unit test for ChildRecordListRenderer *******************************************************************************/ -class ProcessWidgetRendererTest +class ProcessWidgetRendererTest extends BaseTest { /******************************************************************************* @@ -69,7 +70,7 @@ class ProcessWidgetRendererTest @Test void testProcessWidger() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData metaData = new QWidgetMetaData() .withType(WidgetType.PROCESS.getType()) @@ -80,8 +81,7 @@ class ProcessWidgetRendererTest .withCodeReference(new QCodeReference(ProcessWidgetRenderer.class, null)); qInstance.addWidget(metaData); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(metaData); RenderWidgetAction renderWidgetAction = new RenderWidgetAction(); @@ -102,7 +102,7 @@ class ProcessWidgetRendererTest @Test void testNoChildRecordsFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); @@ -112,8 +112,7 @@ class ProcessWidgetRendererTest new QRecord().withValue("id", 1) )); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); @@ -133,7 +132,7 @@ class ProcessWidgetRendererTest @Test void testChildRecordsFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); @@ -150,8 +149,7 @@ class ProcessWidgetRendererTest new QRecord().withValue("orderId", 2).withValue("sku", "XYZ") // should not be found. )); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/USMapRendererTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/USMapRendererTest.java index 53fed783..009b1ae1 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/USMapRendererTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/dashboard/widgets/USMapRendererTest.java @@ -25,7 +25,9 @@ package com.kingsrook.qqq.backend.core.actions.dashboard.widgets; import java.util.HashMap; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.dashboard.RenderWidgetAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetOutput; @@ -38,7 +40,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.ParentWidgetMetaData; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaDataInterface; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -50,7 +51,7 @@ import static org.assertj.core.api.Assertions.assertThat; /******************************************************************************* ** Unit test for ChildRecordListRenderer *******************************************************************************/ -class USMapRendererTest +class USMapRendererTest extends BaseTest { /******************************************************************************* @@ -71,7 +72,7 @@ class USMapRendererTest @Test void testMapRenderer() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaDataInterface parentWidget = new ParentWidgetMetaData() .withTitle("Test") @@ -88,8 +89,7 @@ class USMapRendererTest .withIcon("local_shipping"); qInstance.addWidget(parentWidget); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(parentWidget); RenderWidgetAction renderWidgetAction = new RenderWidgetAction(); @@ -109,7 +109,7 @@ class USMapRendererTest @Test void testNoChildRecordsFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); @@ -119,8 +119,7 @@ class USMapRendererTest new QRecord().withValue("id", 1) )); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); @@ -140,7 +139,7 @@ class USMapRendererTest @Test void testChildRecordsFound() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QWidgetMetaData widget = ChildRecordListRenderer.widgetMetaDataBuilder(qInstance.getJoin("orderLineItem")) .withLabel("Line Items") .getWidgetMetaData(); @@ -157,8 +156,7 @@ class USMapRendererTest new QRecord().withValue("orderId", 2).withValue("sku", "XYZ") // should not be found. )); - RenderWidgetInput input = new RenderWidgetInput(qInstance); - input.setSession(new QSession()); + RenderWidgetInput input = new RenderWidgetInput(); input.setWidgetMetaData(widget); input.setQueryParams(new HashMap<>(Map.of("id", "1"))); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/MetaDataActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/MetaDataActionTest.java index 999e6989..44d6e8e6 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/MetaDataActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/MetaDataActionTest.java @@ -28,6 +28,8 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.metadata.MetaDataInput; import com.kingsrook.qqq.backend.core.model.actions.metadata.MetaDataOutput; @@ -57,7 +59,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; ** Unit test for MetaDataAction ** *******************************************************************************/ -class MetaDataActionTest +class MetaDataActionTest extends BaseTest { /******************************************************************************* @@ -66,9 +68,8 @@ class MetaDataActionTest @Test public void test() throws QException { - MetaDataInput request = new MetaDataInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); - MetaDataOutput result = new MetaDataAction().execute(request); + MetaDataInput request = new MetaDataInput(); + MetaDataOutput result = new MetaDataAction().execute(request); assertNotNull(result); /////////////////////////////////// @@ -147,9 +148,9 @@ class MetaDataActionTest /////////////////////////////////////////////////////////////////////////////////////////// QInstance instance = TestUtils.defineInstance(); instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.HAS_ACCESS_PERMISSION)); - MetaDataInput input = new MetaDataInput(instance); - input.setSession(new QSession()); - MetaDataOutput result = new MetaDataAction().execute(input); + reInitInstanceInContext(instance); + + MetaDataOutput result = new MetaDataAction().execute(new MetaDataInput()); assertEquals(0, result.getTables().size()); assertEquals(0, result.getProcesses().size()); @@ -198,9 +199,9 @@ class MetaDataActionTest ///////////////////////////////////////////////////////////////////////////////////////////////////// QInstance instance = TestUtils.defineInstance(); instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.HAS_ACCESS_PERMISSION).withDenyBehavior(DenyBehavior.DISABLED)); - MetaDataInput input = new MetaDataInput(instance); - input.setSession(new QSession()); - MetaDataOutput result = new MetaDataAction().execute(input); + reInitInstanceInContext(instance); + + MetaDataOutput result = new MetaDataAction().execute(new MetaDataInput()); assertNotEquals(0, result.getTables().size()); assertNotEquals(0, result.getProcesses().size()); @@ -226,8 +227,9 @@ class MetaDataActionTest { QInstance instance = TestUtils.defineInstance(); instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.HAS_ACCESS_PERMISSION)); - MetaDataInput input = new MetaDataInput(instance); - input.setSession(new QSession().withPermissions( + reInitInstanceInContext(instance); + + QContext.setQSession(new QSession().withPermissions( "person.hasAccess", "increaseBirthdate.hasAccess", "runShapesPersonReport.hasAccess", @@ -236,7 +238,7 @@ class MetaDataActionTest "simplePersonReport.hasAccess", "PersonsByCreateDateBarChart.hasAccess" )); - MetaDataOutput result = new MetaDataAction().execute(input); + MetaDataOutput result = new MetaDataAction().execute(new MetaDataInput()); ///////////////////////////////////////////////////////////////////////////////////////////////////////// // with several permissions set, we should see some things, and they should have permissions turned on // @@ -264,8 +266,9 @@ class MetaDataActionTest { QInstance instance = TestUtils.defineInstance(); instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_WRITE_PERMISSIONS)); - MetaDataInput input = new MetaDataInput(instance); - input.setSession(new QSession().withPermissions( + reInitInstanceInContext(instance); + + QContext.setQSession(new QSession().withPermissions( "person.read", "personFile.write", "personMemory.read", @@ -273,7 +276,7 @@ class MetaDataActionTest "personMemoryCache.hasAccess", // this one should NOT come through. "increaseBirthdate.hasAccess" )); - MetaDataOutput result = new MetaDataAction().execute(input); + MetaDataOutput result = new MetaDataAction().execute(new MetaDataInput()); assertEquals(Set.of("person", "personFile", "personMemory"), result.getTables().keySet()); @@ -310,8 +313,9 @@ class MetaDataActionTest { QInstance instance = TestUtils.defineInstance(); instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_INSERT_EDIT_DELETE_PERMISSIONS)); - MetaDataInput input = new MetaDataInput(instance); - input.setSession(new QSession().withPermissions( + reInitInstanceInContext(instance); + + QContext.setQSession(new QSession().withPermissions( "person.read", "personFile.insert", "personFile.edit", @@ -320,7 +324,7 @@ class MetaDataActionTest "personMemoryCache.hasAccess", // this one should NOT come through. "increaseBirthdate.hasAccess" )); - MetaDataOutput result = new MetaDataAction().execute(input); + MetaDataOutput result = new MetaDataAction().execute(new MetaDataInput()); assertEquals(Set.of("person", "personFile", "personMemory"), result.getTables().keySet()); assertEquals(Set.of("increaseBirthdate", "personFile.bulkInsert", "personFile.bulkEdit", "personMemory.bulkDelete"), result.getProcesses().keySet()); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/ProcessMetaDataActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/ProcessMetaDataActionTest.java index 13e82cf5..9bc9ce67 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/ProcessMetaDataActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/ProcessMetaDataActionTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.actions.metadata; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QNotFoundException; import com.kingsrook.qqq.backend.core.model.actions.metadata.ProcessMetaDataInput; @@ -37,7 +38,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; ** Unit test for ProcessMetaDataAction ** *******************************************************************************/ -class ProcessMetaDataActionTest +class ProcessMetaDataActionTest extends BaseTest { /******************************************************************************* @@ -47,8 +48,7 @@ class ProcessMetaDataActionTest @Test public void test() throws QException { - ProcessMetaDataInput request = new ProcessMetaDataInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + ProcessMetaDataInput request = new ProcessMetaDataInput(); request.setProcessName(TestUtils.PROCESS_NAME_GREET_PEOPLE_INTERACTIVE); ProcessMetaDataOutput result = new ProcessMetaDataAction().execute(request); assertNotNull(result); @@ -68,8 +68,7 @@ class ProcessMetaDataActionTest public void test_notFound() { assertThrows(QNotFoundException.class, () -> { - ProcessMetaDataInput request = new ProcessMetaDataInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + ProcessMetaDataInput request = new ProcessMetaDataInput(); request.setProcessName("willNotBeFound"); new ProcessMetaDataAction().execute(request); }); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/TableMetaDataActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/TableMetaDataActionTest.java index 3f6750a6..780c1880 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/TableMetaDataActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/metadata/TableMetaDataActionTest.java @@ -22,11 +22,11 @@ package com.kingsrook.qqq.backend.core.actions.metadata; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QUserFacingException; import com.kingsrook.qqq.backend.core.model.actions.metadata.TableMetaDataInput; import com.kingsrook.qqq.backend.core.model.actions.metadata.TableMetaDataOutput; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -37,7 +37,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; ** Unit test for TableMetaDataAction ** *******************************************************************************/ -class TableMetaDataActionTest +class TableMetaDataActionTest extends BaseTest { /******************************************************************************* @@ -47,8 +47,7 @@ class TableMetaDataActionTest @Test public void test() throws QException { - TableMetaDataInput request = new TableMetaDataInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + TableMetaDataInput request = new TableMetaDataInput(); request.setTableName("person"); TableMetaDataOutput result = new TableMetaDataAction().execute(request); assertNotNull(result); @@ -67,8 +66,7 @@ class TableMetaDataActionTest public void test_notFound() { assertThrows(QUserFacingException.class, () -> { - TableMetaDataInput request = new TableMetaDataInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + TableMetaDataInput request = new TableMetaDataInput(); request.setTableName("willNotBeFound"); new TableMetaDataAction().execute(request); }); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/permissions/PermissionsHelperTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/permissions/PermissionsHelperTest.java index ab2aebcc..3ad4da49 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/permissions/PermissionsHelperTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/permissions/PermissionsHelperTest.java @@ -24,7 +24,9 @@ package com.kingsrook.qqq.backend.core.actions.permissions; import java.util.List; import java.util.Set; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QPermissionDeniedException; import com.kingsrook.qqq.backend.core.instances.QInstanceEnricher; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; @@ -58,7 +60,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for PermissionsHelper *******************************************************************************/ -class PermissionsHelperTest +class PermissionsHelperTest extends BaseTest { private static final String TABLE_NAME = "testTable"; private static final String PROCESS_NAME = "testProcess"; @@ -107,8 +109,7 @@ class PermissionsHelperTest void testTableWithHasAccessLevelAndWithPermission() throws QPermissionDeniedException { QInstance instance = newQInstance(); - instance.getTable(TABLE_NAME).setPermissionRules(new QPermissionRules() - .withLevel(PermissionLevel.HAS_ACCESS_PERMISSION)); + instance.getTable(TABLE_NAME).setPermissionRules(new QPermissionRules().withLevel(PermissionLevel.HAS_ACCESS_PERMISSION)); enrich(instance); assertFullTableAccess(instance, new QSession().withPermission(TABLE_NAME + ".hasAccess")); @@ -123,8 +124,7 @@ class PermissionsHelperTest void testTableWithReadWriteLevelAndWithoutPermission() { QInstance instance = newQInstance(); - instance.setDefaultPermissionRules(new QPermissionRules() - .withLevel(PermissionLevel.READ_WRITE_PERMISSIONS)); + instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_WRITE_PERMISSIONS)); enrich(instance); assertNoTableAccess(instance, new QSession()); @@ -139,13 +139,14 @@ class PermissionsHelperTest void testTableWithReadWriteLevelWithLimitedPermissions() throws QPermissionDeniedException { QInstance instance = newQInstance(); - instance.setDefaultPermissionRules(new QPermissionRules() - .withLevel(PermissionLevel.READ_WRITE_PERMISSIONS)); + instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_WRITE_PERMISSIONS)); + enrich(instance); { - QSession session = new QSession().withPermissions(TABLE_NAME + ".read"); - AbstractTableActionInput actionInput = new InsertInput(instance).withSession(session).withTableName(TABLE_NAME); - enrich(instance); + QSession session = new QSession().withPermissions(TABLE_NAME + ".read"); + QContext.setQSession(session); + + AbstractTableActionInput actionInput = new InsertInput().withTableName(TABLE_NAME); assertTrue(PermissionsHelper.hasTablePermission(actionInput, TABLE_NAME, TablePermissionSubType.READ)); assertFalse(PermissionsHelper.hasTablePermission(actionInput, TABLE_NAME, TablePermissionSubType.INSERT)); @@ -159,9 +160,10 @@ class PermissionsHelperTest } { - QSession session = new QSession().withPermissions(TABLE_NAME + ".write"); - AbstractTableActionInput actionInput = new InsertInput(instance).withSession(session).withTableName(TABLE_NAME); - enrich(instance); + QSession session = new QSession().withPermissions(TABLE_NAME + ".write"); + QContext.setQSession(session); + + AbstractTableActionInput actionInput = new InsertInput().withTableName(TABLE_NAME); assertFalse(PermissionsHelper.hasTablePermission(actionInput, TABLE_NAME, TablePermissionSubType.READ)); assertTrue(PermissionsHelper.hasTablePermission(actionInput, TABLE_NAME, TablePermissionSubType.INSERT)); @@ -184,8 +186,8 @@ class PermissionsHelperTest void testTableWithReadWriteLevelAndWithPermission() throws QPermissionDeniedException { QInstance instance = newQInstance(); - instance.setDefaultPermissionRules(new QPermissionRules() - .withLevel(PermissionLevel.READ_WRITE_PERMISSIONS)); + instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_WRITE_PERMISSIONS)); + enrich(instance); assertFullTableAccess(instance, new QSession().withPermissions(TABLE_NAME + ".read", TABLE_NAME + ".write")); } @@ -199,8 +201,8 @@ class PermissionsHelperTest void testTableWithReadInsertEditDeleteLevelAndWithoutPermission() { QInstance instance = newQInstance(); - instance.getTable(TABLE_NAME).setPermissionRules(new QPermissionRules() - .withLevel(PermissionLevel.READ_INSERT_EDIT_DELETE_PERMISSIONS)); + instance.getTable(TABLE_NAME).setPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_INSERT_EDIT_DELETE_PERMISSIONS)); + enrich(instance); assertNoTableAccess(instance, new QSession()); } @@ -214,8 +216,8 @@ class PermissionsHelperTest void testTableWithReadInsertEditDeleteLevelAndWithPermission() throws QPermissionDeniedException { QInstance instance = newQInstance(); - instance.getTable(TABLE_NAME).setPermissionRules(new QPermissionRules() - .withLevel(PermissionLevel.READ_INSERT_EDIT_DELETE_PERMISSIONS)); + instance.getTable(TABLE_NAME).setPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_INSERT_EDIT_DELETE_PERMISSIONS)); + enrich(instance); assertFullTableAccess(instance, new QSession().withPermissions(TABLE_NAME + ".read", TABLE_NAME + ".insert", TABLE_NAME + ".edit", TABLE_NAME + ".delete")); } @@ -229,13 +231,14 @@ class PermissionsHelperTest void testTableWithReadInsertEditDeleteLevelWithLimitedPermissions() throws QPermissionDeniedException { QInstance instance = newQInstance(); - instance.setDefaultPermissionRules(new QPermissionRules() - .withLevel(PermissionLevel.READ_INSERT_EDIT_DELETE_PERMISSIONS)); + instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_INSERT_EDIT_DELETE_PERMISSIONS)); + enrich(instance); { - QSession session = new QSession().withPermissions(TABLE_NAME + ".read"); - AbstractTableActionInput actionInput = new InsertInput(instance).withSession(session).withTableName(TABLE_NAME); - enrich(instance); + QSession session = new QSession().withPermissions(TABLE_NAME + ".read"); + QContext.setQSession(session); + + AbstractTableActionInput actionInput = new InsertInput().withTableName(TABLE_NAME); assertTrue(PermissionsHelper.hasTablePermission(actionInput, TABLE_NAME, TablePermissionSubType.READ)); assertFalse(PermissionsHelper.hasTablePermission(actionInput, TABLE_NAME, TablePermissionSubType.INSERT)); @@ -249,9 +252,10 @@ class PermissionsHelperTest } { - QSession session = new QSession().withPermissions(TABLE_NAME + ".insert"); - AbstractTableActionInput actionInput = new InsertInput(instance).withSession(session).withTableName(TABLE_NAME); - enrich(instance); + QSession session = new QSession().withPermissions(TABLE_NAME + ".insert"); + QContext.setQSession(session); + + AbstractTableActionInput actionInput = new InsertInput().withTableName(TABLE_NAME); assertFalse(PermissionsHelper.hasTablePermission(actionInput, TABLE_NAME, TablePermissionSubType.READ)); assertTrue(PermissionsHelper.hasTablePermission(actionInput, TABLE_NAME, TablePermissionSubType.INSERT)); @@ -273,10 +277,13 @@ class PermissionsHelperTest @Test void testProcessNoPermissionsMetaDataMeansFullAccess() throws QPermissionDeniedException { - QInstance instance = newQInstance(); - QSession session = new QSession(); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); + QInstance instance = newQInstance(); enrich(instance); + + QSession session = new QSession(); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertTrue(PermissionsHelper.hasProcessPermission(actionInput, PROCESS_NAME)); PermissionsHelper.checkProcessPermissionThrowing(actionInput, PROCESS_NAME); } @@ -295,10 +302,12 @@ class PermissionsHelperTest .withLevel(PermissionLevel.HAS_ACCESS_PERMISSION) .withDenyBehavior(DenyBehavior.DISABLED) ); - - QSession session = new QSession(); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); enrich(instance); + + QSession session = new QSession(); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertFalse(PermissionsHelper.hasProcessPermission(actionInput, PROCESS_NAME)); assertThatThrownBy(() -> PermissionsHelper.checkProcessPermissionThrowing(actionInput, PROCESS_NAME)).isInstanceOf(QPermissionDeniedException.class); assertEquals(PermissionCheckResult.DENY_DISABLE, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getProcess(PROCESS_NAME))); @@ -315,10 +324,12 @@ class PermissionsHelperTest QInstance instance = newQInstance(); instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.HAS_ACCESS_PERMISSION)); instance.getProcess(PROCESS_NAME); - - QSession session = new QSession().withPermission(PROCESS_NAME + ".hasAccess"); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); enrich(instance); + + QSession session = new QSession().withPermission(PROCESS_NAME + ".hasAccess"); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertTrue(PermissionsHelper.hasProcessPermission(actionInput, PROCESS_NAME)); PermissionsHelper.checkProcessPermissionThrowing(actionInput, PROCESS_NAME); assertEquals(PermissionCheckResult.ALLOW, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getProcess(PROCESS_NAME))); @@ -336,10 +347,12 @@ class PermissionsHelperTest QInstance instance = newQInstance(); instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_INSERT_EDIT_DELETE_PERMISSIONS)); instance.getProcess(PROCESS_NAME); - - QSession session = new QSession().withPermission(PROCESS_NAME + ".hasAccess"); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); enrich(instance); + + QSession session = new QSession().withPermission(PROCESS_NAME + ".hasAccess"); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertTrue(PermissionsHelper.hasProcessPermission(actionInput, PROCESS_NAME)); PermissionsHelper.checkProcessPermissionThrowing(actionInput, PROCESS_NAME); assertEquals(PermissionCheckResult.ALLOW, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getProcess(PROCESS_NAME))); @@ -349,10 +362,12 @@ class PermissionsHelperTest QInstance instance = newQInstance(); instance.setDefaultPermissionRules(new QPermissionRules().withLevel(PermissionLevel.READ_WRITE_PERMISSIONS)); instance.getProcess(PROCESS_NAME); - - QSession session = new QSession(); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); enrich(instance); + + QSession session = new QSession(); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertFalse(PermissionsHelper.hasProcessPermission(actionInput, PROCESS_NAME)); assertThatThrownBy(() -> PermissionsHelper.checkProcessPermissionThrowing(actionInput, PROCESS_NAME)).isInstanceOf(QPermissionDeniedException.class); assertEquals(PermissionCheckResult.DENY_HIDE, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getProcess(PROCESS_NAME))); @@ -374,14 +389,16 @@ class PermissionsHelperTest .withDenyBehavior(instance.getDefaultPermissionRules().getDenyBehavior()) .withPermissionBaseName("someProcess") ); + enrich(instance); { ////////////////////////////////////////////////////// // make sure we FAIL with the processName.hasAccess // ////////////////////////////////////////////////////// - QSession session = new QSession(); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); - enrich(instance); + QSession session = new QSession(); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertFalse(PermissionsHelper.hasProcessPermission(actionInput, PROCESS_NAME)); assertThatThrownBy(() -> PermissionsHelper.checkProcessPermissionThrowing(actionInput, PROCESS_NAME)).isInstanceOf(QPermissionDeniedException.class); assertEquals(PermissionCheckResult.DENY_HIDE, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getProcess(PROCESS_NAME))); @@ -391,9 +408,10 @@ class PermissionsHelperTest //////////////////////////////////////////////////////////////////////// // make sure we PASS with the override (permissionBaseName).hasAccess // //////////////////////////////////////////////////////////////////////// - QSession session = new QSession().withPermission("someProcess.hasAccess"); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); - enrich(instance); + QSession session = new QSession().withPermission("someProcess.hasAccess"); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertTrue(PermissionsHelper.hasProcessPermission(actionInput, PROCESS_NAME)); PermissionsHelper.checkProcessPermissionThrowing(actionInput, PROCESS_NAME); assertEquals(PermissionCheckResult.ALLOW, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getProcess(PROCESS_NAME))); @@ -412,20 +430,23 @@ class PermissionsHelperTest instance.getReport(REPORT_NAME) .setPermissionRules(new QPermissionRules() .withLevel(PermissionLevel.HAS_ACCESS_PERMISSION)); + enrich(instance); { - QSession session = new QSession(); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); - enrich(instance); + QSession session = new QSession(); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertFalse(PermissionsHelper.hasReportPermission(actionInput, REPORT_NAME)); assertThatThrownBy(() -> PermissionsHelper.checkReportPermissionThrowing(actionInput, REPORT_NAME)).isInstanceOf(QPermissionDeniedException.class); assertEquals(PermissionCheckResult.DENY_HIDE, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getReport(REPORT_NAME))); } { - QSession session = new QSession().withPermission(REPORT_NAME + ".hasAccess"); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); - enrich(instance); + QSession session = new QSession().withPermission(REPORT_NAME + ".hasAccess"); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); assertTrue(PermissionsHelper.hasReportPermission(actionInput, REPORT_NAME)); PermissionsHelper.checkReportPermissionThrowing(actionInput, REPORT_NAME); assertEquals(PermissionCheckResult.ALLOW, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getReport(REPORT_NAME))); @@ -440,11 +461,14 @@ class PermissionsHelperTest @Test void testWidgetWithNoProtection() throws QPermissionDeniedException { - QInstance instance = newQInstance(); - QSession session = new QSession(); - AbstractActionInput actionInput = new AbstractActionInput(instance, session); + QInstance instance = newQInstance(); enrich(instance); + QSession session = new QSession(); + QContext.setQSession(session); + + AbstractActionInput actionInput = new AbstractActionInput(); + assertTrue(PermissionsHelper.hasWidgetPermission(actionInput, WIDGET_NAME)); PermissionsHelper.checkWidgetPermissionThrowing(actionInput, WIDGET_NAME); assertEquals(PermissionCheckResult.ALLOW, PermissionsHelper.getPermissionCheckResult(actionInput, instance.getWidget(WIDGET_NAME))); @@ -482,6 +506,7 @@ class PermissionsHelperTest *******************************************************************************/ private static void enrich(QInstance instance) { + reInitInstanceInContext(instance); new QInstanceEnricher(instance).enrich(); } @@ -528,7 +553,8 @@ class PermissionsHelperTest *******************************************************************************/ private static void assertFullTableAccess(QInstance instance, QSession session) throws QPermissionDeniedException { - AbstractTableActionInput actionInput = new InsertInput(instance).withSession(session).withTableName(TABLE_NAME); + QContext.setQSession(session); + AbstractTableActionInput actionInput = new InsertInput().withTableName(TABLE_NAME); for(TablePermissionSubType permissionSubType : TablePermissionSubType.values()) { @@ -546,7 +572,8 @@ class PermissionsHelperTest *******************************************************************************/ private void assertNoTableAccess(QInstance instance, QSession session) { - AbstractTableActionInput actionInput = new InsertInput(instance).withSession(session).withTableName(TABLE_NAME); + QContext.setQSession(session); + AbstractTableActionInput actionInput = new InsertInput().withTableName(TABLE_NAME); for(TablePermissionSubType permissionSubType : TablePermissionSubType.values()) { diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/permissions/ReportProcessPermissionCheckerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/permissions/ReportProcessPermissionCheckerTest.java index 3db63bd4..5e53a164 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/permissions/ReportProcessPermissionCheckerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/permissions/ReportProcessPermissionCheckerTest.java @@ -22,6 +22,8 @@ package com.kingsrook.qqq.backend.core.actions.permissions; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QPermissionDeniedException; import com.kingsrook.qqq.backend.core.instances.QInstanceValidator; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; @@ -38,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; /******************************************************************************* ** Unit test for ReportProcessPermissionChecker *******************************************************************************/ -class ReportProcessPermissionCheckerTest +class ReportProcessPermissionCheckerTest extends BaseTest { /******************************************************************************* @@ -47,8 +49,8 @@ class ReportProcessPermissionCheckerTest @Test void test() throws Exception { - QInstance qInstance = TestUtils.defineInstance(); - RunProcessInput runProcessInput = new RunProcessInput(qInstance); + QInstance qInstance = QContext.getQInstance(); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.addValue("reportName", TestUtils.REPORT_NAME_SHAPES_PERSON); qInstance.getReport(TestUtils.REPORT_NAME_SHAPES_PERSON) @@ -63,13 +65,13 @@ class ReportProcessPermissionCheckerTest /////////////////////////////////////////////////////// // without permission in our session, we should fail // /////////////////////////////////////////////////////// - runProcessInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThrows(QPermissionDeniedException.class, () -> new ReportProcessPermissionChecker().checkPermissionsThrowing(runProcessInput, process)); ///////////////////////////////////////////////////////////////////////// // add the permission - assert that we have access (e.g., don't throw) // ///////////////////////////////////////////////////////////////////////// - runProcessInput.setSession(new QSession().withPermission(TestUtils.REPORT_NAME_SHAPES_PERSON + ".hasAccess")); + QContext.setQSession(new QSession().withPermission(TestUtils.REPORT_NAME_SHAPES_PERSON + ".hasAccess")); new ReportProcessPermissionChecker().checkPermissionsThrowing(runProcessInput, process); } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/processes/RunBackendStepActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/processes/RunBackendStepActionTest.java index c1d308dc..f012677d 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/processes/RunBackendStepActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/processes/RunBackendStepActionTest.java @@ -27,12 +27,12 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -42,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** *******************************************************************************/ -public class RunBackendStepActionTest +public class RunBackendStepActionTest extends BaseTest { /******************************************************************************* @@ -52,8 +52,7 @@ public class RunBackendStepActionTest public void test() throws QException { TestCallback callback = new TestCallback(); - RunBackendStepInput request = new RunBackendStepInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + RunBackendStepInput request = new RunBackendStepInput(); request.setProcessName("greet"); request.setStepName("prepare"); request.setCallback(callback); @@ -76,6 +75,8 @@ public class RunBackendStepActionTest private boolean wasCalledForQueryFilter = false; private boolean wasCalledForFieldValues = false; + + /******************************************************************************* ** *******************************************************************************/ diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessTest.java index 646d7979..e39aa08a 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessTest.java @@ -32,7 +32,9 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.UUID; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessState; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; @@ -73,7 +75,7 @@ import static org.junit.jupiter.api.Assertions.fail; /******************************************************************************* ** *******************************************************************************/ -public class RunProcessTest +public class RunProcessTest extends BaseTest { private static final Logger LOG = LogManager.getLogger(RunProcessTest.class); @@ -86,8 +88,7 @@ public class RunProcessTest public void testBasepull() throws QException { TestCallback callback = new TestCallback(); - RunProcessInput request = new RunProcessInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(TestUtils.PROCESS_NAME_BASEPULL); request.setCallback(callback); RunProcessOutput result = new RunProcessAction().execute(request); @@ -137,12 +138,11 @@ public class RunProcessTest *******************************************************************************/ private Instant getBasepullLastRunTime() throws QException { - QueryInput queryInput = new QueryInput(TestUtils.defineInstance()); + QueryInput queryInput = new QueryInput(); queryInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria() .withFieldName(TestUtils.BASEPULL_KEY_FIELD_NAME) .withOperator(QCriteriaOperator.EQUALS) .withValues(List.of(TestUtils.PROCESS_NAME_BASEPULL)))); - queryInput.setSession(TestUtils.getMockSession()); queryInput.setTableName(TestUtils.TABLE_NAME_BASEPULL); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -160,8 +160,7 @@ public class RunProcessTest public void test() throws QException { TestCallback callback = new TestCallback(); - RunProcessInput request = new RunProcessInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName("addToPeoplesAge"); request.setCallback(callback); RunProcessOutput result = new RunProcessAction().execute(request); @@ -182,11 +181,10 @@ public class RunProcessTest public void testBreakOnFrontendSteps() throws QException { TestCallback callback = new TestCallback(); - QInstance instance = TestUtils.defineInstance(); - RunProcessInput request = new RunProcessInput(instance); + QInstance instance = QContext.getQInstance(); + RunProcessInput request = new RunProcessInput(); String processName = TestUtils.PROCESS_NAME_GREET_PEOPLE_INTERACTIVE; - request.setSession(TestUtils.getMockSession()); request.setProcessName(processName); request.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.BREAK); request.setCallback(callback); @@ -227,11 +225,9 @@ public class RunProcessTest public void testSkipFrontendSteps() throws QException { TestCallback callback = new TestCallback(); - QInstance instance = TestUtils.defineInstance(); - RunProcessInput request = new RunProcessInput(instance); + RunProcessInput request = new RunProcessInput(); String processName = TestUtils.PROCESS_NAME_GREET_PEOPLE_INTERACTIVE; - request.setSession(TestUtils.getMockSession()); request.setProcessName(processName); request.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.SKIP); request.setCallback(callback); @@ -251,11 +247,9 @@ public class RunProcessTest public void testFailOnFrontendSteps() { TestCallback callback = new TestCallback(); - QInstance instance = TestUtils.defineInstance(); - RunProcessInput request = new RunProcessInput(instance); + RunProcessInput request = new RunProcessInput(); String processName = TestUtils.PROCESS_NAME_GREET_PEOPLE_INTERACTIVE; - request.setSession(TestUtils.getMockSession()); request.setProcessName(processName); request.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.FAIL); request.setCallback(callback); @@ -284,7 +278,7 @@ public class RunProcessTest //////////////////////////////////////////////////////////////////////////////// RunProcessInput runProcessInput = new RunProcessInput(); UUIDAndTypeStateKey stateKey = new UUIDAndTypeStateKey(UUID.randomUUID(), StateType.PROCESS_STATUS); - QProcessMetaData process = TestUtils.defineInstance().getProcess(TestUtils.PROCESS_NAME_GREET_PEOPLE); + QProcessMetaData process = QContext.getQInstance().getProcess(TestUtils.PROCESS_NAME_GREET_PEOPLE); ProcessState processState = new RunProcessAction().primeProcessState(runProcessInput, stateKey, process); assertNotNull(processState); } @@ -295,7 +289,7 @@ public class RunProcessTest ** *******************************************************************************/ @Test - void testPrimeProcessRequestAttemptToContinueButStateNotFound() throws QException + void testPrimeProcessRequestAttemptToContinueButStateNotFound() { //////////////////////////////////////////////////////////////////////////////////////////////// // this is a flow where it's a continue, but we don't have a state stored, so it should throw // @@ -303,7 +297,7 @@ public class RunProcessTest RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setStartAfterStep("setupStep"); UUIDAndTypeStateKey stateKey = new UUIDAndTypeStateKey(UUID.randomUUID(), StateType.PROCESS_STATUS); - QProcessMetaData process = TestUtils.defineInstance().getProcess(TestUtils.PROCESS_NAME_GREET_PEOPLE); + QProcessMetaData process = QContext.getQInstance().getProcess(TestUtils.PROCESS_NAME_GREET_PEOPLE); assertThrows(QException.class, () -> { @@ -336,7 +330,7 @@ public class RunProcessTest oldProcessState.getValues().put("foo", "fubu"); RunProcessAction.getStateProvider().put(stateKey, oldProcessState); - QProcessMetaData process = TestUtils.defineInstance().getProcess(TestUtils.PROCESS_NAME_GREET_PEOPLE); + QProcessMetaData process = QContext.getQInstance().getProcess(TestUtils.PROCESS_NAME_GREET_PEOPLE); ProcessState primedProcessState = new RunProcessAction().primeProcessState(runProcessInput, stateKey, process); assertEquals("myValue", primedProcessState.getValues().get("key")); @@ -355,7 +349,7 @@ public class RunProcessTest @Test void testCustomRoutingAddFrontendStep() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QStepMetaData back1 = new QBackendStepMetaData() .withName("back1") @@ -379,8 +373,7 @@ public class RunProcessTest //////////////////////////////////////////////////////////// // make sure that if we run by default, we get to the end // //////////////////////////////////////////////////////////// - RunProcessInput request = new RunProcessInput(qInstance); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(processName); request.setCallback(new TestCallback()); request.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.BREAK); @@ -428,7 +421,7 @@ public class RunProcessTest @Test void testCustomRoutingRemoveSteps() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QStepMetaData back1 = new QBackendStepMetaData() .withName("back1") @@ -458,8 +451,7 @@ public class RunProcessTest //////////////////////////////////////////////////////////////////////////////// // make sure that if we run by default, we get stopped on both frontend steps // //////////////////////////////////////////////////////////////////////////////// - RunProcessInput request = new RunProcessInput(qInstance); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(processName); request.setCallback(new TestCallback()); request.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.BREAK); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/ExportActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/ExportActionTest.java index 6c0ac44c..a4fccc5c 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/ExportActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/ExportActionTest.java @@ -28,6 +28,8 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QUserFacingException; import com.kingsrook.qqq.backend.core.model.actions.reporting.ExportInput; @@ -52,7 +54,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for the ReportAction *******************************************************************************/ -class ExportActionTest +class ExportActionTest extends BaseTest { /******************************************************************************* @@ -122,7 +124,7 @@ class ExportActionTest { try(FileOutputStream outputStream = new FileOutputStream(filename)) { - ExportInput exportInput = new ExportInput(TestUtils.defineInstance(), TestUtils.getMockSession()); + ExportInput exportInput = new ExportInput(); exportInput.setTableName("person"); QTableMetaData table = exportInput.getTable(); @@ -149,7 +151,7 @@ class ExportActionTest @Test void testBadFieldNames() { - ExportInput exportInput = new ExportInput(TestUtils.defineInstance(), TestUtils.getMockSession()); + ExportInput exportInput = new ExportInput(); exportInput.setTableName("person"); exportInput.setFieldNames(List.of("Foo", "Bar", "Baz")); assertThrows(QUserFacingException.class, () -> @@ -166,7 +168,7 @@ class ExportActionTest @Test void testPreExecuteCount() throws QException { - ExportInput exportInput = new ExportInput(TestUtils.defineInstance(), TestUtils.getMockSession()); + ExportInput exportInput = new ExportInput(); exportInput.setTableName("person"); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -198,10 +200,10 @@ class ExportActionTest wideTable.addField(new QFieldMetaData("field" + i, QFieldType.STRING)); } - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.addTable(wideTable); - ExportInput exportInput = new ExportInput(qInstance, TestUtils.getMockSession()); + ExportInput exportInput = new ExportInput(); exportInput.setTableName("wide"); //////////////////////////////////////////////////////////////// diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreterTest.java index d87c630b..4c3fd574 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreterTest.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.actions.reporting; import java.math.BigDecimal; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QFormulaException; import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter; import org.assertj.core.data.Offset; @@ -40,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for FormulaInterpreter *******************************************************************************/ -class FormulaInterpreterTest +class FormulaInterpreterTest extends BaseTest { public static final Offset ZERO_OFFSET = Offset.offset(BigDecimal.ZERO); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/GenerateReportActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/GenerateReportActionTest.java index 989e1a17..590d96e6 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/GenerateReportActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/GenerateReportActionTest.java @@ -31,6 +31,8 @@ import java.time.Month; import java.util.Iterator; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportFormat; import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportInput; @@ -47,7 +49,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportField; import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportMetaData; import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportView; import com.kingsrook.qqq.backend.core.model.metadata.reporting.ReportType; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.testutils.PersonQRecord; import com.kingsrook.qqq.backend.core.utils.TestUtils; @@ -61,7 +62,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for GenerateReportAction *******************************************************************************/ -public class GenerateReportActionTest +public class GenerateReportActionTest extends BaseTest { private static final String REPORT_NAME = "personReport1"; @@ -86,7 +87,7 @@ public class GenerateReportActionTest @Test void testPivot1() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.addReport(definePersonShoesPivotReport(true)); insertPersonRecords(qInstance); runReport(qInstance, Map.of("startDate", LocalDate.of(1980, Month.JANUARY, 1), "endDate", LocalDate.of(1980, Month.DECEMBER, 31))); @@ -141,7 +142,7 @@ public class GenerateReportActionTest @Test void testPivot2() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QReportMetaData report = definePersonShoesPivotReport(false); ////////////////////////////////////////////// @@ -173,7 +174,7 @@ public class GenerateReportActionTest @Test void testPivot3() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QReportMetaData report = definePersonShoesPivotReport(false); ////////////////////////////////////////////////////////////////////////////////////////////// @@ -225,7 +226,7 @@ public class GenerateReportActionTest @Test void testPivot4() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QReportMetaData report = definePersonShoesPivotReport(false); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -283,7 +284,7 @@ public class GenerateReportActionTest @Test void testPivot5() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QReportMetaData report = definePersonShoesPivotReport(false); ///////////////////////////////////////////////////////////////////////////////////// @@ -320,12 +321,11 @@ public class GenerateReportActionTest String name = "/tmp/report.csv"; try(FileOutputStream fileOutputStream = new FileOutputStream(name)) { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.addReport(definePersonShoesPivotReport(true)); insertPersonRecords(qInstance); - ReportInput reportInput = new ReportInput(qInstance); - reportInput.setSession(new QSession()); + ReportInput reportInput = new ReportInput(); reportInput.setReportName(REPORT_NAME); reportInput.setReportFormat(ReportFormat.CSV); reportInput.setReportOutputStream(fileOutputStream); @@ -346,12 +346,11 @@ public class GenerateReportActionTest String name = "/tmp/report.xlsx"; try(FileOutputStream fileOutputStream = new FileOutputStream(name)) { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.addReport(definePersonShoesPivotReport(true)); insertPersonRecords(qInstance); - ReportInput reportInput = new ReportInput(qInstance); - reportInput.setSession(new QSession()); + ReportInput reportInput = new ReportInput(); reportInput.setReportName(REPORT_NAME); reportInput.setReportFormat(ReportFormat.XLSX); reportInput.setReportOutputStream(fileOutputStream); @@ -368,8 +367,7 @@ public class GenerateReportActionTest *******************************************************************************/ private void runReport(QInstance qInstance, Map inputValues) throws QException { - ReportInput reportInput = new ReportInput(qInstance); - reportInput.setSession(new QSession()); + ReportInput reportInput = new ReportInput(); reportInput.setReportName(REPORT_NAME); reportInput.setReportFormat(ReportFormat.LIST_OF_MAPS); reportInput.setReportOutputStream(new ByteArrayOutputStream()); @@ -454,7 +452,7 @@ public class GenerateReportActionTest @Test void testTableOnlyReport() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QReportMetaData report = new QReportMetaData() .withName(REPORT_NAME) .withDataSources(List.of( @@ -501,7 +499,7 @@ public class GenerateReportActionTest @Test void testTwoTableViewsOneDataSourceReport() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QReportMetaData report = new QReportMetaData() .withName(REPORT_NAME) .withDataSources(List.of( @@ -562,12 +560,11 @@ public class GenerateReportActionTest @Test void testReportWithPossibleValueColumns() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); insertPersonRecords(qInstance); - ReportInput reportInput = new ReportInput(qInstance); - reportInput.setSession(new QSession()); + ReportInput reportInput = new ReportInput(); reportInput.setReportName(TestUtils.REPORT_NAME_PERSON_SIMPLE); reportInput.setReportFormat(ReportFormat.LIST_OF_MAPS); reportInput.setReportOutputStream(new ByteArrayOutputStream()); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/ExecuteCodeActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/ExecuteCodeActionTest.java index 400eaf23..474ef1d1 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/ExecuteCodeActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/ExecuteCodeActionTest.java @@ -26,10 +26,12 @@ import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.function.Function; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.scripts.logging.Log4jCodeExecutionLogger; import com.kingsrook.qqq.backend.core.actions.scripts.logging.NoopCodeExecutionLogger; import com.kingsrook.qqq.backend.core.actions.scripts.logging.QCodeExecutionLoggerInterface; import com.kingsrook.qqq.backend.core.actions.scripts.logging.StoreScriptLogAndScriptLogLineExecutionLogger; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QCodeException; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.scripts.ExecuteCodeInput; @@ -39,7 +41,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeUsage; import com.kingsrook.qqq.backend.core.model.scripts.ScriptsMetaDataProvider; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import com.kingsrook.qqq.backend.core.utils.ValueUtils; @@ -53,7 +54,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; /******************************************************************************* ** Unit test for ExecuteCodeAction *******************************************************************************/ -class ExecuteCodeActionTest +class ExecuteCodeActionTest extends BaseTest { /******************************************************************************* @@ -74,7 +75,7 @@ class ExecuteCodeActionTest @Test void test() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ExecuteCodeInput executeCodeInput = setupInput(qInstance, Map.of("x", 4), new NoopCodeExecutionLogger()); ExecuteCodeOutput executeCodeOutput = new ExecuteCodeOutput(); new ExecuteCodeAction().run(executeCodeInput, executeCodeOutput); @@ -88,8 +89,7 @@ class ExecuteCodeActionTest *******************************************************************************/ private ExecuteCodeInput setupInput(QInstance qInstance, Map context, QCodeExecutionLoggerInterface executionLogger) { - ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(qInstance); - executeCodeInput.setSession(new QSession()); + ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(); executeCodeInput.setCodeReference(new QCodeReference(ScriptInJava.class, QCodeUsage.CUSTOMIZER)); executeCodeInput.setContext(context); executeCodeInput.setExecutionLogger(executionLogger); @@ -104,7 +104,7 @@ class ExecuteCodeActionTest @Test void testLog4jLogger() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ExecuteCodeInput executeCodeInput = setupInput(qInstance, Map.of("x", 4), new Log4jCodeExecutionLogger()); ExecuteCodeOutput executeCodeOutput = new ExecuteCodeOutput(); new ExecuteCodeAction().run(executeCodeInput, executeCodeOutput); @@ -119,7 +119,7 @@ class ExecuteCodeActionTest @Test void testTableLogger() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); new ScriptsMetaDataProvider().defineAll(qInstance, TestUtils.MEMORY_BACKEND_NAME, null); ExecuteCodeInput executeCodeInput = setupInput(qInstance, Map.of("x", 4), new StoreScriptLogAndScriptLogLineExecutionLogger(1701, 1702)); @@ -144,7 +144,7 @@ class ExecuteCodeActionTest @Test void testException() { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ExecuteCodeInput executeCodeInput = setupInput(qInstance, Map.of(), new NoopCodeExecutionLogger()); ExecuteCodeOutput executeCodeOutput = new ExecuteCodeOutput(); assertThrows(QCodeException.class, () -> diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/RunAssociatedScriptActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/RunAssociatedScriptActionTest.java index 5d708ed4..0a5fe847 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/RunAssociatedScriptActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/RunAssociatedScriptActionTest.java @@ -25,8 +25,10 @@ package com.kingsrook.qqq.backend.core.actions.scripts; import java.io.Serializable; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.tables.GetAction; import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QNotFoundException; import com.kingsrook.qqq.backend.core.model.actions.scripts.RunAssociatedScriptInput; @@ -44,7 +46,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.tables.AssociatedScript; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.scripts.ScriptsMetaDataProvider; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -53,7 +54,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; /******************************************************************************* ** Unit test for RunAssociatedScriptAction *******************************************************************************/ -class RunAssociatedScriptActionTest +class RunAssociatedScriptActionTest extends BaseTest { /******************************************************************************* @@ -68,8 +69,7 @@ class RunAssociatedScriptActionTest return "Hello"; """); - RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(instance); - runAssociatedScriptInput.setSession(new QSession()); + RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(); runAssociatedScriptInput.setInputValues(Map.of()); runAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); runAssociatedScriptInput.setCodeReference(new AssociatedScriptCodeReference() @@ -95,7 +95,7 @@ class RunAssociatedScriptActionTest *******************************************************************************/ private QInstance setupInstance() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); QTableMetaData table = instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY) .withField(new QFieldMetaData("testScriptId", QFieldType.INTEGER)) .withAssociatedScript(new AssociatedScript() @@ -126,8 +126,7 @@ class RunAssociatedScriptActionTest { QInstance instance = setupInstance(); - RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(instance); - runAssociatedScriptInput.setSession(new QSession()); + RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(); runAssociatedScriptInput.setInputValues(Map.of()); runAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); runAssociatedScriptInput.setCodeReference(new AssociatedScriptCodeReference() @@ -152,8 +151,7 @@ class RunAssociatedScriptActionTest { QInstance instance = setupInstance(); - RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(instance); - runAssociatedScriptInput.setSession(new QSession()); + RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(); runAssociatedScriptInput.setInputValues(Map.of()); runAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); runAssociatedScriptInput.setCodeReference(new AssociatedScriptCodeReference() @@ -178,14 +176,12 @@ class RunAssociatedScriptActionTest { QInstance instance = setupInstance(); - UpdateInput updateInput = new UpdateInput(instance); - updateInput.setSession(new QSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); updateInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("testScriptId", -9998))); new UpdateAction().execute(updateInput); - RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(instance); - runAssociatedScriptInput.setSession(new QSession()); + RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(); runAssociatedScriptInput.setInputValues(Map.of()); runAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); runAssociatedScriptInput.setCodeReference(new AssociatedScriptCodeReference() @@ -214,21 +210,18 @@ class RunAssociatedScriptActionTest return "Hello"; """); - GetInput getInput = new GetInput(instance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); getInput.setPrimaryKey(1); GetOutput getOutput = new GetAction().execute(getInput); Integer scriptId = getOutput.getRecord().getValueInteger("testScriptId"); - UpdateInput updateInput = new UpdateInput(instance); - updateInput.setSession(new QSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName("script"); updateInput.setRecords(List.of(new QRecord().withValue("id", scriptId).withValue("currentScriptRevisionId", null))); new UpdateAction().execute(updateInput); - RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(instance); - runAssociatedScriptInput.setSession(new QSession()); + RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(); runAssociatedScriptInput.setInputValues(Map.of()); runAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); runAssociatedScriptInput.setCodeReference(new AssociatedScriptCodeReference() @@ -257,21 +250,18 @@ class RunAssociatedScriptActionTest return "Hello"; """); - GetInput getInput = new GetInput(instance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); getInput.setPrimaryKey(1); GetOutput getOutput = new GetAction().execute(getInput); Integer scriptId = getOutput.getRecord().getValueInteger("testScriptId"); - UpdateInput updateInput = new UpdateInput(instance); - updateInput.setSession(new QSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName("script"); updateInput.setRecords(List.of(new QRecord().withValue("id", scriptId).withValue("currentScriptRevisionId", 9997))); new UpdateAction().execute(updateInput); - RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(instance); - runAssociatedScriptInput.setSession(new QSession()); + RunAssociatedScriptInput runAssociatedScriptInput = new RunAssociatedScriptInput(); runAssociatedScriptInput.setInputValues(Map.of()); runAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); runAssociatedScriptInput.setCodeReference(new AssociatedScriptCodeReference() @@ -293,8 +283,7 @@ class RunAssociatedScriptActionTest *******************************************************************************/ private void insertScript(QInstance instance, Serializable recordId, String code) throws QException { - StoreAssociatedScriptInput storeAssociatedScriptInput = new StoreAssociatedScriptInput(instance); - storeAssociatedScriptInput.setSession(new QSession()); + StoreAssociatedScriptInput storeAssociatedScriptInput = new StoreAssociatedScriptInput(); storeAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); storeAssociatedScriptInput.setRecordPrimaryKey(recordId); storeAssociatedScriptInput.setCode(code); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptActionTest.java index 8c0cced7..5bca2fea 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptActionTest.java @@ -24,7 +24,9 @@ package com.kingsrook.qqq.backend.core.actions.scripts; import java.io.Serializable; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.tables.GetAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.scripts.StoreAssociatedScriptInput; import com.kingsrook.qqq.backend.core.model.actions.scripts.StoreAssociatedScriptOutput; @@ -37,7 +39,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.tables.AssociatedScript; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.scripts.ScriptsMetaDataProvider; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -50,7 +51,7 @@ import static org.junit.jupiter.api.Assertions.fail; /******************************************************************************* ** Unit test for StoreAssociatedScriptAction *******************************************************************************/ -class StoreAssociatedScriptActionTest +class StoreAssociatedScriptActionTest extends BaseTest { /******************************************************************************* ** @@ -70,7 +71,7 @@ class StoreAssociatedScriptActionTest @Test void test() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); QTableMetaData table = instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY) .withField(new QFieldMetaData("testScriptId", QFieldType.INTEGER)) .withAssociatedScript(new AssociatedScript() @@ -96,8 +97,7 @@ class StoreAssociatedScriptActionTest new QRecord().withValue("id", 2).withValue("name", "Other Script") )); - StoreAssociatedScriptInput storeAssociatedScriptInput = new StoreAssociatedScriptInput(instance); - storeAssociatedScriptInput.setSession(new QSession()); + StoreAssociatedScriptInput storeAssociatedScriptInput = new StoreAssociatedScriptInput(); storeAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); storeAssociatedScriptInput.setRecordPrimaryKey(1); storeAssociatedScriptInput.setCode("var i = 0;"); @@ -156,8 +156,7 @@ class StoreAssociatedScriptActionTest *******************************************************************************/ private void assertValueInField(QInstance instance, String tableName, Serializable recordId, String fieldName, Serializable value) throws QException { - GetInput getInput = new GetInput(instance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(tableName); getInput.setPrimaryKey(recordId); GetOutput getOutput = new GetAction().execute(getInput); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/TestScriptActionInterfaceTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/TestScriptActionInterfaceTest.java index 28627695..2d4710d7 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/TestScriptActionInterfaceTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/TestScriptActionInterfaceTest.java @@ -26,6 +26,8 @@ import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.function.Function; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.scripts.ExecuteCodeInput; import com.kingsrook.qqq.backend.core.model.actions.scripts.TestScriptInput; @@ -35,8 +37,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeUsage; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; -import com.kingsrook.qqq.backend.core.model.session.QSession; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import com.kingsrook.qqq.backend.core.utils.ValueUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -47,7 +47,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for TestScriptActionInterface *******************************************************************************/ -class TestScriptActionInterfaceTest +class TestScriptActionInterfaceTest extends BaseTest { /******************************************************************************* @@ -56,10 +56,9 @@ class TestScriptActionInterfaceTest @Test void test() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); - TestScriptInput testScriptInput = new TestScriptInput(qInstance); - testScriptInput.setSession(new QSession()); + TestScriptInput testScriptInput = new TestScriptInput(); testScriptInput.setInputValues(Map.of("name", "Darin", "age", 42)); testScriptInput.setCodeReference(new QCodeReference(SampleScript.class, QCodeUsage.CUSTOMIZER)); TestScriptOutput testScriptOutput = new TestScriptOutput(); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/BuildScriptLogAndScriptLogLineExecutionLoggerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/BuildScriptLogAndScriptLogLineExecutionLoggerTest.java index dcee174b..41d2a02b 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/BuildScriptLogAndScriptLogLineExecutionLoggerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/BuildScriptLogAndScriptLogLineExecutionLoggerTest.java @@ -24,12 +24,13 @@ package com.kingsrook.qqq.backend.core.actions.scripts.logging; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.scripts.ExecuteCodeInput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.scripts.ScriptsMetaDataProvider; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -41,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for BuildScriptLogAndScriptLogLineExecutionLogger *******************************************************************************/ -class BuildScriptLogAndScriptLogLineExecutionLoggerTest +class BuildScriptLogAndScriptLogLineExecutionLoggerTest extends BaseTest { /******************************************************************************* ** @@ -49,10 +50,9 @@ class BuildScriptLogAndScriptLogLineExecutionLoggerTest @Test void test() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); new ScriptsMetaDataProvider().defineAll(instance, TestUtils.MEMORY_BACKEND_NAME, null); - ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(instance); - executeCodeInput.setSession(new QSession()); + ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(); executeCodeInput.setInput(Map.of("a", 1)); BuildScriptLogAndScriptLogLineExecutionLogger logger = new BuildScriptLogAndScriptLogLineExecutionLogger(9999, 8888); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/StoreScriptLogAndScriptLogLineExecutionLoggerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/StoreScriptLogAndScriptLogLineExecutionLoggerTest.java index 42fb6cca..799ea0b7 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/StoreScriptLogAndScriptLogLineExecutionLoggerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/logging/StoreScriptLogAndScriptLogLineExecutionLoggerTest.java @@ -24,12 +24,13 @@ package com.kingsrook.qqq.backend.core.actions.scripts.logging; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.scripts.ExecuteCodeInput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.scripts.ScriptsMetaDataProvider; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -44,7 +45,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for StoreScriptLogAndScriptLogLineExecutionLogger *******************************************************************************/ -class StoreScriptLogAndScriptLogLineExecutionLoggerTest +class StoreScriptLogAndScriptLogLineExecutionLoggerTest extends BaseTest { /******************************************************************************* @@ -65,10 +66,9 @@ class StoreScriptLogAndScriptLogLineExecutionLoggerTest @Test void test() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); new ScriptsMetaDataProvider().defineAll(instance, TestUtils.MEMORY_BACKEND_NAME, null); - ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(instance); - executeCodeInput.setSession(new QSession()); + ExecuteCodeInput executeCodeInput = new ExecuteCodeInput(); executeCodeInput.setInput(Map.of("a", 1)); StoreScriptLogAndScriptLogLineExecutionLogger logger = new StoreScriptLogAndScriptLogLineExecutionLogger(9999, 8888); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/AggregateActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/AggregateActionTest.java index 34de441a..c600c294 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/AggregateActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/AggregateActionTest.java @@ -22,9 +22,9 @@ package com.kingsrook.qqq.backend.core.actions.tables; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.aggregate.AggregateInput; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -32,7 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; /******************************************************************************* ** Unit test for com.kingsrook.qqq.backend.core.actions.tables.AggregateAction *******************************************************************************/ -class AggregateActionTest +class AggregateActionTest extends BaseTest { /******************************************************************************* @@ -43,8 +43,7 @@ class AggregateActionTest @Test void test() throws QException { - AggregateInput request = new AggregateInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + AggregateInput request = new AggregateInput(); request.setTableName("person"); assertThrows(IllegalStateException.class, () -> new AggregateAction().execute(request)); } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/CountActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/CountActionTest.java index 08082aef..ba1c7c9b 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/CountActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/CountActionTest.java @@ -22,10 +22,10 @@ package com.kingsrook.qqq.backend.core.actions.tables; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountInput; import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountOutput; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; ** Unit test for CountAction ** *******************************************************************************/ -class CountActionTest +class CountActionTest extends BaseTest { /******************************************************************************* @@ -45,8 +45,7 @@ class CountActionTest @Test public void test() throws QException { - CountInput request = new CountInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + CountInput request = new CountInput(); request.setTableName("person"); CountOutput result = new CountAction().execute(request); assertNotNull(result); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteActionTest.java index f5d5c5bf..a21ee65c 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteActionTest.java @@ -23,12 +23,12 @@ package com.kingsrook.qqq.backend.core.actions.tables; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.delete.DeleteInput; import com.kingsrook.qqq.backend.core.model.actions.tables.delete.DeleteOutput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -40,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; ** Unit test for DeleteAction ** *******************************************************************************/ -class DeleteActionTest +class DeleteActionTest extends BaseTest { /******************************************************************************* @@ -51,8 +51,7 @@ class DeleteActionTest @Test public void test() throws QException { - DeleteInput request = new DeleteInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + DeleteInput request = new DeleteInput(); request.setTableName("person"); request.setPrimaryKeys(List.of(1, 2)); DeleteOutput result = new DeleteAction().execute(request); @@ -69,8 +68,7 @@ class DeleteActionTest @Test void testErrorIfBothPrimaryKeysAndFilter() { - DeleteInput request = new DeleteInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + DeleteInput request = new DeleteInput(); request.setTableName("person"); request.setPrimaryKeys(List.of(1, 2)); request.setQueryFilter(new QQueryFilter()); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/GetActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/GetActionTest.java index 71575bd2..1aa19cf8 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/GetActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/GetActionTest.java @@ -25,6 +25,8 @@ package com.kingsrook.qqq.backend.core.actions.tables; import java.time.Instant; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.delete.DeleteInput; import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput; @@ -35,7 +37,6 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -50,7 +51,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; ** Unit test for GetAction ** *******************************************************************************/ -class GetActionTest +class GetActionTest extends BaseTest { /******************************************************************************* @@ -74,8 +75,7 @@ class GetActionTest @Test public void test() throws QException { - GetInput request = new GetInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + GetInput request = new GetInput(); request.setTableName("person"); request.setPrimaryKey(1); request.setShouldGenerateDisplayValues(true); @@ -93,7 +93,7 @@ class GetActionTest @Test void testUniqueKeyCache() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ///////////////////////////////////// // insert rows in the source table // @@ -108,8 +108,7 @@ class GetActionTest // get from the table which caches it - confirm they are (magically) found // ///////////////////////////////////////////////////////////////////////////// { - GetInput getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); getInput.setUniqueKey(Map.of("firstName", "George", "lastName", "Washington")); GetOutput getOutput = new GetAction().execute(getInput); @@ -122,8 +121,7 @@ class GetActionTest // request a row that doesn't exist in cache or source, should miss both // /////////////////////////////////////////////////////////////////////////// { - GetInput getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); getInput.setUniqueKey(Map.of("firstName", "John", "lastName", "McCain")); GetOutput getOutput = new GetAction().execute(getInput); @@ -134,14 +132,12 @@ class GetActionTest // update the record in the source table - then re-get from cache table - shouldn't see new value. // ///////////////////////////////////////////////////////////////////////////////////////////////////// { - UpdateInput updateInput = new UpdateInput(qInstance); - updateInput.setSession(new QSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); updateInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("noOfShoes", 6))); new UpdateAction().execute(updateInput); - GetInput getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); getInput.setUniqueKey(Map.of("firstName", "George", "lastName", "Washington")); GetOutput getOutput = new GetAction().execute(getInput); @@ -154,14 +150,12 @@ class GetActionTest // delete the cached record; re-get, and we should see the updated value // /////////////////////////////////////////////////////////////////////////// { - DeleteInput deleteInput = new DeleteInput(qInstance); - deleteInput.setSession(new QSession()); + DeleteInput deleteInput = new DeleteInput(); deleteInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); deleteInput.setQueryFilter(new QQueryFilter(new QFilterCriteria("firstName", QCriteriaOperator.EQUALS, "George"))); new DeleteAction().execute(deleteInput); - GetInput getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); getInput.setUniqueKey(Map.of("firstName", "George", "lastName", "Washington")); GetOutput getOutput = new GetAction().execute(getInput); @@ -174,14 +168,12 @@ class GetActionTest // update the source record; see that it isn't updated in cache. // /////////////////////////////////////////////////////////////////// { - UpdateInput updateInput = new UpdateInput(qInstance); - updateInput.setSession(new QSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); updateInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("noOfShoes", 7))); new UpdateAction().execute(updateInput); - GetInput getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); getInput.setUniqueKey(Map.of("firstName", "George", "lastName", "Washington")); GetOutput getOutput = new GetAction().execute(getInput); @@ -193,8 +185,7 @@ class GetActionTest // then artificially move back the cachedDate in the cache table. // // then re-get from cache table, and we should see the updated value // /////////////////////////////////////////////////////////////////////// - updateInput = new UpdateInput(qInstance); - updateInput.setSession(new QSession()); + updateInput = new UpdateInput(); updateInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); updateInput.setRecords(List.of(getOutput.getRecord().withValue("cachedDate", Instant.parse("2001-01-01T00:00:00Z")))); new UpdateAction().execute(updateInput); @@ -206,20 +197,18 @@ class GetActionTest ///////////////////////////////////////////////// // should only be 1 cache record at this point // ///////////////////////////////////////////////// - assertEquals(1, TestUtils.queryTable(TestUtils.defineInstance(), TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE).size()); + assertEquals(1, TestUtils.queryTable(QContext.getQInstance(), TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE).size()); ////////////////////////////////////////////////////////////////////// // delete the source record - it will still be in the cache though. // ////////////////////////////////////////////////////////////////////// { - DeleteInput deleteInput = new DeleteInput(qInstance); - deleteInput.setSession(new QSession()); + DeleteInput deleteInput = new DeleteInput(); deleteInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); deleteInput.setPrimaryKeys(List.of(1)); new DeleteAction().execute(deleteInput); - GetInput getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); getInput.setUniqueKey(Map.of("firstName", "George", "lastName", "Washington")); GetOutput getOutput = new GetAction().execute(getInput); @@ -229,14 +218,12 @@ class GetActionTest // then artificially move back the cachedDate in the cache table. // // then re-get from cache table, and now it should go away // //////////////////////////////////////////////////////////////////// - UpdateInput updateInput = new UpdateInput(qInstance); - updateInput.setSession(new QSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); updateInput.setRecords(List.of(getOutput.getRecord().withValue("cachedDate", Instant.parse("2001-01-01T00:00:00Z")))); new UpdateAction().execute(updateInput); - getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + getInput = new GetInput(); getInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY_CACHE); getInput.setUniqueKey(Map.of("firstName", "George", "lastName", "Washington")); getOutput = new GetAction().execute(getInput); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/InsertActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/InsertActionTest.java index f756045a..958fdcb1 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/InsertActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/InsertActionTest.java @@ -24,13 +24,14 @@ package com.kingsrook.qqq.backend.core.actions.tables; import java.util.ArrayList; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput; import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.tables.UniqueKey; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.core.utils.TestUtils; @@ -48,7 +49,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; ** Unit test for InsertAction ** *******************************************************************************/ -class InsertActionTest +class InsertActionTest extends BaseTest { /******************************************************************************* @@ -71,8 +72,7 @@ class InsertActionTest @Test public void test() throws QException { - InsertInput request = new InsertInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + InsertInput request = new InsertInput(); request.setTableName("person"); List records = new ArrayList<>(); QRecord record = new QRecord(); @@ -91,10 +91,9 @@ class InsertActionTest @Test void testUniqueKeysPreExisting() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of( new QRecord().withValue("firstName", "Darin").withValue("lastName", "Kelkhoff") @@ -141,10 +140,9 @@ class InsertActionTest @Test void testUniqueKeysWithinBatch() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setRecords(List.of( new QRecord().withValue("firstName", "Darin").withValue("lastName", "Kelkhoff"), @@ -167,12 +165,11 @@ class InsertActionTest @Test void testSingleColumnUniqueKey() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.getTable(TestUtils.TABLE_NAME_SHAPE) .withUniqueKey(new UniqueKey("name")); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_SHAPE); insertInput.setRecords(List.of( new QRecord().withValue("name", "Circle"), @@ -195,10 +192,9 @@ class InsertActionTest @Test void testSkippingUniqueKeys() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); insertInput.setSkipUniqueKeyCheck(true); insertInput.setRecords(List.of( diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/QueryActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/QueryActionTest.java index a936e6b4..f33d02b0 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/QueryActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/QueryActionTest.java @@ -23,7 +23,9 @@ package com.kingsrook.qqq.backend.core.actions.tables; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.reporting.RecordPipe; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryOutput; @@ -38,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; ** Unit test for QueryAction ** *******************************************************************************/ -class QueryActionTest +class QueryActionTest extends BaseTest { /******************************************************************************* @@ -49,8 +51,7 @@ class QueryActionTest @Test public void test() throws QException { - QueryInput queryInput = new QueryInput(TestUtils.defineInstance()); - queryInput.setSession(TestUtils.getMockSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName("person"); QueryOutput queryOutput = new QueryAction().execute(queryInput); assertNotNull(queryOutput); @@ -89,11 +90,10 @@ class QueryActionTest @Test public void testRecordPipeShapeTable() throws QException { - TestUtils.insertDefaultShapes(TestUtils.defineInstance()); + TestUtils.insertDefaultShapes(QContext.getQInstance()); - RecordPipe pipe = new RecordPipe(); - QueryInput queryInput = new QueryInput(TestUtils.defineInstance()); - queryInput.setSession(TestUtils.getMockSession()); + RecordPipe pipe = new RecordPipe(); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_SHAPE); queryInput.setRecordPipe(pipe); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -104,6 +104,7 @@ class QueryActionTest } + /******************************************************************************* ** Test running with a recordPipe - using the person table, which uses the mock ** backend, which is known to do a single-add (not addAll) to the query output. @@ -112,9 +113,8 @@ class QueryActionTest @Test public void testRecordPipePersonTable() throws QException { - RecordPipe pipe = new RecordPipe(); - QueryInput queryInput = new QueryInput(TestUtils.defineInstance()); - queryInput.setSession(TestUtils.getMockSession()); + RecordPipe pipe = new RecordPipe(); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_PERSON); queryInput.setRecordPipe(pipe); QueryOutput queryOutput = new QueryAction().execute(queryInput); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/UpdateActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/UpdateActionTest.java index 8c9d64eb..e03729c1 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/UpdateActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/UpdateActionTest.java @@ -24,11 +24,11 @@ package com.kingsrook.qqq.backend.core.actions.tables; import java.util.ArrayList; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput; import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -37,7 +37,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; ** Unit test for UpdateAction ** *******************************************************************************/ -class UpdateActionTest +class UpdateActionTest extends BaseTest { /******************************************************************************* @@ -48,11 +48,10 @@ class UpdateActionTest @Test public void test() throws QException { - UpdateInput request = new UpdateInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + UpdateInput request = new UpdateInput(); request.setTableName("person"); - List records =new ArrayList<>(); - QRecord record = new QRecord(); + List records = new ArrayList<>(); + QRecord record = new QRecord(); record.setValue("id", "47"); record.setValue("firstName", "James"); records.add(record); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/templates/ConvertHtmlToPdfActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/templates/ConvertHtmlToPdfActionTest.java index 4a55a56c..a145a196 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/templates/ConvertHtmlToPdfActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/templates/ConvertHtmlToPdfActionTest.java @@ -26,18 +26,18 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.file.Path; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.model.templates.ConvertHtmlToPdfInput; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for ConvertHtmlToPdfAction *******************************************************************************/ -class ConvertHtmlToPdfActionTest +class ConvertHtmlToPdfActionTest extends BaseTest { /******************************************************************************* @@ -46,9 +46,8 @@ class ConvertHtmlToPdfActionTest @Test void test() throws QException, IOException { - QInstance instance = TestUtils.defineInstance(); - ConvertHtmlToPdfInput input = new ConvertHtmlToPdfInput(instance); - input.setSession(new QSession()); + QInstance instance = QContext.getQInstance(); + ConvertHtmlToPdfInput input = new ConvertHtmlToPdfInput(); input.setHtml(""" diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/templates/RenderTemplateActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/templates/RenderTemplateActionTest.java index ad5a96bd..1b8a8676 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/templates/RenderTemplateActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/templates/RenderTemplateActionTest.java @@ -23,12 +23,11 @@ package com.kingsrook.qqq.backend.core.actions.templates; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.model.templates.RenderTemplateInput; import com.kingsrook.qqq.backend.core.model.templates.RenderTemplateOutput; import com.kingsrook.qqq.backend.core.model.templates.TemplateType; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -37,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for RenderTemplateAction *******************************************************************************/ -class RenderTemplateActionTest +class RenderTemplateActionTest extends BaseTest { /******************************************************************************* @@ -46,8 +45,7 @@ class RenderTemplateActionTest @Test void test() throws QException { - RenderTemplateInput renderTemplateInput = new RenderTemplateInput(TestUtils.defineInstance()); - renderTemplateInput.setSession(new QSession()); + RenderTemplateInput renderTemplateInput = new RenderTemplateInput(); renderTemplateInput.setCode(""" Hello, $name"""); renderTemplateInput.setContext(Map.of("name", "Darin")); @@ -64,8 +62,7 @@ class RenderTemplateActionTest @Test void testConvenientWrapper() throws QException { - RenderTemplateInput parentActionInput = new RenderTemplateInput(TestUtils.defineInstance()); - parentActionInput.setSession(new QSession()); + RenderTemplateInput parentActionInput = new RenderTemplateInput(); String template = "Hello, $name"; assertEquals("Hello, Darin", RenderTemplateAction.renderVelocity(parentActionInput, Map.of("name", "Darin"), template)); @@ -85,8 +82,7 @@ class RenderTemplateActionTest @Test void testMissingType() { - RenderTemplateInput parentActionInput = new RenderTemplateInput(TestUtils.defineInstance()); - parentActionInput.setSession(new QSession()); + RenderTemplateInput parentActionInput = new RenderTemplateInput(); assertThatThrownBy(() -> RenderTemplateAction.render(parentActionInput, null, Map.of("name", "Darin"), "Hello, $name")) .isInstanceOf(QException.class) diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QPossibleValueTranslatorTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QPossibleValueTranslatorTest.java index 2b4839f3..385b512f 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QPossibleValueTranslatorTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QPossibleValueTranslatorTest.java @@ -26,6 +26,8 @@ import java.math.BigDecimal; import java.util.Collections; import java.util.List; import java.util.Set; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; @@ -48,7 +50,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for QPossibleValueTranslator *******************************************************************************/ -public class QPossibleValueTranslatorTest +public class QPossibleValueTranslatorTest extends BaseTest { /******************************************************************************* @@ -70,7 +72,7 @@ public class QPossibleValueTranslatorTest @Test void testPossibleValueEnum() { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QPossibleValueTranslator possibleValueTranslator = new QPossibleValueTranslator(qInstance, new QSession()); QFieldMetaData stateField = qInstance.getTable("person").getField("homeStateId"); QPossibleValueSource possibleValueSource = qInstance.getPossibleValueSource(stateField.getPossibleValueSourceName()); @@ -130,7 +132,7 @@ public class QPossibleValueTranslatorTest @Test void testPossibleValueTable() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QPossibleValueTranslator possibleValueTranslator = new QPossibleValueTranslator(qInstance, new QSession()); QFieldMetaData shapeField = qInstance.getTable(TestUtils.TABLE_NAME_PERSON).getField("favoriteShapeId"); QPossibleValueSource possibleValueSource = qInstance.getPossibleValueSource(shapeField.getPossibleValueSourceName()); @@ -204,7 +206,7 @@ public class QPossibleValueTranslatorTest @Test void testPossibleValueTableWithBadForeignKeys() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QPossibleValueTranslator possibleValueTranslator = new QPossibleValueTranslator(qInstance, new QSession()); QFieldMetaData shapeField = qInstance.getTable(TestUtils.TABLE_NAME_PERSON).getField("favoriteShapeId"); @@ -231,7 +233,7 @@ public class QPossibleValueTranslatorTest @Test void testPossibleValueTableMultiplePvsForATable() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QTableMetaData shapeTable = qInstance.getTable(TestUtils.TABLE_NAME_SHAPE); QTableMetaData personTable = qInstance.getTable(TestUtils.TABLE_NAME_PERSON); @@ -296,7 +298,7 @@ public class QPossibleValueTranslatorTest @Test void testCustomPossibleValue() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QTableMetaData personTable = qInstance.getTable(TestUtils.TABLE_NAME_PERSON); String fieldName = "customValue"; @@ -335,7 +337,7 @@ public class QPossibleValueTranslatorTest ///////////////////////////////////////////////////////////////// // first, make sure it doesn't crash with null or empty inputs // ///////////////////////////////////////////////////////////////// - QPossibleValueTranslator possibleValueTranslator = new QPossibleValueTranslator(TestUtils.defineInstance(), new QSession()); + QPossibleValueTranslator possibleValueTranslator = new QPossibleValueTranslator(QContext.getQInstance(), new QSession()); possibleValueTranslator.translatePossibleValuesInRecords(table, null); possibleValueTranslator.translatePossibleValuesInRecords(table, Collections.emptyList()); @@ -369,7 +371,7 @@ public class QPossibleValueTranslatorTest @Test void testPossibleValueWithSecondaryPossibleValueLabel() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.addTable(new QTableMetaData() .withName("city") @@ -410,7 +412,7 @@ public class QPossibleValueTranslatorTest .withTableName("country") .withValueFormatAndFields(PVSValueFormatAndFields.LABEL_ONLY)); - List regions = List.of(new QRecord().withValue("id", 11).withValue("name", "Missouri").withValue("countryId", 111)); + List regions = List.of(new QRecord().withValue("id", 11).withValue("name", "Missouri").withValue("countryId", 111)); List countries = List.of(new QRecord().withValue("id", 111).withValue("name", "U.S.A")); TestUtils.insertRecords(qInstance, qInstance.getTable("region"), regions); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatterTest.java index 97fe57ab..79d0d0bd 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatterTest.java @@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.core.actions.values; import java.math.BigDecimal; import java.util.Collections; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.fields.DisplayFormat; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; @@ -39,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for QValueFormatter *******************************************************************************/ -class QValueFormatterTest +class QValueFormatterTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/SearchPossibleValueSourceActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/SearchPossibleValueSourceActionTest.java index 7e66f51d..d626db52 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/SearchPossibleValueSourceActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/SearchPossibleValueSourceActionTest.java @@ -24,10 +24,11 @@ package com.kingsrook.qqq.backend.core.actions.values; import java.io.Serializable; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.values.SearchPossibleValueSourceInput; import com.kingsrook.qqq.backend.core.model.actions.values.SearchPossibleValueSourceOutput; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -43,7 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for SearchPossibleValueSourceAction *******************************************************************************/ -class SearchPossibleValueSourceActionTest +class SearchPossibleValueSourceActionTest extends BaseTest { /******************************************************************************* @@ -54,7 +55,7 @@ class SearchPossibleValueSourceActionTest void beforeAndAfterEach() throws QException { MemoryRecordStore.getInstance().reset(); - TestUtils.insertDefaultShapes(TestUtils.defineInstance()); + TestUtils.insertDefaultShapes(QContext.getQInstance()); } @@ -202,8 +203,7 @@ class SearchPossibleValueSourceActionTest *******************************************************************************/ private SearchPossibleValueSourceOutput getSearchPossibleValueSourceOutput(String searchTerm, String possibleValueSourceName) throws QException { - SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(TestUtils.defineInstance()); - input.setSession(new QSession()); + SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(); input.setSearchTerm(searchTerm); input.setPossibleValueSourceName(possibleValueSourceName); SearchPossibleValueSourceOutput output = new SearchPossibleValueSourceAction().execute(input); @@ -217,8 +217,7 @@ class SearchPossibleValueSourceActionTest *******************************************************************************/ private SearchPossibleValueSourceOutput getSearchPossibleValueSourceOutputById(Serializable id, String possibleValueSourceName) throws QException { - SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(TestUtils.defineInstance()); - input.setSession(new QSession()); + SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(); input.setIdList(List.of(id)); input.setPossibleValueSourceName(possibleValueSourceName); SearchPossibleValueSourceOutput output = new SearchPossibleValueSourceAction().execute(input); @@ -232,8 +231,7 @@ class SearchPossibleValueSourceActionTest *******************************************************************************/ private SearchPossibleValueSourceOutput getSearchPossibleValueSourceOutputByIds(List ids, String possibleValueSourceName) throws QException { - SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(TestUtils.defineInstance()); - input.setSession(new QSession()); + SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(); input.setIdList(ids); input.setPossibleValueSourceName(possibleValueSourceName); SearchPossibleValueSourceOutput output = new SearchPossibleValueSourceAction().execute(input); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/ValueBehaviorApplierTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/ValueBehaviorApplierTest.java index 83841c18..bb5f8b13 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/ValueBehaviorApplierTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/values/ValueBehaviorApplierTest.java @@ -24,6 +24,8 @@ package com.kingsrook.qqq.backend.core.actions.values; import java.util.List; import java.util.Optional; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.ValueTooLongBehavior; @@ -39,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.fail; /******************************************************************************* ** Unit test for ValueBehaviorApplier *******************************************************************************/ -class ValueBehaviorApplierTest +class ValueBehaviorApplierTest extends BaseTest { /******************************************************************************* @@ -48,7 +50,7 @@ class ValueBehaviorApplierTest @Test void testValueTooLongNormalCases() { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY); table.getField("firstName").withMaxLength(10).withBehavior(ValueTooLongBehavior.TRUNCATE); table.getField("lastName").withMaxLength(10).withBehavior(ValueTooLongBehavior.TRUNCATE_ELLIPSIS); @@ -75,7 +77,7 @@ class ValueBehaviorApplierTest @Test void testValueTooLongEdgeCases() { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/CsvToQRecordAdapterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/CsvToQRecordAdapterTest.java index 87b4bbb4..345e71ca 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/CsvToQRecordAdapterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/CsvToQRecordAdapterTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.adapters; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.actions.shared.mapping.QIndexBasedFieldMapping; import com.kingsrook.qqq.backend.core.model.actions.shared.mapping.QKeyBasedFieldMapping; import com.kingsrook.qqq.backend.core.model.data.QRecord; @@ -40,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.fail; ** Unit test for CsvToQRecordAdapter ** *******************************************************************************/ -class CsvToQRecordAdapterTest +class CsvToQRecordAdapterTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/JsonToQFieldMappingAdapterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/JsonToQFieldMappingAdapterTest.java index c7146f3a..39475276 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/JsonToQFieldMappingAdapterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/JsonToQFieldMappingAdapterTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.adapters; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.actions.shared.mapping.AbstractQFieldMapping; import com.kingsrook.qqq.backend.core.model.actions.shared.mapping.QIndexBasedFieldMapping; import com.kingsrook.qqq.backend.core.model.actions.shared.mapping.QKeyBasedFieldMapping; @@ -37,7 +38,7 @@ import static org.junit.jupiter.api.Assertions.fail; ** Unit test for JsonToQFieldMappingAdapter ** *******************************************************************************/ -class JsonToQFieldMappingAdapterTest +class JsonToQFieldMappingAdapterTest extends BaseTest { /******************************************************************************* ** @@ -141,7 +142,7 @@ class JsonToQFieldMappingAdapterTest QIndexBasedFieldMapping original = new QIndexBasedFieldMapping() .withMapping("foo", 0) .withMapping("bar", 1); - String json = JsonUtils.toJson(original); + String json = JsonUtils.toJson(original); AbstractQFieldMapping deserialized = new JsonToQFieldMappingAdapter().buildMappingFromJson(json); Assertions.assertThat(deserialized).usingRecursiveComparison().isEqualTo(original); } @@ -157,7 +158,7 @@ class JsonToQFieldMappingAdapterTest QKeyBasedFieldMapping original = new QKeyBasedFieldMapping() .withMapping("foo", "Fu") .withMapping("bar", "Bahr"); - String json = JsonUtils.toJson(original); + String json = JsonUtils.toJson(original); AbstractQFieldMapping deserialized = new JsonToQFieldMappingAdapter().buildMappingFromJson(json); Assertions.assertThat(deserialized).usingRecursiveComparison().isEqualTo(original); } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/JsonToQRecordAdapterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/JsonToQRecordAdapterTest.java index 2fe16715..17d09492 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/JsonToQRecordAdapterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/JsonToQRecordAdapterTest.java @@ -23,17 +23,21 @@ package com.kingsrook.qqq.backend.core.adapters; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /******************************************************************************* ** Unit test for JsonToQRecordAdapter ** *******************************************************************************/ -class JsonToQRecordAdapterTest +class JsonToQRecordAdapterTest extends BaseTest { /******************************************************************************* @@ -88,7 +92,7 @@ class JsonToQRecordAdapterTest try { JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter(); - List qRecords = jsonToQRecordAdapter.buildRecordsFromJson(json, TestUtils.defineTablePerson(), null); + List qRecords = jsonToQRecordAdapter.buildRecordsFromJson(json, TestUtils.defineTablePerson(), null); System.out.println(qRecords); } catch(IllegalArgumentException iae) @@ -109,7 +113,7 @@ class JsonToQRecordAdapterTest public void test_buildRecordsFromJson_emptyList() { JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter(); - List qRecords = jsonToQRecordAdapter.buildRecordsFromJson("[]", TestUtils.defineTablePerson(), null); + List qRecords = jsonToQRecordAdapter.buildRecordsFromJson("[]", TestUtils.defineTablePerson(), null); assertNotNull(qRecords); assertTrue(qRecords.isEmpty()); } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/QInstanceAdapterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/QInstanceAdapterTest.java index bdd6475c..986caf18 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/QInstanceAdapterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/adapters/QInstanceAdapterTest.java @@ -24,8 +24,9 @@ package com.kingsrook.qqq.backend.core.adapters; import java.io.File; import java.io.IOException; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.apache.commons.io.FileUtils; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -36,7 +37,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** *******************************************************************************/ -class QInstanceAdapterTest +class QInstanceAdapterTest extends BaseTest { /******************************************************************************* @@ -45,8 +46,8 @@ class QInstanceAdapterTest @Test void qInstanceToJson() { - QInstance qInstance = TestUtils.defineInstance(); - String json = new QInstanceAdapter().qInstanceToJson(qInstance); + QInstance qInstance = QContext.getQInstance(); + String json = new QInstanceAdapter().qInstanceToJson(qInstance); System.out.println(json); } @@ -58,8 +59,8 @@ class QInstanceAdapterTest @Test void qInstanceToJsonIncludingBackend() { - QInstance qInstance = TestUtils.defineInstance(); - String json = new QInstanceAdapter().qInstanceToJsonIncludingBackend(qInstance); + QInstance qInstance = QContext.getQInstance(); + String json = new QInstanceAdapter().qInstanceToJsonIncludingBackend(qInstance); System.out.println(json); } @@ -72,7 +73,7 @@ class QInstanceAdapterTest @Disabled("Pending custom deserializer on QStepMetaData") void jsonToQInstance() throws IOException { - String json = FileUtils.readFileToString(new File("src/test/resources/personQInstance.json")); + String json = FileUtils.readFileToString(new File("src/test/resources/personQInstance.json")); QInstance qInstance = new QInstanceAdapter().jsonToQInstance(json); System.out.println(qInstance); } @@ -86,7 +87,7 @@ class QInstanceAdapterTest @Disabled("Pending custom deserializer on QStepMetaData") void jsonToQInstanceIncludingBackend() throws IOException { - String json = FileUtils.readFileToString(new File("src/test/resources/personQInstanceIncludingBackend.json")); + String json = FileUtils.readFileToString(new File("src/test/resources/personQInstanceIncludingBackend.json")); QInstance qInstance = new QInstanceAdapter().jsonToQInstanceIncludingBackends(json); System.out.println(qInstance); assertNotNull(qInstance.getBackends()); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/context/QContextTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/context/QContextTest.java new file mode 100644 index 00000000..78c96db4 --- /dev/null +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/context/QContextTest.java @@ -0,0 +1,110 @@ +/* + * QQQ - Low-code Application Framework for Engineers. + * Copyright (C) 2021-2023. 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 . + */ + +package com.kingsrook.qqq.backend.core.context; + + +import java.util.Map; +import java.util.UUID; +import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; +import com.kingsrook.qqq.backend.core.model.session.QSession; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + + +/******************************************************************************* + ** Unit test for QContext + *******************************************************************************/ +class QContextTest +{ + + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void test() + { + QContext.clear(); + + QInstance qInstance = newQInstance(); + String instanceUuid = UUID.randomUUID().toString(); + qInstance.setEnvironmentValues(Map.of("uuid", instanceUuid)); + + QSession qSession = new QSession(); + String sessionUuid = qSession.getUuid(); + + ////////////////////////////////////////////////////// + // init the context - make sure the uuids come back // + ////////////////////////////////////////////////////// + QContext.init(qInstance, qSession); + assertEquals(instanceUuid, QContext.getQInstance().getEnvironmentValues().get("uuid")); + assertEquals(sessionUuid, QContext.getQSession().getUuid()); + + ////////////////////////////////////////////////////////// + // capture the context - assert we got values we expect // + ////////////////////////////////////////////////////////// + CapturedContext capturedContext = QContext.capture(); + assertEquals(instanceUuid, capturedContext.qInstance().getEnvironmentValues().get("uuid")); + assertEquals(sessionUuid, capturedContext.qSession().getUuid()); + + /////////////////////////////////////// + // clear context - assert we're null // + /////////////////////////////////////// + QContext.clear(); + assertNull(QContext.getQInstance()); + assertNull(QContext.getQSession()); + + ////////////////////////////////////////////////////////////////////////// + // init context with new values - make sure uuids aren't what we expect // + ////////////////////////////////////////////////////////////////////////// + QContext.init(newQInstance(), new QSession()); + assertNotEquals(instanceUuid, QContext.getQInstance().getEnvironmentValues().get("uuid")); + assertNotEquals(sessionUuid, QContext.getQSession().getUuid()); + + ///////////////////////////////////////////////////////////////////// + // re-init to the captured context - make sure values are expected // + ///////////////////////////////////////////////////////////////////// + QContext.init(capturedContext); + assertEquals(instanceUuid, QContext.getQInstance().getEnvironmentValues().get("uuid")); + assertEquals(sessionUuid, QContext.getQSession().getUuid()); + + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + private static QInstance newQInstance() + { + QInstance qInstance = new QInstance(); + qInstance.addBackend(new QBackendMetaData().withName("backend")); + qInstance.addTable(new QTableMetaData().withName("table").withBackendName("backend").withPrimaryKeyField("id").withField(new QFieldMetaData("id", QFieldType.INTEGER))); + return qInstance; + } + +} \ No newline at end of file diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricherTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricherTest.java index 7ba76dc6..ce9ffe45 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricherTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceEnricherTest.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.AdornmentType; import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment; @@ -50,7 +51,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; ** Unit test for QInstanceEnricher ** *******************************************************************************/ -class QInstanceEnricherTest +class QInstanceEnricherTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceValidatorTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceValidatorTest.java index df86f9f4..0bedf9ae 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceValidatorTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QInstanceValidatorTest.java @@ -28,9 +28,11 @@ import java.util.HashMap; import java.util.List; import java.util.function.Consumer; import java.util.function.Function; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.customizers.AbstractPostQueryCustomizer; import com.kingsrook.qqq.backend.core.actions.customizers.TableCustomizers; import com.kingsrook.qqq.backend.core.actions.processes.BackendStep; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLineInterface; @@ -84,7 +86,7 @@ import static org.junit.jupiter.api.Assertions.fail; ** Unit test for QInstanceValidator. ** *******************************************************************************/ -class QInstanceValidatorTest +class QInstanceValidatorTest extends BaseTest { /******************************************************************************* @@ -94,7 +96,7 @@ class QInstanceValidatorTest @Test public void test_validatePass() throws QInstanceValidationException { - new QInstanceValidator().validate(TestUtils.defineInstance()); + new QInstanceValidator().validate(QContext.getQInstance()); } @@ -106,7 +108,7 @@ class QInstanceValidatorTest @Test public void test_doNotReValidate() throws QInstanceValidationException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.setHasBeenValidated(new QInstanceValidationKey()); qInstance.setBackends(null); new QInstanceValidator().validate(qInstance); @@ -1546,7 +1548,7 @@ class QInstanceValidatorTest assertThatThrownBy(() -> { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.addSecurityKeyType(new QSecurityKeyType().withName("clientId")); qInstance.addSecurityKeyType(new QSecurityKeyType().withName("clientId")); }).isInstanceOf(IllegalArgumentException.class).hasMessageContaining("Attempted to add a second securityKeyType with name: clientId"); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QMetaDataVariableInterpreterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QMetaDataVariableInterpreterTest.java index 741090c1..024ba855 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QMetaDataVariableInterpreterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/instances/QMetaDataVariableInterpreterTest.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.instances; import java.math.BigDecimal; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -36,7 +37,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; /******************************************************************************* ** Unit test for QSecretReader *******************************************************************************/ -class QMetaDataVariableInterpreterTest +class QMetaDataVariableInterpreterTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QFilterCriteriaTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QFilterCriteriaTest.java index bb94dd5c..d2f4d56c 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QFilterCriteriaTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QFilterCriteriaTest.java @@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.core.model.actions.tables.query; import java.io.Serializable; import java.util.ArrayList; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.EQUALS; import static com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator.IS_BLANK; @@ -34,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for QFilterCriteria *******************************************************************************/ -class QFilterCriteriaTest +class QFilterCriteriaTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntityTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntityTest.java index 2904fbd2..a1f05986 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntityTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntityTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.model.data; import java.math.BigDecimal; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.data.testentities.Item; import com.kingsrook.qqq.backend.core.model.data.testentities.ItemWithPrimitives; @@ -40,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** *******************************************************************************/ -class QRecordEntityTest +class QRecordEntityTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/metadata/QInstanceTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/metadata/QInstanceTest.java index 5ee8d442..0c6a4375 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/metadata/QInstanceTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/metadata/QInstanceTest.java @@ -22,9 +22,10 @@ package com.kingsrook.qqq.backend.core.model.metadata; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -34,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for QInstance *******************************************************************************/ -class QInstanceTest +class QInstanceTest extends BaseTest { /******************************************************************************* @@ -43,10 +44,9 @@ class QInstanceTest @Test void testGetTablePath() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); - GetInput getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); String tablePath = qInstance.getTablePath(getInput, TestUtils.TABLE_NAME_PERSON); assertEquals("/peopleApp/person", tablePath); @@ -66,10 +66,9 @@ class QInstanceTest @Test void testGetTablePathNotInAnyApp() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); - GetInput getInput = new GetInput(qInstance); - getInput.setSession(new QSession()); + GetInput getInput = new GetInput(); String tablePath = qInstance.getTablePath(getInput, "notATable"); assertNull(tablePath); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/metadata/tables/QTableMetaDataTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/metadata/tables/QTableMetaDataTest.java index b9aabcee..f663e637 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/metadata/tables/QTableMetaDataTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/metadata/tables/QTableMetaDataTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.model.metadata.tables; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -31,7 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for QTableMetaData *******************************************************************************/ -class QTableMetaDataTest +class QTableMetaDataTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/session/QSessionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/session/QSessionTest.java index ea8de126..da1d0ba0 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/session/QSessionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/model/session/QSessionTest.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.model.session; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -34,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for QSession *******************************************************************************/ -class QSessionTest +class QSessionTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/QAuthenticationModuleDispatcherTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/QAuthenticationModuleDispatcherTest.java index f498bfe7..7ea1a933 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/QAuthenticationModuleDispatcherTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/QAuthenticationModuleDispatcherTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.modules.authentication; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QModuleDispatchException; import com.kingsrook.qqq.backend.core.model.metadata.authentication.QAuthenticationMetaData; import com.kingsrook.qqq.backend.core.utils.TestUtils; @@ -34,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; ** Unit test for QModuleDispatcher ** *******************************************************************************/ -class QAuthenticationModuleDispatcherTest +class QAuthenticationModuleDispatcherTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/Auth0AuthenticationModuleTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/Auth0AuthenticationModuleTest.java index 39f9d3ef..7fc8e1ad 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/Auth0AuthenticationModuleTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/Auth0AuthenticationModuleTest.java @@ -29,6 +29,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import com.auth0.exception.Auth0Exception; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException; import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; @@ -38,7 +40,6 @@ import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.state.InMemoryStateProvider; import com.kingsrook.qqq.backend.core.state.SimpleStateKey; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.json.JSONObject; import org.junit.jupiter.api.Test; import static com.kingsrook.qqq.backend.core.modules.authentication.implementations.Auth0AuthenticationModule.AUTH0_ACCESS_TOKEN_KEY; @@ -61,7 +62,7 @@ import static org.mockito.Mockito.verify; /******************************************************************************* ** Unit test for the FullyAnonymousAuthenticationModule *******************************************************************************/ -public class Auth0AuthenticationModuleTest +public class Auth0AuthenticationModuleTest extends BaseTest { private static final String VALID_TOKEN = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IllrY2FkWTA0Q3RFVUFxQUdLNTk3ayJ9.eyJnaXZlbl9uYW1lIjoiVGltIiwiZmFtaWx5X25hbWUiOiJDaGFtYmVybGFpbiIsIm5pY2tuYW1lIjoidGltLmNoYW1iZXJsYWluIiwibmFtZSI6IlRpbSBDaGFtYmVybGFpbiIsInBpY3R1cmUiOiJodHRwczovL2xoMy5nb29nbGV1c2VyY29udGVudC5jb20vYS0vQUZkWnVjcXVSaUFvTzk1RG9URklnbUtseVA1akVBVnZmWXFnS0lHTkVubzE9czk2LWMiLCJsb2NhbGUiOiJlbiIsInVwZGF0ZWRfYXQiOiIyMDIyLTA3LTE5VDE2OjI0OjQ1LjgyMloiLCJlbWFpbCI6InRpbS5jaGFtYmVybGFpbkBraW5nc3Jvb2suY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImlzcyI6Imh0dHBzOi8va2luZ3Nyb29rLnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwODk2NDEyNjE3MjY1NzAzNDg2NyIsImF1ZCI6InNwQ1NtczAzcHpVZGRYN1BocHN4ZDlUd2FLMDlZZmNxIiwiaWF0IjoxNjU4MjQ3OTAyLCJleHAiOjE2NTgyODM5MDIsIm5vbmNlIjoiZUhOdFMxbEtUR2N5ZG5KS1VVY3RkRTFVT0ZKNmJFNUxVVkEwZEdsRGVXOXZkVkl4UW41eVRrUlJlZz09In0.hib7JR8NDU2kx8Fj1bnzo3IUuabE6Hb-Z7HHZAJPQuF_Zdg3L1KDypn6SY7HAd_dsz2N8RkXfvQto-Y2g2ukuz7FxzNFgcVL99cyEO3YqmyCa6JTOTCrxdeaIE8QZpCEKvC28oeJBv0wO1Dwc--OVJMsK2vSzyxj1WNok64YYjWKLL4c0dFf-nj0KWFr1IU-tMiyWLDDiJw2Sa8M4YxXZYqdlkgNmrBPExgcm9l9SiT2l3Ts3Sgc_IyMVyMrnV8XX50EWdsm6vuCOSUcqf0XhjDQ7urZveoVwVLnYq3GcLhVBcy1Hr9RL8zPdPynOzsbX6uCww2Esrv6iwWrgQ5zBA"; private static final String INVALID_TOKEN = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IllrY2FkWTA0Q3RFVUFxQUdLNTk3ayJ9.eyJnaXZlbl9uYW1lIjoiVGltIiwiZmFtaWx5X25hbWUiOiJDaGFtYmVybGFpbiIsIm5pY2tuYW1lIjoidGltLmNoYW1iZXJsYWluIiwibmFtZSI6IlRpbSBDaGFtYmVybGFpbiIsInBpY3R1cmUiOiJodHRwczovL2xoMy5nb29nbGV1c2VyY29udGVudC5jb20vYS0vQUZkWnVjcXVSaUFvTzk1RG9URklnbUtseVA1akVBVnZmWXFnS0lHTkVubzE9czk2LWMiLCJsb2NhbGUiOiJlbiIsInVwZGF0ZWRfYXQiOiIyMDIyLTA3LTE5VDE2OjI0OjQ1LjgyMloiLCJlbWFpbCI6InRpbS5jaGFtYmVybGFpbkBraW5nc3Jvb2suY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImlzcyI6Imh0dHBzOi8va2luZ3Nyb29rLnVzLmF1dGgwLmNvbS8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwODk2NDEyNjE3MjY1NzAzNDg2NyIsImF1ZCI6InNwQ1NtczAzcHpVZGRYN1BocHN4ZDlUd2FLMDlZZmNxIiwiaWF0IjoxNjU4MjQ3OTAyLCJleHAiOjE2NTgyODM5MDIsIm5vbmNlIjoiZUhOdFMxbEtUR2N5ZG5KS1VVY3RkRTFVT0ZKNmJFNUxVVkEwZEdsRGVXOXZkVkl4UW41eVRrUlJlZz09In0.hib7JR8NDU2kx8Fj1bnzo3IUuabE6Hb-Z7HHZAJPQuF_Zdg3L1KDypn6SY7HAd_dsz2N8RkXfvQto-Y2g2ukuz7FxzNFgcVL99cyEO3YqmyCa6JTOTCrxdeaIE8QZpCEKvC28oeJBv0wO1Dwc--OVJMsK2vSzyxj1WNok64YYjWKLL4c0dFf-nj0KWFr1IU-tMiyWLDDiJw2Sa8M4YxXZYqdlkgNmrBPExgcm9l9SiT2l3Ts3Sgc_IyMVyMrnV8XX50EWdsm6vuCOSUcqf0XhjDQ7urZveoVwVLnYq3GcLhVBcy1Hr9RL8zPdPynOzsbX6uCww2Esrv6iwWrgQ5zBA-thismakesinvalid"; @@ -450,7 +451,7 @@ public class Auth0AuthenticationModuleTest .withAudience(auth0Audience) .withName("auth0"); - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); qInstance.setAuthentication(authenticationMetaData); return (qInstance); } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/FullyAnonymousAuthenticationModuleTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/FullyAnonymousAuthenticationModuleTest.java index 5785bc93..3669bb33 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/FullyAnonymousAuthenticationModuleTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/FullyAnonymousAuthenticationModuleTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.modules.authentication.implementations; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.session.QSession; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -32,7 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for the FullyAnonymousAuthenticationModule *******************************************************************************/ -public class FullyAnonymousAuthenticationModuleTest +public class FullyAnonymousAuthenticationModuleTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/TableBasedAuthenticationModuleTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/TableBasedAuthenticationModuleTest.java index b447b333..f9678d02 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/TableBasedAuthenticationModuleTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/authentication/implementations/TableBasedAuthenticationModuleTest.java @@ -29,6 +29,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.UUID; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.tables.GetAction; import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException; import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput; @@ -57,7 +58,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for the TableBasedAuthenticationModule *******************************************************************************/ -public class TableBasedAuthenticationModuleTest +public class TableBasedAuthenticationModuleTest extends BaseTest { public static final String USERNAME = "jdoe"; public static final String PASSWORD = "abc123"; @@ -355,8 +356,7 @@ public class TableBasedAuthenticationModuleTest String uuid = UUID.randomUUID().toString(); - GetInput getUserInput = new GetInput(qInstance); - getUserInput.setSession(new QSession()); + GetInput getUserInput = new GetInput(); getUserInput.setTableName("user"); getUserInput.setUniqueKey(Map.of("username", username)); GetOutput getUserOutput = new GetAction().execute(getUserInput); @@ -399,6 +399,8 @@ public class TableBasedAuthenticationModuleTest qInstance.addTable(authenticationMetaData.defineStandardUserTable(TestUtils.MEMORY_BACKEND_NAME)); qInstance.addTable(authenticationMetaData.defineStandardSessionTable(TestUtils.MEMORY_BACKEND_NAME)); + reInitInstanceInContext(qInstance); + return (qInstance); } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/QBackendModuleDispatcherTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/QBackendModuleDispatcherTest.java index ffe0166c..e4fea8ba 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/QBackendModuleDispatcherTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/QBackendModuleDispatcherTest.java @@ -22,20 +22,20 @@ package com.kingsrook.qqq.backend.core.modules.backend; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QModuleDispatchException; import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; -import com.kingsrook.qqq.backend.core.modules.backend.QBackendModuleDispatcher; -import com.kingsrook.qqq.backend.core.modules.backend.QBackendModuleInterface; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; /******************************************************************************* ** Unit test for QModuleDispatcher ** *******************************************************************************/ -class QBackendModuleDispatcherTest +class QBackendModuleDispatcherTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/QBackendModuleInterfaceTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/QBackendModuleInterfaceTest.java index 73337edc..b7574e03 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/QBackendModuleInterfaceTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/QBackendModuleInterfaceTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.modules.backend; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableBackendDetails; import org.junit.jupiter.api.Test; @@ -33,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.fail; ** Unit test for QBackendModuleInterface ** *******************************************************************************/ -class QBackendModuleInterfaceTest +class QBackendModuleInterfaceTest extends BaseTest { /******************************************************************************* ** diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationCountActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationCountActionTest.java index 6c06dce1..0d0336b9 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationCountActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationCountActionTest.java @@ -23,7 +23,9 @@ package com.kingsrook.qqq.backend.core.modules.backend.implementations.enumerati import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.tables.CountAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountInput; import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountOutput; @@ -36,8 +38,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; -import com.kingsrook.qqq.backend.core.model.session.QSession; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -45,7 +45,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for EnumerationCountAction *******************************************************************************/ -class EnumerationCountActionTest +class EnumerationCountActionTest extends BaseTest { /******************************************************************************* @@ -56,8 +56,7 @@ class EnumerationCountActionTest { QInstance instance = defineQInstance(); - CountInput countInput = new CountInput(instance); - countInput.setSession(new QSession()); + CountInput countInput = new CountInput(); countInput.setTableName("statesEnum"); CountOutput countOutput = new CountAction().execute(countInput); assertEquals(2, countOutput.getCount()); @@ -73,8 +72,7 @@ class EnumerationCountActionTest { QInstance instance = defineQInstance(); - CountInput countInput = new CountInput(instance); - countInput.setSession(new QSession()); + CountInput countInput = new CountInput(); countInput.setTableName("statesEnum"); countInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria("population", QCriteriaOperator.GREATER_THAN, List.of(20_000_000)))); CountOutput countOutput = new CountAction().execute(countInput); @@ -88,7 +86,7 @@ class EnumerationCountActionTest *******************************************************************************/ private QInstance defineQInstance() { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); instance.addBackend(new QBackendMetaData() .withName("enum") .withBackendType("enum") diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationQueryActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationQueryActionTest.java index 24d7d013..d1b13a98 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationQueryActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/enumeration/EnumerationQueryActionTest.java @@ -23,7 +23,9 @@ package com.kingsrook.qqq.backend.core.modules.backend.implementations.enumerati import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria; @@ -37,8 +39,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; -import com.kingsrook.qqq.backend.core.model.session.QSession; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -46,7 +46,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for EnumerationQueryAction *******************************************************************************/ -class EnumerationQueryActionTest +class EnumerationQueryActionTest extends BaseTest { /******************************************************************************* @@ -57,8 +57,7 @@ class EnumerationQueryActionTest { QInstance instance = defineQInstance(); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName("statesEnum"); QueryOutput queryOutput = new QueryAction().execute(queryInput); assertEquals(2, queryOutput.getRecords().size()); @@ -84,8 +83,7 @@ class EnumerationQueryActionTest { QInstance instance = defineQInstance(); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName("statesEnum"); queryInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria("population", QCriteriaOperator.GREATER_THAN, List.of(20_000_000)))); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -106,8 +104,7 @@ class EnumerationQueryActionTest { QInstance instance = defineQInstance(); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName("statesEnum"); queryInput.setFilter(new QQueryFilter().withOrderBy(new QFilterOrderBy("name"))); @@ -129,8 +126,7 @@ class EnumerationQueryActionTest { QInstance instance = defineQInstance(); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName("statesEnum"); queryInput.setSkip(0); queryInput.setLimit(null); @@ -175,7 +171,7 @@ class EnumerationQueryActionTest *******************************************************************************/ private QInstance defineQInstance() { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); instance.addBackend(new QBackendMetaData() .withName("enum") .withBackendType("enum") diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryBackendModuleTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryBackendModuleTest.java index cff65e63..34a25a95 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryBackendModuleTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryBackendModuleTest.java @@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.core.modules.backend.implementations.memory; import java.time.LocalDate; import java.time.Month; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.customizers.AbstractPostQueryCustomizer; import com.kingsrook.qqq.backend.core.actions.customizers.TableCustomizers; import com.kingsrook.qqq.backend.core.actions.tables.CountAction; @@ -32,6 +33,7 @@ import com.kingsrook.qqq.backend.core.actions.tables.DeleteAction; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountInput; import com.kingsrook.qqq.backend.core.model.actions.tables.delete.DeleteInput; @@ -65,7 +67,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for MemoryBackendModule *******************************************************************************/ -class MemoryBackendModuleTest +class MemoryBackendModuleTest extends BaseTest { /******************************************************************************* @@ -87,23 +89,21 @@ class MemoryBackendModuleTest @Test void testFullCRUD() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_SHAPE); QSession session = new QSession(); ///////////////////////// // do an initial count // ///////////////////////// - CountInput countInput = new CountInput(qInstance); - countInput.setSession(session); + CountInput countInput = new CountInput(); countInput.setTableName(table.getName()); assertEquals(0, new CountAction().execute(countInput).getCount()); ////////////////// // do an insert // ////////////////// - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(session); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(table.getName()); insertInput.setRecords(getTestRecords(table)); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -116,8 +116,7 @@ class MemoryBackendModuleTest //////////////// // do a query // //////////////// - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); QueryOutput queryOutput = new QueryAction().execute(queryInput); assertEquals(3, queryOutput.getRecords().size()); @@ -134,8 +133,7 @@ class MemoryBackendModuleTest ////////////////// // do an update // ////////////////// - UpdateInput updateInput = new UpdateInput(qInstance); - updateInput.setSession(session); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(table.getName()); updateInput.setRecords(List.of( new QRecord() @@ -162,8 +160,7 @@ class MemoryBackendModuleTest ///////////////////////// // do a filtered query // ///////////////////////// - queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + queryInput = new QueryInput(); queryInput.setTableName(table.getName()); queryInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria("id", QCriteriaOperator.IN, List.of(1, 3)))); queryOutput = new QueryAction().execute(queryInput); @@ -180,8 +177,7 @@ class MemoryBackendModuleTest ///////////////// // do a delete // ///////////////// - DeleteInput deleteInput = new DeleteInput(qInstance); - deleteInput.setSession(session); + DeleteInput deleteInput = new DeleteInput(); deleteInput.setTableName(table.getName()); deleteInput.setPrimaryKeys(List.of(1, 2)); DeleteOutput deleteOutput = new DeleteAction().execute(deleteInput); @@ -204,12 +200,11 @@ class MemoryBackendModuleTest @Test void testQueryOperators() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_SHAPE); QSession session = new QSession(); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(session); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(table.getName()); insertInput.setRecords(List.of( new QRecord().withValue("id", 1).withValue("name", "Square").withValue("date", LocalDate.of(1980, Month.MAY, 31)), @@ -344,8 +339,7 @@ class MemoryBackendModuleTest // skip & limit // ////////////////// { - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); queryInput.setLimit(2); assertEquals(2, new QueryAction().execute(queryInput).getRecords().size()); @@ -362,8 +356,7 @@ class MemoryBackendModuleTest // order // /////////// { - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); queryInput.setFilter(new QQueryFilter().withOrderBy(new QFilterOrderBy("name", true))); assertEquals(List.of("Circle", "Square", "Triangle"), new QueryAction().execute(queryInput).getRecords().stream().map(r -> r.getValueString("name")).toList()); @@ -396,8 +389,7 @@ class MemoryBackendModuleTest *******************************************************************************/ private List queryShapes(QInstance qInstance, QTableMetaData table, QSession session, QQueryFilter filter) throws QException { - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); queryInput.setFilter(filter); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -412,15 +404,14 @@ class MemoryBackendModuleTest @Test void testSerials() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_SHAPE); QSession session = new QSession(); ////////////////// // do an insert // ////////////////// - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(session); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(table.getName()); insertInput.setRecords(List.of(new QRecord().withTableName(table.getName()).withValue("name", "Shape 1"))); new InsertAction().execute(insertInput); @@ -431,8 +422,7 @@ class MemoryBackendModuleTest insertInput.setRecords(List.of(new QRecord().withTableName(table.getName()).withValue("name", "Shape 3"))); new InsertAction().execute(insertInput); - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); QueryOutput queryOutput = new QueryAction().execute(queryInput); assertTrue(queryOutput.getRecords().stream().anyMatch(r -> r.getValueInteger("id").equals(1))); @@ -492,9 +482,7 @@ class MemoryBackendModuleTest @Test void testCustomizer() throws QException { - QInstance qInstance = TestUtils.defineInstance(); - QTableMetaData table = qInstance.getTable(TestUtils.TABLE_NAME_SHAPE); - QSession session = new QSession(); + QTableMetaData table = QContext.getQInstance().getTable(TestUtils.TABLE_NAME_SHAPE); /////////////////////////////////// // add a customizer to the table // @@ -504,8 +492,7 @@ class MemoryBackendModuleTest ////////////////// // do an insert // ////////////////// - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(session); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(table.getName()); insertInput.setRecords(getTestRecords(table)); new InsertAction().execute(insertInput); @@ -515,8 +502,7 @@ class MemoryBackendModuleTest /////////////////////////////////////////////////////// ShapeTestCustomizer.invocationCount = 0; ShapeTestCustomizer.recordsCustomizedCount = 0; - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(table.getName()); QueryOutput queryOutput = new QueryAction().execute(queryInput); assertEquals(3, queryOutput.getRecords().size()); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/basepull/ExtractViaBasepullQueryStepTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/basepull/ExtractViaBasepullQueryStepTest.java index 096ebae1..fe2bca51 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/basepull/ExtractViaBasepullQueryStepTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/basepull/ExtractViaBasepullQueryStepTest.java @@ -23,12 +23,12 @@ package com.kingsrook.qqq.backend.core.processes.implementations.basepull; import java.time.Instant; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -37,7 +37,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for ExtractViaBasepullQueryStep *******************************************************************************/ -class ExtractViaBasepullQueryStepTest +class ExtractViaBasepullQueryStepTest extends BaseTest { /******************************************************************************* @@ -49,7 +49,7 @@ class ExtractViaBasepullQueryStepTest Instant timestamp = Instant.parse("1980-05-31T15:36:00Z"); Instant now = Instant.now(); - RunBackendStepInput input = new RunBackendStepInput(TestUtils.defineInstance()); + RunBackendStepInput input = new RunBackendStepInput(); input.addValue(RunProcessAction.BASEPULL_TIMESTAMP_FIELD, "createDate"); input.addValue(RunProcessAction.BASEPULL_THIS_RUNTIME_KEY, now); input.setBasepullLastRunTime(timestamp); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/delete/BulkDeleteTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/delete/BulkDeleteTest.java index 1ede46da..91a0041b 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/delete/BulkDeleteTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/delete/BulkDeleteTest.java @@ -23,7 +23,9 @@ package com.kingsrook.qqq.backend.core.processes.implementations.bulk.delete; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLine; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; @@ -47,7 +49,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for full bulk edit process *******************************************************************************/ -class BulkDeleteTest +class BulkDeleteTest extends BaseTest { /******************************************************************************* @@ -71,7 +73,7 @@ class BulkDeleteTest ////////////////////////////// // insert some test records // ////////////////////////////// - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); TestUtils.insertRecords(qInstance, qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("firstName", "Darin").withValue("lastName", "Kelkhoff").withValue("email", "darin.kelkhoff@kingsrook.com"), new QRecord().withValue("id", 2).withValue("firstName", "Tim").withValue("lastName", "Chamberlain").withValue("email", "tim.chamberlain@kingsrook.com"), @@ -81,8 +83,7 @@ class BulkDeleteTest ////////////////////////////////// // set up the run-process input // ////////////////////////////////// - RunProcessInput runProcessInput = new RunProcessInput(qInstance); - runProcessInput.setSession(TestUtils.getMockSession()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(TestUtils.TABLE_NAME_PERSON_MEMORY + ".bulkDelete"); runProcessInput.addValue(StreamedETLWithFrontendProcess.FIELD_DEFAULT_QUERY_FILTER, new QQueryFilter().withCriteria(new QFilterCriteria("id", QCriteriaOperator.IN, List.of(1, 3)))); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/edit/BulkEditTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/edit/BulkEditTest.java index e1b666d7..dfe3f4b9 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/edit/BulkEditTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/edit/BulkEditTest.java @@ -24,7 +24,9 @@ package com.kingsrook.qqq.backend.core.processes.implementations.bulk.edit; import java.util.List; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLine; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; @@ -49,7 +51,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for full bulk edit process *******************************************************************************/ -class BulkEditTest +class BulkEditTest extends BaseTest { /******************************************************************************* @@ -73,7 +75,7 @@ class BulkEditTest ////////////////////////////// // insert some test records // ////////////////////////////// - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); TestUtils.insertRecords(qInstance, qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("firstName", "Darin").withValue("lastName", "Kelkhoff").withValue("email", "darin.kelkhoff@kingsrook.com"), new QRecord().withValue("id", 2).withValue("firstName", "Tim").withValue("lastName", "Chamberlain").withValue("email", "tim.chamberlain@kingsrook.com"), @@ -83,8 +85,7 @@ class BulkEditTest ////////////////////////////////// // set up the run-process input // ////////////////////////////////// - RunProcessInput runProcessInput = new RunProcessInput(qInstance); - runProcessInput.setSession(TestUtils.getMockSession()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(TestUtils.TABLE_NAME_PERSON_MEMORY + ".bulkEdit"); runProcessInput.addValue(StreamedETLWithFrontendProcess.FIELD_DEFAULT_QUERY_FILTER, new QQueryFilter().withCriteria(new QFilterCriteria("id", QCriteriaOperator.IN, List.of(1, 2)))); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/BulkInsertTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/BulkInsertTest.java index c632ad0f..c9c1603d 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/BulkInsertTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/BulkInsertTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.processes.implementations.bulk.insert; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.QUploadedFile; @@ -46,7 +47,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; /******************************************************************************* ** Unit test for full bulk insert process *******************************************************************************/ -class BulkInsertTest +class BulkInsertTest extends BaseTest { /******************************************************************************* @@ -81,8 +82,7 @@ class BulkInsertTest UUIDAndTypeStateKey uploadedFileKey = new UUIDAndTypeStateKey(StateType.UPLOADED_FILE); TempFileStateProvider.getInstance().put(uploadedFileKey, qUploadedFile); - RunProcessInput runProcessInput = new RunProcessInput(TestUtils.defineInstance()); - runProcessInput.setSession(TestUtils.getMockSession()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(TestUtils.TABLE_NAME_PERSON_MEMORY + ".bulkInsert"); RunProcessOutput runProcessOutput = new RunProcessAction().execute(runProcessInput); String processUUID = runProcessOutput.getProcessUUID(); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/BulkInsertTransformStepTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/BulkInsertTransformStepTest.java index 480e4795..4779fcfe 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/BulkInsertTransformStepTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/BulkInsertTransformStepTest.java @@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.core.processes.implementations.bulk.insert; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLine; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLineInterface; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; @@ -36,7 +37,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.UniqueKey; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.processes.implementations.etl.streamedwithfrontend.StreamedETLWithFrontendProcess; import com.kingsrook.qqq.backend.core.utils.TestUtils; @@ -50,7 +50,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for BulkInsertTransformStep *******************************************************************************/ -class BulkInsertTransformStepTest +class BulkInsertTransformStepTest extends BaseTest { public static final String TABLE_NAME = "ukTest"; @@ -81,6 +81,8 @@ class BulkInsertTransformStepTest .withUniqueKey(new UniqueKey().withFieldName("uuid")) .withUniqueKey(new UniqueKey().withFieldName("sku").withFieldName("storeId")), instance); + reInitInstanceInContext(instance); + //////////////////////////////////////////////////////////// // insert some records that will cause some UK violations // //////////////////////////////////////////////////////////// @@ -94,10 +96,9 @@ class BulkInsertTransformStepTest // setup & run the bulk insert transform // /////////////////////////////////////////// BulkInsertTransformStep bulkInsertTransformStep = new BulkInsertTransformStep(); - RunBackendStepInput input = new RunBackendStepInput(instance); + RunBackendStepInput input = new RunBackendStepInput(); RunBackendStepOutput output = new RunBackendStepOutput(); - input.setSession(new QSession()); input.setTableName(TABLE_NAME); input.setStepName(StreamedETLWithFrontendProcess.STEP_NAME_VALIDATE); input.setRecords(List.of( @@ -162,6 +163,7 @@ class BulkInsertTransformStepTest QTableMetaData table = defineTable(new QTableMetaData() .withName(TABLE_NAME) .withBackendName(TestUtils.MEMORY_BACKEND_NAME), instance); + reInitInstanceInContext(instance); //////////////////////////////////////////////////////////// // insert some records that will cause some UK violations // @@ -176,10 +178,9 @@ class BulkInsertTransformStepTest // setup & run the bulk insert transform // /////////////////////////////////////////// BulkInsertTransformStep bulkInsertTransformStep = new BulkInsertTransformStep(); - RunBackendStepInput input = new RunBackendStepInput(instance); + RunBackendStepInput input = new RunBackendStepInput(); RunBackendStepOutput output = new RunBackendStepOutput(); - input.setSession(new QSession()); input.setTableName(TABLE_NAME); input.setStepName(StreamedETLWithFrontendProcess.STEP_NAME_VALIDATE); input.setRecords(List.of( diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLProcessTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLProcessTest.java index 3c334fba..bc4e5292 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLProcessTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLProcessTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.processes.implementations.etl.basic; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; @@ -37,7 +38,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for BasicETLProcess *******************************************************************************/ -class BasicETLProcessTest +class BasicETLProcessTest extends BaseTest { /******************************************************************************* @@ -46,8 +47,7 @@ class BasicETLProcessTest @Test public void test() throws QException { - RunProcessInput request = new RunProcessInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(BasicETLProcess.PROCESS_NAME); request.addValue(BasicETLProcess.FIELD_SOURCE_TABLE, TestUtils.defineTablePerson().getName()); request.addValue(BasicETLProcess.FIELD_DESTINATION_TABLE, TestUtils.definePersonFileTable().getName()); @@ -67,8 +67,7 @@ class BasicETLProcessTest @Test public void testMappingTransformation() throws QException { - RunProcessInput request = new RunProcessInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(BasicETLProcess.PROCESS_NAME); request.addValue(BasicETLProcess.FIELD_SOURCE_TABLE, TestUtils.definePersonFileTable().getName()); request.addValue(BasicETLProcess.FIELD_DESTINATION_TABLE, TestUtils.defineTableIdAndNameOnly().getName()); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLTransformFunctionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLTransformFunctionTest.java index fa6525e7..1416ff16 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLTransformFunctionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/basic/BasicETLTransformFunctionTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.processes.implementations.etl.basic; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; @@ -35,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for BasicETLTransformFunction *******************************************************************************/ -class BasicETLTransformFunctionTest +class BasicETLTransformFunctionTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamed/StreamedETLProcessTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamed/StreamedETLProcessTest.java index ea09adba..8fda1019 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamed/StreamedETLProcessTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamed/StreamedETLProcessTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.processes.implementations.etl.streamed; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; @@ -37,7 +38,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for BasicETLProcess *******************************************************************************/ -class StreamedETLProcessTest +class StreamedETLProcessTest extends BaseTest { /******************************************************************************* @@ -46,8 +47,7 @@ class StreamedETLProcessTest @Test public void test() throws QException { - RunProcessInput request = new RunProcessInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(StreamedETLProcess.PROCESS_NAME); request.addValue(StreamedETLProcess.FIELD_SOURCE_TABLE, TestUtils.defineTablePerson().getName()); request.addValue(StreamedETLProcess.FIELD_DESTINATION_TABLE, TestUtils.definePersonFileTable().getName()); @@ -70,8 +70,7 @@ class StreamedETLProcessTest @Test public void testMappingTransformation() throws QException { - RunProcessInput request = new RunProcessInput(TestUtils.defineInstance()); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(StreamedETLProcess.PROCESS_NAME); request.addValue(StreamedETLProcess.FIELD_SOURCE_TABLE, TestUtils.definePersonFileTable().getName()); request.addValue(StreamedETLProcess.FIELD_DESTINATION_TABLE, TestUtils.defineTableIdAndNameOnly().getName()); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStepTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStepTest.java index ba0e9d07..6881944d 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStepTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStepTest.java @@ -23,12 +23,13 @@ package com.kingsrook.qqq.backend.core.processes.implementations.etl.streamedwit import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -40,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for com.kingsrook.qqq.backend.core.processes.implementations.etl.streamedwithfrontend.LoadViaInsertOrUpdateStep *******************************************************************************/ -class LoadViaInsertOrUpdateStepTest +class LoadViaInsertOrUpdateStepTest extends BaseTest { /******************************************************************************* @@ -61,7 +62,7 @@ class LoadViaInsertOrUpdateStepTest @Test void test() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); List existingRecordList = List.of( new QRecord().withValue("id", 47).withValue("firstName", "Tom") ); @@ -71,8 +72,7 @@ class LoadViaInsertOrUpdateStepTest new QRecord().withValue("id", 47).withValue("firstName", "Tim"), new QRecord().withValue("firstName", "John") ); - RunBackendStepInput input = new RunBackendStepInput(qInstance); - input.setSession(new QSession()); + RunBackendStepInput input = new RunBackendStepInput(); input.setRecords(inputRecordList); input.addValue(LoadViaInsertOrUpdateStep.FIELD_DESTINATION_TABLE, TestUtils.TABLE_NAME_PERSON_MEMORY); RunBackendStepOutput output = new RunBackendStepOutput(); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/NoopTransformStepTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/NoopTransformStepTest.java index 8d1b1e60..65bb8530 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/NoopTransformStepTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/NoopTransformStepTest.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.processes.implementations.etl.streamedwit import java.util.ArrayList; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLine; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLineInterface; @@ -31,7 +32,6 @@ import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInpu import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput; import com.kingsrook.qqq.backend.core.model.actions.processes.Status; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -40,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for NoopTransformStep *******************************************************************************/ -class NoopTransformStepTest +class NoopTransformStepTest extends BaseTest { /******************************************************************************* @@ -49,8 +49,7 @@ class NoopTransformStepTest @Test void test() throws QException { - RunBackendStepInput input = new RunBackendStepInput(TestUtils.defineInstance()); - input.setSession(new QSession()); + RunBackendStepInput input = new RunBackendStepInput(); input.setTableName(TestUtils.TABLE_NAME_PERSON); input.setRecords(List.of(new QRecord().withValue("id", 47))); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLWithFrontendProcessTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLWithFrontendProcessTest.java index c5935297..69930d22 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLWithFrontendProcessTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLWithFrontendProcessTest.java @@ -28,8 +28,10 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.QProcessCallback; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLine; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLineInterface; @@ -59,7 +61,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for StreamedETLWithFrontendProcess *******************************************************************************/ -public class StreamedETLWithFrontendProcessTest +public class StreamedETLWithFrontendProcessTest extends BaseTest { /******************************************************************************* @@ -80,7 +82,7 @@ public class StreamedETLWithFrontendProcessTest @Test void testSimpleSmallQueryTransformInsert() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); //////////////////////////////////////////////////////// // define the process - an ELT from Shapes to Persons // @@ -117,7 +119,7 @@ public class StreamedETLWithFrontendProcessTest @Test void testLoadViaInsertOrUpdate() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); ///////////////////////////////////////////////////////////////////////////////// // define the process - an ELT from Shapes to Shapes - inserting 1, updating 2 // @@ -156,7 +158,7 @@ public class StreamedETLWithFrontendProcessTest @Test void testSimpleSmallQueryTransformUpdate() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); //////////////////////////////////////////////////////// // define the process - an ELT from Shapes to Shapes // @@ -190,7 +192,7 @@ public class StreamedETLWithFrontendProcessTest @Test void testWithDefaultQueryFilter() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); //////////////////////////////////////////////////////// // define the process - an ELT from Shapes to Shapes // @@ -232,7 +234,7 @@ public class StreamedETLWithFrontendProcessTest @Test void testBig() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // define the process - an ELT from Persons to Persons - using the mock backend, and set to do very many records // @@ -262,7 +264,7 @@ public class StreamedETLWithFrontendProcessTest @Test void testWithValidationStep() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); //////////////////////////////////////////////////////// // define the process - an ELT from Shapes to Persons // @@ -293,8 +295,7 @@ public class StreamedETLWithFrontendProcessTest //////////////////////////////////////////////////////// // continue the process - telling it to do validation // //////////////////////////////////////////////////////// - RunProcessInput runProcessInput = new RunProcessInput(instance); - runProcessInput.setSession(TestUtils.getMockSession()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(process.getName()); runProcessInput.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.BREAK); runProcessInput.setProcessUUID(runProcessOutput.getProcessUUID()); @@ -356,8 +357,7 @@ public class StreamedETLWithFrontendProcessTest *******************************************************************************/ private RunProcessOutput runProcess(QInstance instance, QProcessMetaData process, Map values, QProcessCallback callback, RunProcessInput.FrontendStepBehavior frontendStepBehavior) throws QException { - RunProcessInput request = new RunProcessInput(instance); - request.setSession(TestUtils.getMockSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(process.getName()); ////////////////////////////////////////////////////////////// // wrap the map here, in case it was given as un-modifiable // diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/BasicRunReportProcessTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/BasicRunReportProcessTest.java index 1fd08515..de193fc6 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/BasicRunReportProcessTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/BasicRunReportProcessTest.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.processes.implementations.reports; import java.time.LocalDate; import java.time.Month; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; import com.kingsrook.qqq.backend.core.actions.reporting.GenerateReportActionTest; import com.kingsrook.qqq.backend.core.exceptions.QException; @@ -40,7 +41,7 @@ import static org.assertj.core.api.Assertions.assertThat; /******************************************************************************* ** Unit test for BasicRunReportProcess *******************************************************************************/ -class BasicRunReportProcessTest +class BasicRunReportProcessTest extends BaseTest { /******************************************************************************* ** @@ -56,8 +57,9 @@ class BasicRunReportProcessTest report.setProcessName(runReportProcess.getName()); instance.addProcess(runReportProcess); - RunProcessInput runProcessInput = new RunProcessInput(instance); - runProcessInput.setSession(TestUtils.getMockSession()); + reInitInstanceInContext(instance); + + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(report.getProcessName()); runProcessInput.addValue(BasicRunReportProcess.FIELD_REPORT_NAME, report.getName()); RunProcessOutput runProcessOutput = new RunProcessAction().execute(runProcessInput); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/RunReportForRecordProcessTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/RunReportForRecordProcessTest.java index 57ae10cf..18c26949 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/RunReportForRecordProcessTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/reports/RunReportForRecordProcessTest.java @@ -22,7 +22,9 @@ package com.kingsrook.qqq.backend.core.processes.implementations.reports; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessOutput; @@ -34,7 +36,7 @@ import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for BasicRunReportProcess *******************************************************************************/ -class RunReportForRecordProcessTest +class RunReportForRecordProcessTest extends BaseTest { /******************************************************************************* ** @@ -42,11 +44,10 @@ class RunReportForRecordProcessTest @Test void testRunReport() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertDefaultShapes(instance); - RunProcessInput runProcessInput = new RunProcessInput(instance); - runProcessInput.setSession(TestUtils.getMockSession()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(TestUtils.PROCESS_NAME_RUN_SHAPES_PERSON_REPORT); runProcessInput.addValue(BasicRunReportProcess.FIELD_REPORT_NAME, TestUtils.REPORT_NAME_SHAPES_PERSON); runProcessInput.addValue("recordsParam", "recordIds"); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/TableSyncProcessTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/TableSyncProcessTest.java index e7ed7ea8..cb189e2c 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/TableSyncProcessTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/tablesync/TableSyncProcessTest.java @@ -26,7 +26,9 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLineInterface; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; @@ -37,7 +39,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.processes.utils.GeneralProcessUtils; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; @@ -48,7 +49,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for TableSyncProcess *******************************************************************************/ -class TableSyncProcessTest +class TableSyncProcessTest extends BaseTest { /******************************************************************************* @@ -57,7 +58,7 @@ class TableSyncProcessTest @Test void test() throws Exception { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); QTableMetaData personTable = qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY); @@ -89,8 +90,7 @@ class TableSyncProcessTest .withSyncTransformStepClass(PersonTransformClass.class) .getProcessMetaData()); - RunProcessInput runProcessInput = new RunProcessInput(qInstance); - runProcessInput.setSession(new QSession()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(PROCESS_NAME); runProcessInput.addValue("recordIds", "1,2,3,4,5"); runProcessInput.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.SKIP); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/utils/GeneralProcessUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/utils/GeneralProcessUtilsTest.java index cd0d44f2..38616e02 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/utils/GeneralProcessUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/utils/GeneralProcessUtilsTest.java @@ -28,7 +28,9 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator; @@ -39,7 +41,6 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.data.testentities.Shape; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.ListingHash; import com.kingsrook.qqq.backend.core.utils.TestUtils; @@ -57,7 +58,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for GeneralProcessUtils *******************************************************************************/ -class GeneralProcessUtilsTest +class GeneralProcessUtilsTest extends BaseTest { /******************************************************************************* ** @@ -77,7 +78,7 @@ class GeneralProcessUtilsTest @Test void testGetForeignRecordMap() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("favoriteShapeId", 3), @@ -85,8 +86,7 @@ class GeneralProcessUtilsTest )); TestUtils.insertDefaultShapes(instance); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -105,7 +105,7 @@ class GeneralProcessUtilsTest @Test void testGetForeignRecordMapWithAdditionalFilter() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("favoriteShapeId", 3), @@ -113,8 +113,7 @@ class GeneralProcessUtilsTest )); TestUtils.insertDefaultShapes(instance); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -133,7 +132,7 @@ class GeneralProcessUtilsTest @Test void testGetForeignRecordListingHashMap() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("favoriteShapeId", 3), @@ -142,8 +141,7 @@ class GeneralProcessUtilsTest )); TestUtils.insertDefaultShapes(instance); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_SHAPE); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -166,7 +164,7 @@ class GeneralProcessUtilsTest @Test void testAddForeignRecordsToRecordList() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("favoriteShapeId", 3), @@ -174,8 +172,7 @@ class GeneralProcessUtilsTest )); TestUtils.insertDefaultShapes(instance); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -195,7 +192,7 @@ class GeneralProcessUtilsTest @Test void testAddForeignRecordsListToRecordList() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("favoriteShapeId", 3), @@ -204,8 +201,7 @@ class GeneralProcessUtilsTest )); TestUtils.insertDefaultShapes(instance); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_SHAPE); QueryOutput queryOutput = new QueryAction().execute(queryInput); @@ -241,7 +237,7 @@ class GeneralProcessUtilsTest @Test void testGetRecordListByField() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("favoriteShapeId", 3), @@ -249,9 +245,8 @@ class GeneralProcessUtilsTest new QRecord().withValue("id", 3).withValue("favoriteShapeId", 1) )); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); - List records = GeneralProcessUtils.getRecordListByField(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY, "favoriteShapeId", 3); + QueryInput queryInput = new QueryInput(); + List records = GeneralProcessUtils.getRecordListByField(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY, "favoriteShapeId", 3); assertEquals(2, records.size()); assertTrue(records.stream().anyMatch(r -> r.getValue("id").equals(1))); assertTrue(records.stream().anyMatch(r -> r.getValue("id").equals(2))); @@ -266,7 +261,7 @@ class GeneralProcessUtilsTest @Test void testGetRecordById() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("firstName", "Darin"), @@ -274,9 +269,8 @@ class GeneralProcessUtilsTest new QRecord().withValue("id", 3).withValue("firstName", "Tim") )); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); - Optional record = GeneralProcessUtils.getRecordByField(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY, "firstName", "James"); + QueryInput queryInput = new QueryInput(); + Optional record = GeneralProcessUtils.getRecordByField(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY, "firstName", "James"); assertTrue(record.isPresent()); assertEquals(2, record.get().getValueInteger("id")); @@ -292,7 +286,7 @@ class GeneralProcessUtilsTest @Test void testLoadTable() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("firstName", "Darin"), @@ -300,9 +294,8 @@ class GeneralProcessUtilsTest new QRecord().withValue("id", 3).withValue("firstName", "Tim") )); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); - List records = GeneralProcessUtils.loadTable(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY); + QueryInput queryInput = new QueryInput(); + List records = GeneralProcessUtils.loadTable(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY); assertEquals(3, records.size()); } @@ -314,7 +307,7 @@ class GeneralProcessUtilsTest @Test void testLoadTableToMap() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("firstName", "Darin"), @@ -322,8 +315,7 @@ class GeneralProcessUtilsTest new QRecord().withValue("id", 3).withValue("firstName", "Tim") )); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); Map recordMapById = GeneralProcessUtils.loadTableToMap(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY, "id"); assertEquals(3, recordMapById.size()); assertEquals("Darin", recordMapById.get(1).getValueString("firstName")); @@ -348,7 +340,7 @@ class GeneralProcessUtilsTest @Test void testLoadTableToListingHash() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertRecords(instance, instance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY), List.of( new QRecord().withValue("id", 1).withValue("firstName", "Darin").withValue("lastName", "Kelkhoff"), @@ -356,9 +348,8 @@ class GeneralProcessUtilsTest new QRecord().withValue("id", 3).withValue("firstName", "James").withValue("lastName", "Brown") )); - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(new QSession()); - ListingHash map = GeneralProcessUtils.loadTableToListingHash(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY, "firstName"); + QueryInput queryInput = new QueryInput(); + ListingHash map = GeneralProcessUtils.loadTableToListingHash(queryInput, TestUtils.TABLE_NAME_PERSON_MEMORY, "firstName"); assertEquals(2, map.size()); assertEquals(1, map.get("Darin").size()); assertEquals(2, map.get("James").size()); @@ -372,11 +363,11 @@ class GeneralProcessUtilsTest @Test void testGetRecordByFieldOrElseThrow() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertDefaultShapes(instance); - assertNotNull(GeneralProcessUtils.getRecordByFieldOrElseThrow(new AbstractActionInput(instance, new QSession()), TestUtils.TABLE_NAME_SHAPE, "name", "Triangle")); - assertThrows(QException.class, () -> GeneralProcessUtils.getRecordByFieldOrElseThrow(new AbstractActionInput(instance, new QSession()), TestUtils.TABLE_NAME_SHAPE, "name", "notAShape")); + assertNotNull(GeneralProcessUtils.getRecordByFieldOrElseThrow(new AbstractActionInput(), TestUtils.TABLE_NAME_SHAPE, "name", "Triangle")); + assertThrows(QException.class, () -> GeneralProcessUtils.getRecordByFieldOrElseThrow(new AbstractActionInput(), TestUtils.TABLE_NAME_SHAPE, "name", "notAShape")); } @@ -387,10 +378,10 @@ class GeneralProcessUtilsTest @Test void testGetRecordByPrimaryKey() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertDefaultShapes(instance); - AbstractActionInput actionInput = new AbstractActionInput(instance, new QSession()); + AbstractActionInput actionInput = new AbstractActionInput(); assertTrue(GeneralProcessUtils.getRecordByPrimaryKey(actionInput, TestUtils.TABLE_NAME_SHAPE, 1).isPresent()); assertFalse(GeneralProcessUtils.getRecordByPrimaryKey(actionInput, TestUtils.TABLE_NAME_SHAPE, -1).isPresent()); assertNotNull(GeneralProcessUtils.getRecordByPrimaryKeyOrElseThrow(actionInput, TestUtils.TABLE_NAME_SHAPE, 1)); @@ -405,9 +396,9 @@ class GeneralProcessUtilsTest @Test void testCount() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertDefaultShapes(instance); - AbstractActionInput actionInput = new AbstractActionInput(instance, new QSession()); + AbstractActionInput actionInput = new AbstractActionInput(); assertEquals(3, GeneralProcessUtils.count(actionInput, TestUtils.TABLE_NAME_SHAPE, null)); assertEquals(1, GeneralProcessUtils.count(actionInput, TestUtils.TABLE_NAME_SHAPE, new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.EQUALS, 2)))); @@ -422,9 +413,9 @@ class GeneralProcessUtilsTest @Test void testGetEntityByField() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertDefaultShapes(instance); - AbstractActionInput actionInput = new AbstractActionInput(instance, new QSession()); + AbstractActionInput actionInput = new AbstractActionInput(); assertEquals("Triangle", GeneralProcessUtils.getEntityByField(actionInput, TestUtils.TABLE_NAME_SHAPE, "name", "Triangle", Shape.class).get().getName()); assertFalse(GeneralProcessUtils.getEntityByField(actionInput, TestUtils.TABLE_NAME_SHAPE, "name", "notAShape", Shape.class).isPresent()); @@ -438,9 +429,9 @@ class GeneralProcessUtilsTest @Test void testLoadTableAsEntities() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertDefaultShapes(instance); - AbstractActionInput actionInput = new AbstractActionInput(instance, new QSession()); + AbstractActionInput actionInput = new AbstractActionInput(); List shapes = GeneralProcessUtils.loadTable(actionInput, TestUtils.TABLE_NAME_SHAPE, Shape.class); assertEquals(3, shapes.size()); @@ -455,9 +446,9 @@ class GeneralProcessUtilsTest @Test void testLoadTableToMapAsEntities() throws QException { - QInstance instance = TestUtils.defineInstance(); + QInstance instance = QContext.getQInstance(); TestUtils.insertDefaultShapes(instance); - AbstractActionInput actionInput = new AbstractActionInput(instance, new QSession()); + AbstractActionInput actionInput = new AbstractActionInput(); Map map = GeneralProcessUtils.loadTableToMap(actionInput, TestUtils.TABLE_NAME_SHAPE, "id", Shape.class); assertEquals(3, map.size()); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/utils/RecordLookupHelperTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/utils/RecordLookupHelperTest.java index ac6418cd..73e7a666 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/utils/RecordLookupHelperTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/utils/RecordLookupHelperTest.java @@ -23,10 +23,11 @@ package com.kingsrook.qqq.backend.core.processes.utils; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; @@ -40,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for RecordLookupHelper *******************************************************************************/ -class RecordLookupHelperTest +class RecordLookupHelperTest extends BaseTest { /******************************************************************************* ** @@ -62,9 +63,9 @@ class RecordLookupHelperTest @Test void testWithoutPreload() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); TestUtils.insertDefaultShapes(qInstance); - RecordLookupHelper recordLookupHelper = new RecordLookupHelper(new AbstractActionInput(qInstance, new QSession())); + RecordLookupHelper recordLookupHelper = new RecordLookupHelper(new AbstractActionInput()); MemoryRecordStore.setCollectStatistics(true); assertEquals(2, recordLookupHelper.getRecordId(TestUtils.TABLE_NAME_SHAPE, "name", "Square")); @@ -88,10 +89,10 @@ class RecordLookupHelperTest @Test void testWithPreload() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); TestUtils.insertDefaultShapes(qInstance); - RecordLookupHelper recordLookupHelper = new RecordLookupHelper(new AbstractActionInput(qInstance, new QSession())); + RecordLookupHelper recordLookupHelper = new RecordLookupHelper(new AbstractActionInput()); recordLookupHelper.preloadRecords(TestUtils.TABLE_NAME_SHAPE, "name"); assertEquals(1, MemoryRecordStore.getStatistics().get(MemoryRecordStore.STAT_QUERIES_RAN)); @@ -129,10 +130,10 @@ class RecordLookupHelperTest @Test void testWithPreloadInListToCacheMisses() throws QException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); TestUtils.insertDefaultShapes(qInstance); - RecordLookupHelper recordLookupHelper = new RecordLookupHelper(new AbstractActionInput(qInstance, new QSession())); + RecordLookupHelper recordLookupHelper = new RecordLookupHelper(new AbstractActionInput()); recordLookupHelper.preloadRecords(TestUtils.TABLE_NAME_SHAPE, "name", List.of("Triangle", "Square", "Circle", "Hexagon")); assertEquals(1, MemoryRecordStore.getStatistics().get(MemoryRecordStore.STAT_QUERIES_RAN)); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/scheduler/ScheduleManagerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/scheduler/ScheduleManagerTest.java index 0a0de19f..b164376f 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/scheduler/ScheduleManagerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/scheduler/ScheduleManagerTest.java @@ -24,7 +24,9 @@ package com.kingsrook.qqq.backend.core.scheduler; import java.util.List; import java.util.concurrent.TimeUnit; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.actions.processes.BackendStep; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException; import com.kingsrook.qqq.backend.core.instances.QInstanceValidator; @@ -37,7 +39,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; import com.kingsrook.qqq.backend.core.model.metadata.scheduleing.QScheduleMetaData; import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.utils.SleepUtils; -import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -47,7 +48,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for ScheduleManager *******************************************************************************/ -class ScheduleManagerTest +class ScheduleManagerTest extends BaseTest { /******************************************************************************* @@ -67,7 +68,7 @@ class ScheduleManagerTest @Test void testStartAndStop() { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); ScheduleManager scheduleManager = ScheduleManager.getInstance(qInstance); scheduleManager.start(); @@ -84,7 +85,7 @@ class ScheduleManagerTest @Test void testScheduledProcess() throws QInstanceValidationException { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); new QInstanceValidator().validate(qInstance); qInstance.getAutomationProviders().clear(); qInstance.getQueueProviders().clear(); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/state/InMemoryStateProviderTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/state/InMemoryStateProviderTest.java index c030781a..f1dccee9 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/state/InMemoryStateProviderTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/state/InMemoryStateProviderTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.state; import java.util.UUID; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import org.junit.jupiter.api.Assertions; @@ -32,7 +33,7 @@ import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for InMemoryStateProvider *******************************************************************************/ -public class InMemoryStateProviderTest +public class InMemoryStateProviderTest extends BaseTest { /******************************************************************************* @@ -48,6 +49,7 @@ public class InMemoryStateProviderTest } + /******************************************************************************* ** *******************************************************************************/ @@ -57,7 +59,7 @@ public class InMemoryStateProviderTest InMemoryStateProvider stateProvider = InMemoryStateProvider.getInstance(); UUIDAndTypeStateKey key = new UUIDAndTypeStateKey(StateType.PROCESS_STATUS); - String uuid = UUID.randomUUID().toString(); + String uuid = UUID.randomUUID().toString(); QRecord qRecord = new QRecord().withValue("uuid", uuid); stateProvider.put(key, qRecord); @@ -76,7 +78,7 @@ public class InMemoryStateProviderTest InMemoryStateProvider stateProvider = InMemoryStateProvider.getInstance(); UUIDAndTypeStateKey key = new UUIDAndTypeStateKey(StateType.PROCESS_STATUS); - String uuid = UUID.randomUUID().toString(); + String uuid = UUID.randomUUID().toString(); QRecord qRecord = new QRecord().withValue("uuid", uuid); stateProvider.put(key, qRecord); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/state/TempFileStateProviderTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/state/TempFileStateProviderTest.java index bcce1165..96ecedc0 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/state/TempFileStateProviderTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/state/TempFileStateProviderTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.state; import java.util.UUID; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import org.junit.jupiter.api.Assertions; @@ -32,7 +33,7 @@ import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for TempFileStateProvider *******************************************************************************/ -public class TempFileStateProviderTest +public class TempFileStateProviderTest extends BaseTest { /******************************************************************************* @@ -48,6 +49,7 @@ public class TempFileStateProviderTest } + /******************************************************************************* ** *******************************************************************************/ @@ -57,7 +59,7 @@ public class TempFileStateProviderTest TempFileStateProvider stateProvider = TempFileStateProvider.getInstance(); UUIDAndTypeStateKey key = new UUIDAndTypeStateKey(StateType.PROCESS_STATUS); - String uuid = UUID.randomUUID().toString(); + String uuid = UUID.randomUUID().toString(); QRecord qRecord = new QRecord().withValue("uuid", uuid); stateProvider.put(key, qRecord); @@ -76,7 +78,7 @@ public class TempFileStateProviderTest TempFileStateProvider stateProvider = TempFileStateProvider.getInstance(); UUIDAndTypeStateKey key = new UUIDAndTypeStateKey(StateType.PROCESS_STATUS); - String uuid = UUID.randomUUID().toString(); + String uuid = UUID.randomUUID().toString(); QRecord qRecord = new QRecord().withValue("uuid", uuid); stateProvider.put(key, qRecord); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/CollectionUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/CollectionUtilsTest.java index 9508d8fd..06dd2475 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/CollectionUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/CollectionUtilsTest.java @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -40,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; ** Unit test for CollectionUtils ** *******************************************************************************/ -class CollectionUtilsTest +class CollectionUtilsTest extends BaseTest { /******************************************************************************* @@ -422,7 +423,7 @@ class CollectionUtilsTest void test_safelyGetPage() { List empty = Collections.emptyList(); - List list = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + List list = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); ///////////////////// // null list input // @@ -479,14 +480,14 @@ class CollectionUtilsTest ///////////////////////////////////////////////////////// // make sure scrolling through pages works as expected // ///////////////////////////////////////////////////////// - int skip = 0; - int limit = 3; - int pageCount = 0; + int skip = 0; + int limit = 3; + int pageCount = 0; List accumulator = new ArrayList<>(); - while (true) + while(true) { List nextPage = CollectionUtils.safelyGetPage(list, skip, limit); - if (nextPage.isEmpty()) + if(nextPage.isEmpty()) { break; } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java index 12fb1b9a..c92d4fe5 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.utils; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QUserFacingException; import org.junit.jupiter.api.Test; @@ -33,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertSame; ** Unit test for ExceptionUtils ** *******************************************************************************/ -class ExceptionUtilsTest +class ExceptionUtilsTest extends BaseTest { /******************************************************************************* @@ -67,7 +68,7 @@ class ExceptionUtilsTest assertSame(root, ExceptionUtils.getRootException(container)); Exception middle = new Exception("middle", root); - Exception top = new Exception("top", middle); + Exception top = new Exception("top", middle); assertSame(root, ExceptionUtils.getRootException(top)); //////////////////////////////////////////////////////////////////////////////////////// diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/JsonUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/JsonUtilsTest.java index 0069fb04..de9121b3 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/JsonUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/JsonUtilsTest.java @@ -28,6 +28,7 @@ import java.math.BigDecimal; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterOrderBy; @@ -50,7 +51,7 @@ import static org.junit.jupiter.api.Assertions.fail; ** Unit test for JsonUtils. ** *******************************************************************************/ -class JsonUtilsTest +class JsonUtilsTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ListingHashTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ListingHashTest.java index 624219f6..8ceddaa0 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ListingHashTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ListingHashTest.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -38,7 +39,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; ** Unit test for ListingHash ** *******************************************************************************/ -class ListingHashTest +class ListingHashTest extends BaseTest { /******************************************************************************* @@ -171,8 +172,8 @@ class ListingHashTest @Test void test_entrySet() { - ListingHash listingHash = makeDefaultTestListingHash(); - Set>> entrySet = listingHash.entrySet(); + ListingHash listingHash = makeDefaultTestListingHash(); + Set>> entrySet = listingHash.entrySet(); assertEquals(2, entrySet.size()); } @@ -204,7 +205,7 @@ class ListingHashTest void test_get() { ListingHash listingHash = makeDefaultTestListingHash(); - List aList = listingHash.get("A"); + List aList = listingHash.get("A"); assertEquals(2, aList.size()); assertEquals("Apple", aList.get(0)); assertEquals("Acorn", aList.get(1)); @@ -255,7 +256,7 @@ class ListingHashTest void test_keySet() { ListingHash listingHash = makeDefaultTestListingHash(); - Set keySet = listingHash.keySet(); + Set keySet = listingHash.keySet(); assertEquals(2, keySet.size()); assertTrue(keySet.contains("A")); assertTrue(keySet.contains("B")); @@ -346,7 +347,7 @@ class ListingHashTest void test_values() { ListingHash listingHash = makeDefaultTestListingHash(); - Collection> values = listingHash.values(); + Collection> values = listingHash.values(); assertEquals(2, values.size()); assertTrue(values.contains(List.of("Apple", "Acorn"))); assertTrue(values.contains(List.of("Ball"))); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/LogUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/LogUtilsTest.java index 63396d3c..3d7b6d7b 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/LogUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/LogUtilsTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.utils; import java.math.BigDecimal; +import com.kingsrook.qqq.backend.core.BaseTest; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Test; @@ -34,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for com.kingsrook.qqq.backend.core.utils.LogUtils *******************************************************************************/ -class LogUtilsTest +class LogUtilsTest extends BaseTest { private static final Logger LOG = LogManager.getLogger(LogUtilsTest.class); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/SleepUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/SleepUtilsTest.java index 68653439..0d016333 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/SleepUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/SleepUtilsTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.utils; import java.util.concurrent.TimeUnit; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -30,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for SleepUtils *******************************************************************************/ -class SleepUtilsTest +class SleepUtilsTest extends BaseTest { /******************************************************************************* @@ -41,7 +42,7 @@ class SleepUtilsTest { long start = System.currentTimeMillis(); SleepUtils.sleep(10, TimeUnit.MILLISECONDS); - long end = System.currentTimeMillis(); + long end = System.currentTimeMillis(); long sleptFor = end - start; System.out.println("Slept for: " + sleptFor); assertTrue(sleptFor >= 10); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/StringUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/StringUtilsTest.java index 3e75eb8d..9b3fce82 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/StringUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/StringUtilsTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.utils; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -34,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; ** Unit test for StringUtils ** *******************************************************************************/ -class StringUtilsTest +class StringUtilsTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TestUtils.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TestUtils.java index 89c5983e..3324706e 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TestUtils.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TestUtils.java @@ -271,8 +271,7 @@ public class TestUtils *******************************************************************************/ public static void insertRecords(QInstance qInstance, QTableMetaData table, List records) throws QException { - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(table.getName()); insertInput.setRecords(records); new InsertAction().execute(insertInput); @@ -306,8 +305,7 @@ public class TestUtils } } - UpdateInput updateInput = new UpdateInput(runBackendStepInput.getInstance()); - updateInput.setSession(runBackendStepInput.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(TABLE_NAME_PERSON_MEMORY); updateInput.setRecords(recordsToUpdate); new UpdateAction().execute(updateInput); @@ -776,8 +774,7 @@ public class TestUtils if(!recordsToUpdate.isEmpty()) { - UpdateInput updateInput = new UpdateInput(recordAutomationInput.getInstance()); - updateInput.setSession(recordAutomationInput.getSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(recordAutomationInput.getTableName()); updateInput.setRecords(recordsToUpdate); new UpdateAction().execute(updateInput); @@ -1009,8 +1006,7 @@ public class TestUtils *******************************************************************************/ public static List queryTable(QInstance instance, String tableName) throws QException { - QueryInput queryInput = new QueryInput(instance); - queryInput.setSession(TestUtils.getMockSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); QueryOutput queryOutput = new QueryAction().execute(queryInput); return (queryOutput.getRecords()); @@ -1028,8 +1024,7 @@ public class TestUtils new QRecord().withTableName(TABLE_NAME_SHAPE).withValue("id", 2).withValue("name", "Square"), new QRecord().withTableName(TABLE_NAME_SHAPE).withValue("id", 3).withValue("name", "Circle")); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TABLE_NAME_SHAPE); insertInput.setRecords(shapeRecords); new InsertAction().execute(insertInput); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TimerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TimerTest.java index 09893528..c0b4cae6 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TimerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/TimerTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.core.utils; +import com.kingsrook.qqq.backend.core.BaseTest; import org.apache.logging.log4j.Level; import org.junit.jupiter.api.Test; @@ -29,7 +30,7 @@ import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for Timer *******************************************************************************/ -class TimerTest +class TimerTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ValueUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ValueUtilsTest.java index ae00eccf..90ff443a 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ValueUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ValueUtilsTest.java @@ -33,6 +33,7 @@ import java.time.LocalTime; import java.time.Month; import java.util.Calendar; import java.util.GregorianCalendar; +import com.kingsrook.qqq.backend.core.BaseTest; import com.kingsrook.qqq.backend.core.exceptions.QValueException; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -47,7 +48,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for ValueUtils *******************************************************************************/ -class ValueUtilsTest +class ValueUtilsTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/aggregates/AggregatesTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/aggregates/AggregatesTest.java index ff429dd7..86b09257 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/aggregates/AggregatesTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/aggregates/AggregatesTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.utils.aggregates; import java.math.BigDecimal; +import com.kingsrook.qqq.backend.core.BaseTest; import org.assertj.core.data.Offset; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -33,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; /******************************************************************************* ** Unit test for Aggregates *******************************************************************************/ -class AggregatesTest +class AggregatesTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/collections/MutableListTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/collections/MutableListTest.java index 4fb73c6d..677509fd 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/collections/MutableListTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/collections/MutableListTest.java @@ -23,13 +23,14 @@ package com.kingsrook.qqq.backend.core.utils.collections; import java.util.List; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for com.kingsrook.qqq.backend.core.utils.collections.MutableList *******************************************************************************/ -class MutableListTest +class MutableListTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/collections/MutableMapTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/collections/MutableMapTest.java index f002b67e..cc2d160e 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/collections/MutableMapTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/collections/MutableMapTest.java @@ -23,13 +23,14 @@ package com.kingsrook.qqq.backend.core.utils.collections; import java.util.Map; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for com.kingsrook.qqq.backend.core.utils.collections.MutableMap *******************************************************************************/ -class MutableMapTest +class MutableMapTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/lambdas/LambdasTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/lambdas/LambdasTest.java index 457347fe..36d45960 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/lambdas/LambdasTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/lambdas/LambdasTest.java @@ -22,13 +22,14 @@ package com.kingsrook.qqq.backend.core.utils.lambdas; +import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for any simple lambdas we have (kinda just here to ensure test coverage metrics...) *******************************************************************************/ -class LambdasTest +class LambdasTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java index 4996b8d2..fa14cc34 100644 --- a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java +++ b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java @@ -89,7 +89,7 @@ public class BaseAPIActionUtil { private final QLogger LOG = QLogger.getLogger(BaseAPIActionUtil.class); - protected QSession session; + protected QSession session; // todo not commit - delete!! protected APIBackendMetaData backendMetaData; protected AbstractTableActionInput actionInput; @@ -116,7 +116,7 @@ public class BaseAPIActionUtil } catch(Exception e) { - LOG.error(session, "Error in API count", e); + LOG.error("Error in API count", e); throw new QException("Error executing count: " + e.getMessage(), e); } } @@ -149,7 +149,7 @@ public class BaseAPIActionUtil } catch(Exception e) { - LOG.error(session, "Error in API get", e); + LOG.error("Error in API get", e); throw new QException("Error executing get: " + e.getMessage(), e); } } @@ -166,7 +166,7 @@ public class BaseAPIActionUtil if(CollectionUtils.nullSafeIsEmpty(insertInput.getRecords())) { - LOG.debug(session, "Insert request called with 0 records. Returning with no-op"); + LOG.debug("Insert request called with 0 records. Returning with no-op"); return (insertOutput); } @@ -207,7 +207,7 @@ public class BaseAPIActionUtil } catch(Exception e) { - LOG.error(session, "Error in API Insert for [" + table.getName() + "]", e); + LOG.error("Error in API Insert for [" + table.getName() + "]", e); throw new QException("Error executing insert: " + e.getMessage(), e); } @@ -265,7 +265,7 @@ public class BaseAPIActionUtil /////////////////////////////////////////////////////////////////// if(queryInput.getAsyncJobCallback().wasCancelRequested()) { - LOG.info(session, "Breaking query job, as requested."); + LOG.info("Breaking query job, as requested."); return (queryOutput); } @@ -280,7 +280,7 @@ public class BaseAPIActionUtil } catch(Exception e) { - LOG.error(session, "Error in API Query", e); + LOG.error("Error in API Query", e); throw new QException("Error executing query: " + e.getMessage(), e); } } @@ -298,7 +298,7 @@ public class BaseAPIActionUtil if(CollectionUtils.nullSafeIsEmpty(updateInput.getRecords())) { - LOG.debug(session, "Update request called with 0 records. Returning with no-op"); + LOG.debug("Update request called with 0 records. Returning with no-op"); return (updateOutput); } @@ -325,7 +325,7 @@ public class BaseAPIActionUtil catch(Exception e) { String errorMessage = "An unexpected error occurred updating entities."; - LOG.error(session, errorMessage, e); + LOG.error(errorMessage, e); throw (new QException(errorMessage, e)); } @@ -343,7 +343,7 @@ public class BaseAPIActionUtil } catch(Exception e) { - LOG.error(session, "Error in API Update for [" + table.getName() + "]", e); + LOG.error("Error in API Update for [" + table.getName() + "]", e); throw new QException("Error executing update: " + e.getMessage(), e); } } @@ -483,7 +483,7 @@ public class BaseAPIActionUtil int statusCode = response.getStatusCode(); String resultString = response.getContent(); String errorMessage = "HTTP " + request.getMethod() + " for table [" + table.getName() + "] failed with status " + statusCode + ": " + resultString; - LOG.error(session, errorMessage); + LOG.error(errorMessage); if("GET".equals(request.getMethod())) { @@ -605,7 +605,7 @@ public class BaseAPIActionUtil String fullURL = backendMetaData.getBaseUrl() + "oauth/token"; String postBody = "grant_type=client_credentials&client_id=" + backendMetaData.getClientId() + "&client_secret=" + backendMetaData.getClientSecret(); - LOG.info(session, "Fetching OAuth2 token from " + fullURL); + LOG.info("Fetching OAuth2 token from " + fullURL); try(CloseableHttpClient client = HttpClients.custom().setConnectionManager(new PoolingHttpClientConnectionManager()).build()) { @@ -624,7 +624,7 @@ public class BaseAPIActionUtil JSONObject resultJSON = new JSONObject(resultString); accessToken = (resultJSON.getString("access_token")); - LOG.debug(session, "Fetched access token: " + accessToken); + LOG.debug("Fetched access token: " + accessToken); /////////////////////////////////////////////////////////////////////////////////////////////////// // stash the access token in the backendMetaData, from which it will be used for future requests // @@ -638,7 +638,7 @@ public class BaseAPIActionUtil catch(Exception e) { String errorMessage = "Error getting OAuth Token"; - LOG.warn(session, errorMessage, e); + LOG.warn(errorMessage, e); throw (new OAuthCredentialsException(errorMessage, e)); } } @@ -853,10 +853,10 @@ public class BaseAPIActionUtil setupContentTypeInRequest(request); setupAdditionalHeaders(request); - LOG.info(session, "Making [" + request.getMethod() + "] request to URL [" + request.getURI() + "] on table [" + table.getName() + "]."); + LOG.info("Making [" + request.getMethod() + "] request to URL [" + request.getURI() + "] on table [" + table.getName() + "]."); if("POST".equals(request.getMethod())) { - LOG.info(session, "POST contents [" + ((HttpPost) request).getEntity().toString() + "]"); + LOG.info("POST contents [" + ((HttpPost) request).getEntity().toString() + "]"); } try(CloseableHttpResponse response = httpClient.execute(request)) @@ -873,26 +873,26 @@ public class BaseAPIActionUtil handleResponseError(table, request, qResponse); } - LOG.info(session, "Received successful response with code [" + qResponse.getStatusCode() + "] and content [" + qResponse.getContent() + "]."); + LOG.info("Received successful response with code [" + qResponse.getStatusCode() + "] and content [" + qResponse.getContent() + "]."); return (qResponse); } } catch(OAuthCredentialsException oce) { - LOG.error(session, "OAuth Credential failure for [" + table.getName() + "]"); + LOG.error("OAuth Credential failure for [" + table.getName() + "]"); throw (oce); } catch(OAuthExpiredTokenException oete) { if(!caughtAnOAuthExpiredToken) { - LOG.info(session, "OAuth Expired token for [" + table.getName() + "] - retrying"); + LOG.info("OAuth Expired token for [" + table.getName() + "] - retrying"); backendMetaData.withCustomValue("accessToken", null); caughtAnOAuthExpiredToken = true; } else { - LOG.info(session, "OAuth Expired token for [" + table.getName() + "] even after a retry. Giving up."); + LOG.info("OAuth Expired token for [" + table.getName() + "] even after a retry. Giving up."); throw (oete); } } @@ -901,11 +901,11 @@ public class BaseAPIActionUtil rateLimitsCaught++; if(rateLimitsCaught > getMaxAllowedRateLimitErrors()) { - LOG.error(session, "Giving up POST to [" + table.getName() + "] after too many rate-limit errors (" + getMaxAllowedRateLimitErrors() + ")"); + LOG.error("Giving up POST to [" + table.getName() + "] after too many rate-limit errors (" + getMaxAllowedRateLimitErrors() + ")"); throw (new QException(rle)); } - LOG.warn(session, "Caught RateLimitException [#" + rateLimitsCaught + "] during HTTP request to [" + request.getURI() + "] on table [" + table.getName() + "] - sleeping [" + sleepMillis + "]..."); + LOG.warn("Caught RateLimitException [#" + rateLimitsCaught + "] during HTTP request to [" + request.getURI() + "] on table [" + table.getName() + "] - sleeping [" + sleepMillis + "]..."); SleepUtils.sleep(sleepMillis, TimeUnit.MILLISECONDS); sleepMillis *= 2; } @@ -919,7 +919,7 @@ public class BaseAPIActionUtil catch(Exception e) { String message = "An unknown error occurred trying to make an HTTP request to [" + request.getURI() + "] on table [" + table.getName() + "]."; - LOG.error(session, message, e); + LOG.error(message, e); throw (new QException(message, e)); } } diff --git a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/BaseTest.java b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/BaseTest.java new file mode 100644 index 00000000..fdd3d3bc --- /dev/null +++ b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/BaseTest.java @@ -0,0 +1,60 @@ +/* + * Copyright © 2022-2023. Nutrifresh Services . All Rights Reserved. + */ + +package com.kingsrook.qqq.backend.module.api; + + +import com.kingsrook.qqq.backend.core.context.QContext; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.session.QSession; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; + + +/******************************************************************************* + ** + *******************************************************************************/ +public class BaseTest +{ + private static final Logger LOG = LogManager.getLogger(BaseTest.class); + + + + /******************************************************************************* + ** + *******************************************************************************/ + @BeforeEach + void baseBeforeEach() + { + QContext.init(TestUtils.defineInstance(), new QSession()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @AfterEach + void baseAfterEach() + { + QContext.clear(); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + protected static void reInitInstanceInContext(QInstance qInstance) + { + if(qInstance.equals(QContext.getQInstance())) + { + LOG.warn("Unexpected condition - the same qInstance that is already in the QContext was passed into reInit. You probably want a new QInstance object instance."); + } + QContext.init(qInstance, new QSession()); + } + +} diff --git a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/EasyPostApiTest.java b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/EasyPostApiTest.java index d5f3ede4..55eaa0a9 100644 --- a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/EasyPostApiTest.java +++ b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/EasyPostApiTest.java @@ -44,7 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; ** *******************************************************************************/ @DisabledOnOs(OS.LINUX) -public class EasyPostApiTest +public class EasyPostApiTest extends BaseTest { /******************************************************************************* @@ -67,8 +67,7 @@ public class EasyPostApiTest .withValue("carrier", "USPS") .withValue("trackingNo", "EZ4000000004"); - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("easypostTracker"); insertInput.setRecords(List.of(record)); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -88,8 +87,7 @@ public class EasyPostApiTest QRecord record1 = new QRecord().withValue("carrier", "USPS").withValue("trackingNo", "EZ1000000001"); QRecord record2 = new QRecord().withValue("carrier", "USPS").withValue("trackingNo", "EZ2000000002"); - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("easypostTracker"); insertInput.setRecords(List.of(record1, record2)); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -109,8 +107,7 @@ public class EasyPostApiTest @Test void testPostTrackerEmptyInput() throws QException { - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("easypostTracker"); insertInput.setRecords(List.of()); new InsertAction().execute(insertInput); @@ -131,13 +128,13 @@ public class EasyPostApiTest QInstance instance = TestUtils.defineInstance(); QBackendMetaData backend = instance.getBackend(TestUtils.EASYPOST_BACKEND_NAME); ((APIBackendMetaData) backend).setApiKey("not-valid"); + reInitInstanceInContext(instance); QRecord record = new QRecord() .withValue("carrier", "USPS") .withValue("trackingNo", "EZ1000000001"); - InsertInput insertInput = new InsertInput(instance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("easypostTracker"); insertInput.setRecords(List.of(record)); InsertOutput insertOutput = new InsertAction().execute(insertInput); @@ -159,8 +156,7 @@ public class EasyPostApiTest .withValue("carrier", "USPS") .withValue("trackingNo", "Not-Valid-Tracking-No"); - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("easypostTracker"); insertInput.setRecords(List.of(record)); InsertOutput insertOutput = new InsertAction().execute(insertInput); diff --git a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/TestUtils.java b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/TestUtils.java index cf358633..1217445b 100644 --- a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/TestUtils.java +++ b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/TestUtils.java @@ -26,12 +26,12 @@ import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter; import com.kingsrook.qqq.backend.core.model.metadata.QAuthenticationType; import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.metadata.authentication.QAuthenticationMetaData; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeUsage; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.authentication.QAuthenticationMetaData; import com.kingsrook.qqq.backend.module.api.model.AuthorizationType; import com.kingsrook.qqq.backend.module.api.model.metadata.APIBackendMetaData; import com.kingsrook.qqq.backend.module.api.model.metadata.APITableBackendDetails; diff --git a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/model/metadata/APIBackendMetaDataTest.java b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/model/metadata/APIBackendMetaDataTest.java index 4ac4d52d..00fa2842 100644 --- a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/model/metadata/APIBackendMetaDataTest.java +++ b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/model/metadata/APIBackendMetaDataTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.module.api.model.metadata; import com.kingsrook.qqq.backend.core.instances.QInstanceValidator; +import com.kingsrook.qqq.backend.module.api.BaseTest; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -31,7 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for APIBackendMetaData *******************************************************************************/ -class APIBackendMetaDataTest +class APIBackendMetaDataTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/utils/QueryStringBuilderTest.java b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/utils/QueryStringBuilderTest.java index 6427f15c..d4b61796 100644 --- a/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/utils/QueryStringBuilderTest.java +++ b/qqq-backend-module-api/src/test/java/com/kingsrook/qqq/backend/module/api/utils/QueryStringBuilderTest.java @@ -22,6 +22,7 @@ package com.kingsrook.qqq.backend.module.api.utils; +import com.kingsrook.qqq.backend.module.api.BaseTest; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -29,7 +30,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for QueryStringBuilder *******************************************************************************/ -class QueryStringBuilderTest +class QueryStringBuilderTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-module-filesystem/src/main/java/com/kingsrook/qqq/backend/module/filesystem/base/actions/AbstractBaseFilesystemAction.java b/qqq-backend-module-filesystem/src/main/java/com/kingsrook/qqq/backend/module/filesystem/base/actions/AbstractBaseFilesystemAction.java index d3fdb0a4..aed607d9 100644 --- a/qqq-backend-module-filesystem/src/main/java/com/kingsrook/qqq/backend/module/filesystem/base/actions/AbstractBaseFilesystemAction.java +++ b/qqq-backend-module-filesystem/src/main/java/com/kingsrook/qqq/backend/module/filesystem/base/actions/AbstractBaseFilesystemAction.java @@ -258,8 +258,7 @@ public abstract class AbstractBaseFilesystemAction *******************************************************************************/ public CountOutput executeCount(CountInput countInput) throws QException { - QueryInput queryInput = new QueryInput(countInput.getInstance()); - queryInput.setSession(countInput.getSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(countInput.getTableName()); queryInput.setFilter(countInput.getFilter()); QueryOutput queryOutput = executeQuery(queryInput); diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/BaseTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/BaseTest.java new file mode 100644 index 00000000..c2f30a82 --- /dev/null +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/BaseTest.java @@ -0,0 +1,61 @@ +/* + * Copyright © 2022-2023. Nutrifresh Services . All Rights Reserved. + */ + +package com.kingsrook.qqq.backend.module.filesystem; + + +import com.kingsrook.qqq.backend.core.context.QContext; +import com.kingsrook.qqq.backend.core.exceptions.QException; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.session.QSession; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; + + +/******************************************************************************* + ** + *******************************************************************************/ +public class BaseTest +{ + private static final Logger LOG = LogManager.getLogger(BaseTest.class); + + + + /******************************************************************************* + ** + *******************************************************************************/ + @BeforeEach + void baseBeforeEach() throws QException + { + QContext.init(TestUtils.defineInstance(), new QSession()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @AfterEach + void baseAfterEach() + { + QContext.clear(); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + protected static void reInitInstanceInContext(QInstance qInstance) + { + if(qInstance.equals(QContext.getQInstance())) + { + LOG.warn("Unexpected condition - the same qInstance that is already in the QContext was passed into reInit. You probably want a new QInstance object instance."); + } + QContext.init(qInstance, new QSession()); + } + +} diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemActionTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemActionTest.java index 8cf24310..1a1fac9e 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemActionTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemActionTest.java @@ -24,7 +24,10 @@ package com.kingsrook.qqq.backend.module.filesystem.local.actions; import java.io.File; import java.io.IOException; +import com.kingsrook.qqq.backend.core.context.QContext; +import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.utils.StringUtils; +import com.kingsrook.qqq.backend.module.filesystem.BaseTest; import com.kingsrook.qqq.backend.module.filesystem.TestUtils; import com.kingsrook.qqq.backend.module.filesystem.local.model.metadata.FilesystemBackendMetaData; import com.kingsrook.qqq.backend.module.filesystem.local.model.metadata.FilesystemTableBackendDetails; @@ -39,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.fail; ** ** Knows how to set up the filesystem for the tests. *******************************************************************************/ -public class FilesystemActionTest +public class FilesystemActionTest extends BaseTest { /******************************************************************************* @@ -49,6 +52,7 @@ public class FilesystemActionTest public void beforeEach() throws Exception { primeFilesystem(); + QContext.init(TestUtils.defineInstance(), new QSession()); } diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemCountActionTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemCountActionTest.java index 46cfabe2..8733b8c6 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemCountActionTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemCountActionTest.java @@ -43,7 +43,6 @@ public class FilesystemCountActionTest extends FilesystemActionTest public void testCount1() throws QException { CountInput countInput = new CountInput(); - countInput.setInstance(TestUtils.defineInstance()); countInput.setTableName(TestUtils.defineLocalFilesystemJSONPersonTable().getName()); CountOutput countOutput = new FilesystemCountAction().execute(countInput); Assertions.assertEquals(3, countOutput.getCount(), "Unfiltered count should find all rows"); diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemInsertActionTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemInsertActionTest.java index 4d6ae48a..45bc870d 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemInsertActionTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemInsertActionTest.java @@ -55,8 +55,7 @@ public class FilesystemInsertActionTest extends FilesystemActionTest public void testCardinalityOne() throws QException, IOException { QInstance qInstance = TestUtils.defineInstance(); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_BLOB_LOCAL_FS); insertInput.setRecords(List.of( new QRecord().withValue("fileName", "file1.txt").withValue("contents", "Hello, World") @@ -78,8 +77,7 @@ public class FilesystemInsertActionTest extends FilesystemActionTest public void testCardinalityMany() throws QException, IOException { QInstance qInstance = TestUtils.defineInstance(); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_LOCAL_FS_JSON); insertInput.setRecords(List.of( new QRecord().withValue("id", "1").withValue("firstName", "Bob") diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemQueryActionTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemQueryActionTest.java index f6646085..fed65794 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemQueryActionTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/local/actions/FilesystemQueryActionTest.java @@ -50,7 +50,6 @@ public class FilesystemQueryActionTest extends FilesystemActionTest public void testQuery1() throws QException { QueryInput queryInput = new QueryInput(); - queryInput.setInstance(TestUtils.defineInstance()); queryInput.setTableName(TestUtils.defineLocalFilesystemJSONPersonTable().getName()); QueryOutput queryOutput = new FilesystemQueryAction().execute(queryInput); Assertions.assertEquals(3, queryOutput.getRecords().size(), "Unfiltered query should find all rows"); @@ -72,8 +71,8 @@ public class FilesystemQueryActionTest extends FilesystemActionTest QTableMetaData table = instance.getTable(TestUtils.TABLE_NAME_PERSON_LOCAL_FS_JSON); table.withCustomizer(FilesystemTableCustomizers.POST_READ_FILE.getRole(), new QCodeReference(ValueUpshifter.class, QCodeUsage.CUSTOMIZER)); + reInitInstanceInContext(instance); - queryInput.setInstance(instance); queryInput.setTableName(TestUtils.defineLocalFilesystemJSONPersonTable().getName()); QueryOutput queryOutput = new FilesystemQueryAction().execute(queryInput); Assertions.assertEquals(3, queryOutput.getRecords().size(), "Unfiltered query should find all rows"); diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/basic/BasicETLCleanupSourceFilesStepTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/basic/BasicETLCleanupSourceFilesStepTest.java index 33604e1b..98b87e49 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/basic/BasicETLCleanupSourceFilesStepTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/basic/BasicETLCleanupSourceFilesStepTest.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; import com.kingsrook.qqq.backend.core.actions.processes.RunBackendStepAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; @@ -35,6 +36,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaD import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; import com.kingsrook.qqq.backend.core.processes.implementations.etl.basic.BasicETLProcess; import com.kingsrook.qqq.backend.core.utils.StringUtils; +import com.kingsrook.qqq.backend.module.filesystem.BaseTest; import com.kingsrook.qqq.backend.module.filesystem.TestUtils; import com.kingsrook.qqq.backend.module.filesystem.local.model.metadata.FilesystemBackendMetaData; import com.kingsrook.qqq.backend.module.filesystem.local.model.metadata.FilesystemTableBackendDetails; @@ -48,7 +50,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for BasicETLCleanupSourceFilesFunction *******************************************************************************/ -public class BasicETLCleanupSourceFilesStepTest +public class BasicETLCleanupSourceFilesStepTest extends BaseTest { /******************************************************************************* @@ -57,7 +59,7 @@ public class BasicETLCleanupSourceFilesStepTest @Test public void testDelete1Record1File() throws Exception { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); String filePath = getRandomFilePathPersonTable(qInstance); testDelete(qInstance, List.of(filePath)); } @@ -70,7 +72,7 @@ public class BasicETLCleanupSourceFilesStepTest @Test public void testDelete2Records1File() throws Exception { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); String filePath = getRandomFilePathPersonTable(qInstance); testDelete(qInstance, List.of(filePath, filePath)); } @@ -83,7 +85,7 @@ public class BasicETLCleanupSourceFilesStepTest @Test public void testDelete2Record2File() throws Exception { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); String filePath1 = getRandomFilePathPersonTable(qInstance); String filePath2 = getRandomFilePathPersonTable(qInstance); testDelete(qInstance, List.of(filePath1, filePath2)); @@ -97,7 +99,7 @@ public class BasicETLCleanupSourceFilesStepTest @Test public void testMove1Record1File() throws Exception { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); String filePath = getRandomFilePathPersonTable(qInstance); testMove(qInstance, List.of(filePath)); } @@ -110,7 +112,7 @@ public class BasicETLCleanupSourceFilesStepTest @Test public void testMove2Records1File() throws Exception { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); String filePath = getRandomFilePathPersonTable(qInstance); testMove(qInstance, List.of(filePath, filePath)); } @@ -123,7 +125,7 @@ public class BasicETLCleanupSourceFilesStepTest @Test public void testMove2Record2File() throws Exception { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); String filePath1 = getRandomFilePathPersonTable(qInstance); String filePath2 = getRandomFilePathPersonTable(qInstance); testMove(qInstance, List.of(filePath1, filePath2)); @@ -180,7 +182,7 @@ public class BasicETLCleanupSourceFilesStepTest private RunBackendStepOutput runFunction(QInstance qInstance, List filePaths, Map values) throws Exception { QBackendStepMetaData backendStepMetaData = new BasicETLCleanupSourceFilesStep().defineStepMetaData(); - QProcessMetaData qProcessMetaData = new QProcessMetaData().withName("testScaffold").addStep(backendStepMetaData); + QProcessMetaData qProcessMetaData = new QProcessMetaData().withName("testScaffold").addStep(backendStepMetaData); qInstance.addProcess(qProcessMetaData); HashSet filePathsSet = new HashSet<>(filePaths); @@ -193,11 +195,10 @@ public class BasicETLCleanupSourceFilesStepTest // List records = filePaths.stream() // .map(filePath -> new QRecord().withBackendDetail(FilesystemRecordBackendDetailFields.FULL_PATH, filePath)).toList(); - RunBackendStepInput runBackendStepInput = new RunBackendStepInput(qInstance); + RunBackendStepInput runBackendStepInput = new RunBackendStepInput(); runBackendStepInput.setStepName(backendStepMetaData.getName()); runBackendStepInput.setProcessName(qProcessMetaData.getName()); // runFunctionRequest.setRecords(records); - runBackendStepInput.setSession(TestUtils.getMockSession()); runBackendStepInput.addValue(BasicETLProcess.FIELD_SOURCE_TABLE, TestUtils.TABLE_NAME_PERSON_LOCAL_FS_JSON); runBackendStepInput.addValue(BasicETLProcess.FIELD_DESTINATION_TABLE, TestUtils.TABLE_NAME_PERSON_S3); runBackendStepInput.addValue(BasicETLCollectSourceFileNamesStep.FIELD_SOURCE_FILE_PATHS, StringUtils.join(",", filePathsSet)); diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/basic/BasicETLCollectSourceFileNamesStepTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/basic/BasicETLCollectSourceFileNamesStepTest.java index 0a2091c1..ca7814f0 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/basic/BasicETLCollectSourceFileNamesStepTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/basic/BasicETLCollectSourceFileNamesStepTest.java @@ -31,6 +31,7 @@ import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; +import com.kingsrook.qqq.backend.module.filesystem.BaseTest; import com.kingsrook.qqq.backend.module.filesystem.TestUtils; import com.kingsrook.qqq.backend.module.filesystem.base.FilesystemRecordBackendDetailFields; import org.junit.jupiter.api.Test; @@ -41,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for BasicETLCollectSourceFileNamesFunction *******************************************************************************/ -class BasicETLCollectSourceFileNamesStepTest +class BasicETLCollectSourceFileNamesStepTest extends BaseTest { /******************************************************************************* @@ -97,12 +98,12 @@ class BasicETLCollectSourceFileNamesStepTest QBackendStepMetaData backendStepMetaData = new BasicETLCollectSourceFileNamesStep().defineStepMetaData(); QProcessMetaData qProcessMetaData = new QProcessMetaData().withName("testScaffold").addStep(backendStepMetaData); qInstance.addProcess(qProcessMetaData); + reInitInstanceInContext(qInstance); List records = Arrays.stream(fileNames).map(fileName -> new QRecord().withBackendDetail(FilesystemRecordBackendDetailFields.FULL_PATH, fileName)).toList(); - RunBackendStepInput runBackendStepInput = new RunBackendStepInput(qInstance); - runBackendStepInput.setSession(TestUtils.getMockSession()); + RunBackendStepInput runBackendStepInput = new RunBackendStepInput(); runBackendStepInput.setStepName(backendStepMetaData.getName()); runBackendStepInput.setProcessName(qProcessMetaData.getName()); runBackendStepInput.setRecords(records); diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/streamed/StreamedETLFilesystemBackendStepTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/streamed/StreamedETLFilesystemBackendStepTest.java index 2c71d2a2..2f31f513 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/streamed/StreamedETLFilesystemBackendStepTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/etl/streamed/StreamedETLFilesystemBackendStepTest.java @@ -48,12 +48,11 @@ class StreamedETLFilesystemBackendStepTest extends FilesystemActionTest { QInstance qInstance = TestUtils.defineInstance(); - RunProcessInput runProcessInput = new RunProcessInput(qInstance); - runProcessInput.setSession(TestUtils.getMockSession()); + RunProcessInput runProcessInput = new RunProcessInput(); runProcessInput.setProcessName(TestUtils.PROCESS_NAME_STREAMED_ETL); - RunProcessOutput output = new RunProcessAction().execute(runProcessInput); - String sourceFilePaths = ValueUtils.getValueAsString(output.getValues().get(BasicETLCollectSourceFileNamesStep.FIELD_SOURCE_FILE_PATHS)); + RunProcessOutput output = new RunProcessAction().execute(runProcessInput); + String sourceFilePaths = ValueUtils.getValueAsString(output.getValues().get(BasicETLCollectSourceFileNamesStep.FIELD_SOURCE_FILE_PATHS)); assertThat(sourceFilePaths) .contains("FILE-1.csv") .contains("FILE-2.csv"); diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/filesystem/sync/FilesystemSyncProcessS3Test.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/filesystem/sync/FilesystemSyncProcessS3Test.java index 551f5f0b..a4c9e7f0 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/filesystem/sync/FilesystemSyncProcessS3Test.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/filesystem/sync/FilesystemSyncProcessS3Test.java @@ -30,12 +30,12 @@ import com.kingsrook.qqq.backend.core.exceptions.QModuleDispatchException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput; import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.modules.backend.QBackendModuleDispatcher; import com.kingsrook.qqq.backend.module.filesystem.TestUtils; import com.kingsrook.qqq.backend.module.filesystem.s3.BaseS3Test; @@ -83,6 +83,7 @@ class FilesystemSyncProcessS3Test extends BaseS3Test QProcessMetaData process = new FilesystemSyncProcess().defineProcessMetaData(); QBackendStepMetaData step = process.getBackendStep(FilesystemSyncStep.STEP_NAME); qInstance.addProcess(process); + reInitInstanceInContext(qInstance); step.getInputMetaData().getFieldThrowing(FilesystemSyncProcess.FIELD_SOURCE_TABLE).setDefaultValue(sourceTable.getName()); step.getInputMetaData().getFieldThrowing(FilesystemSyncProcess.FIELD_ARCHIVE_TABLE).setDefaultValue(archiveTable.getName()); @@ -102,10 +103,9 @@ class FilesystemSyncProcessS3Test extends BaseS3Test ////////////////// // run the step // ////////////////// - RunBackendStepInput runBackendStepInput = new RunBackendStepInput(qInstance); + RunBackendStepInput runBackendStepInput = new RunBackendStepInput(); runBackendStepInput.setStepName(step.getName()); runBackendStepInput.setProcessName(process.getName()); - runBackendStepInput.setSession(TestUtils.getMockSession()); RunBackendStepAction runFunctionAction = new RunBackendStepAction(); RunBackendStepOutput runBackendStepOutput = runFunctionAction.execute(runBackendStepInput); @@ -143,9 +143,10 @@ class FilesystemSyncProcessS3Test extends BaseS3Test QTableMetaData archiveTable = defineTable(qInstance, "archive", localBackend, "archive", "*/l3/*.csv"); QTableMetaData processingTable = defineTable(qInstance, "processing", localBackend, "processing", "**/*.csv"); - QProcessMetaData process = new FilesystemSyncProcess().defineProcessMetaData(); - QBackendStepMetaData step = process.getBackendStep(FilesystemSyncStep.STEP_NAME); + QProcessMetaData process = new FilesystemSyncProcess().defineProcessMetaData(); + QBackendStepMetaData step = process.getBackendStep(FilesystemSyncStep.STEP_NAME); qInstance.addProcess(process); + reInitInstanceInContext(qInstance); step.getInputMetaData().getFieldThrowing(FilesystemSyncProcess.FIELD_SOURCE_TABLE).setDefaultValue(sourceTable.getName()); step.getInputMetaData().getFieldThrowing(FilesystemSyncProcess.FIELD_ARCHIVE_TABLE).setDefaultValue(archiveTable.getName()); @@ -165,10 +166,9 @@ class FilesystemSyncProcessS3Test extends BaseS3Test ////////////////// // run the step // ////////////////// - RunBackendStepInput runBackendStepInput = new RunBackendStepInput(qInstance); + RunBackendStepInput runBackendStepInput = new RunBackendStepInput(); runBackendStepInput.setStepName(step.getName()); runBackendStepInput.setProcessName(process.getName()); - runBackendStepInput.setSession(TestUtils.getMockSession()); RunBackendStepAction runFunctionAction = new RunBackendStepAction(); RunBackendStepOutput runBackendStepOutput = runFunctionAction.execute(runBackendStepInput); diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/filesystem/sync/FilesystemSyncProcessTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/filesystem/sync/FilesystemSyncProcessTest.java index a9845a2b..9ff75ce7 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/filesystem/sync/FilesystemSyncProcessTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/processes/implementations/filesystem/sync/FilesystemSyncProcessTest.java @@ -27,12 +27,13 @@ import java.io.IOException; import com.kingsrook.qqq.backend.core.actions.processes.RunBackendStepAction; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; -import com.kingsrook.qqq.backend.core.model.metadata.QInstance; -import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; +import com.kingsrook.qqq.backend.module.filesystem.BaseTest; import com.kingsrook.qqq.backend.module.filesystem.TestUtils; import com.kingsrook.qqq.backend.module.filesystem.local.model.metadata.FilesystemBackendMetaData; import com.kingsrook.qqq.backend.module.filesystem.local.model.metadata.FilesystemTableBackendDetails; @@ -43,7 +44,7 @@ import org.junit.jupiter.api.Test; /******************************************************************************* ** Unit test for FilesystemSyncProcess *******************************************************************************/ -class FilesystemSyncProcessTest +class FilesystemSyncProcessTest extends BaseTest { /******************************************************************************* @@ -70,6 +71,7 @@ class FilesystemSyncProcessTest qInstance.addTable(archiveTable); qInstance.addTable(processingTable); qInstance.addProcess(process); + reInitInstanceInContext(qInstance); /////////////////////////// // write some test files // @@ -83,10 +85,9 @@ class FilesystemSyncProcessTest ////////////////////// // run the step // ////////////////////// - RunBackendStepInput runBackendStepInput = new RunBackendStepInput(qInstance); + RunBackendStepInput runBackendStepInput = new RunBackendStepInput(); runBackendStepInput.setStepName(step.getName()); runBackendStepInput.setProcessName(process.getName()); - runBackendStepInput.setSession(TestUtils.getMockSession()); RunBackendStepAction runFunctionAction = new RunBackendStepAction(); RunBackendStepOutput runBackendStepOutput = runFunctionAction.execute(runBackendStepInput); diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/BaseS3Test.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/BaseS3Test.java index 413f7ae8..eb32f29e 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/BaseS3Test.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/BaseS3Test.java @@ -28,6 +28,7 @@ import cloud.localstack.docker.LocalstackDockerExtension; import cloud.localstack.docker.annotation.LocalstackDockerProperties; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.model.S3ObjectSummary; +import com.kingsrook.qqq.backend.module.filesystem.BaseTest; import com.kingsrook.qqq.backend.module.filesystem.s3.utils.S3Utils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -39,7 +40,7 @@ import org.junit.jupiter.api.extension.ExtendWith; *******************************************************************************/ @ExtendWith(LocalstackDockerExtension.class) @LocalstackDockerProperties(useSingleDockerContainer = true, services = { ServiceName.S3 }, portEdge = "2960", portElasticSearch = "2961") -public class BaseS3Test +public class BaseS3Test extends BaseTest { public static final String BUCKET_NAME = "localstack-test-bucket"; public static final String TEST_FOLDER = "test-files"; diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3CountActionTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3CountActionTest.java index b2538f43..693b2e9f 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3CountActionTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3CountActionTest.java @@ -58,7 +58,6 @@ public class S3CountActionTest extends BaseS3Test private CountInput initCountRequest() throws QException { CountInput countInput = new CountInput(); - countInput.setInstance(TestUtils.defineInstance()); countInput.setTableName(TestUtils.defineS3CSVPersonTable().getName()); return countInput; } diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3InsertActionTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3InsertActionTest.java index c69c6019..594a84ba 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3InsertActionTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3InsertActionTest.java @@ -57,8 +57,7 @@ public class S3InsertActionTest extends BaseS3Test { QInstance qInstance = TestUtils.defineInstance(); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_BLOB_S3); insertInput.setRecords(List.of( new QRecord().withValue("fileName", "file2.txt").withValue("contents", "Hi, Bob.") @@ -86,8 +85,7 @@ public class S3InsertActionTest extends BaseS3Test public void testCardinalityMany() throws QException, IOException { QInstance qInstance = TestUtils.defineInstance(); - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON_S3); insertInput.setRecords(List.of( new QRecord().withValue("id", "1").withValue("firstName", "Bob") diff --git a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3QueryActionTest.java b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3QueryActionTest.java index 3f790fa0..9149686e 100644 --- a/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3QueryActionTest.java +++ b/qqq-backend-module-filesystem/src/test/java/com/kingsrook/qqq/backend/module/filesystem/s3/actions/S3QueryActionTest.java @@ -62,7 +62,6 @@ public class S3QueryActionTest extends BaseS3Test private QueryInput initQueryRequest() throws QException { QueryInput queryInput = new QueryInput(); - queryInput.setInstance(TestUtils.defineInstance()); queryInput.setTableName(TestUtils.defineS3CSVPersonTable().getName()); return queryInput; } diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java index f4a5665d..00b02138 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java @@ -133,7 +133,7 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf // execute the query - iterate over results // ////////////////////////////////////////////// QueryOutput queryOutput = new QueryOutput(queryInput); - // System.out.println(sql); + System.out.println(sql); PreparedStatement statement = createStatement(connection, sql.toString(), queryInput); QueryManager.executeStatement(statement, ((ResultSet resultSet) -> { diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java index ac4091af..d1219f38 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java @@ -40,10 +40,9 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.core.utils.ListingHash; +import com.kingsrook.qqq.backend.core.utils.QLogger; import com.kingsrook.qqq.backend.core.utils.StringUtils; import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; /******************************************************************************* @@ -56,7 +55,7 @@ import org.apache.logging.log4j.Logger; *******************************************************************************/ public class RDBMSUpdateAction extends AbstractRDBMSAction implements UpdateInterface { - private static final Logger LOG = LogManager.getLogger(RDBMSUpdateAction.class); + private static final QLogger LOG = QLogger.getLogger(RDBMSUpdateAction.class); private int statusCounter = 0; diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/BaseTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/BaseTest.java new file mode 100644 index 00000000..25e9c910 --- /dev/null +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/BaseTest.java @@ -0,0 +1,60 @@ +/* + * Copyright © 2022-2023. Nutrifresh Services . All Rights Reserved. + */ + +package com.kingsrook.qqq.backend.module.rdbms; + + +import com.kingsrook.qqq.backend.core.context.QContext; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.session.QSession; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; + + +/******************************************************************************* + ** + *******************************************************************************/ +public class BaseTest +{ + private static final Logger LOG = LogManager.getLogger(BaseTest.class); + + + + /******************************************************************************* + ** + *******************************************************************************/ + @BeforeEach + void baseBeforeEach() + { + QContext.init(TestUtils.defineInstance(), new QSession()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @AfterEach + void baseAfterEach() + { + QContext.clear(); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + protected static void reInitInstanceInContext(QInstance qInstance) + { + if(qInstance.equals(QContext.getQInstance())) + { + LOG.warn("Unexpected condition - the same qInstance that is already in the QContext was passed into reInit. You probably want a new QInstance object instance."); + } + QContext.init(qInstance, new QSession()); + } + +} diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSActionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSActionTest.java index 398f6f5f..3770dd40 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSActionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSActionTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.sql.Connection; +import com.kingsrook.qqq.backend.module.rdbms.BaseTest; import com.kingsrook.qqq.backend.module.rdbms.TestUtils; import com.kingsrook.qqq.backend.module.rdbms.jdbc.ConnectionManager; import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; @@ -32,7 +33,7 @@ import org.junit.jupiter.api.AfterEach; /******************************************************************************* ** *******************************************************************************/ -public class RDBMSActionTest +public class RDBMSActionTest extends BaseTest { /******************************************************************************* @@ -58,7 +59,6 @@ public class RDBMSActionTest - /******************************************************************************* ** *******************************************************************************/ diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSAggregateActionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSAggregateActionTest.java index 33ff54d2..418ecab0 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSAggregateActionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSAggregateActionTest.java @@ -26,6 +26,7 @@ import java.math.BigDecimal; import java.util.Iterator; import java.util.List; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.aggregate.Aggregate; import com.kingsrook.qqq.backend.core.model.actions.tables.aggregate.AggregateInput; @@ -310,9 +311,8 @@ public class RDBMSAggregateActionTest extends RDBMSActionTest @Test void testOmsJoinAggregate() throws Exception { - AggregateInput aggregateInput = new AggregateInput(TestUtils.defineInstance()); + AggregateInput aggregateInput = new AggregateInput(); Aggregate sumOfQuantity = new Aggregate(TestUtils.TABLE_NAME_ORDER_LINE + ".quantity", AggregateOperator.SUM); - aggregateInput.setSession(new QSession()); aggregateInput.setTableName(TestUtils.TABLE_NAME_ORDER); aggregateInput.withAggregate(sumOfQuantity); aggregateInput.withQueryJoin(new QueryJoin(TestUtils.TABLE_NAME_ORDER, TestUtils.TABLE_NAME_ORDER_LINE)); @@ -321,12 +321,12 @@ public class RDBMSAggregateActionTest extends RDBMSActionTest AggregateResult aggregateResult = aggregateOutput.getResults().get(0); assertNull(aggregateResult.getAggregateValue(sumOfQuantity)); - aggregateInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); aggregateOutput = new RDBMSAggregateAction().execute(aggregateInput); aggregateResult = aggregateOutput.getResults().get(0); Assertions.assertEquals(43, aggregateResult.getAggregateValue(sumOfQuantity)); - aggregateInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); aggregateOutput = new RDBMSAggregateAction().execute(aggregateInput); aggregateResult = aggregateOutput.getResults().get(0); // note - this would be 33, except for that one order line that has a contradictory store id... @@ -343,9 +343,8 @@ public class RDBMSAggregateActionTest extends RDBMSActionTest { GroupBy groupBy = new GroupBy(QFieldType.STRING, TestUtils.TABLE_NAME_ORDER_LINE + ".sku", null); - AggregateInput aggregateInput = new AggregateInput(TestUtils.defineInstance()); + AggregateInput aggregateInput = new AggregateInput(); Aggregate sumOfQuantity = new Aggregate(TestUtils.TABLE_NAME_ORDER_LINE + ".quantity", AggregateOperator.SUM); - aggregateInput.setSession(new QSession()); aggregateInput.setTableName(TestUtils.TABLE_NAME_ORDER); aggregateInput.withAggregate(sumOfQuantity); aggregateInput.withGroupBy(groupBy); @@ -354,7 +353,7 @@ public class RDBMSAggregateActionTest extends RDBMSActionTest AggregateOutput aggregateOutput = new RDBMSAggregateAction().execute(aggregateInput); assertEquals(0, aggregateOutput.getResults().size()); - aggregateInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); aggregateOutput = new RDBMSAggregateAction().execute(aggregateInput); assertSkuQuantity("QM-1", 30, aggregateOutput.getResults(), groupBy); assertSkuQuantity("QM-2", 1, aggregateOutput.getResults(), groupBy); @@ -390,8 +389,7 @@ public class RDBMSAggregateActionTest extends RDBMSActionTest *******************************************************************************/ private static void insertExtraPersonRecords() throws QException { - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.defineTablePerson().getName()); insertInput.setRecords(List.of( new QRecord().withValue("lastName", "Kelkhoff").withValue("firstName", "Trevor").withValue("email", "tk@kr.com").withValue("daysWorked", 1024), @@ -410,7 +408,6 @@ public class RDBMSAggregateActionTest extends RDBMSActionTest private AggregateInput initAggregateRequest() { AggregateInput aggregateInput = new AggregateInput(); - aggregateInput.setInstance(TestUtils.defineInstance()); aggregateInput.setTableName(TestUtils.defineTablePerson().getName()); return aggregateInput; } diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountActionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountActionTest.java index 561ce70c..b3b44229 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountActionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountActionTest.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.util.List; import com.kingsrook.qqq.backend.core.actions.tables.CountAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountInput; import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountOutput; @@ -117,8 +118,6 @@ public class RDBMSCountActionTest extends RDBMSActionTest private CountInput initCountRequest() { CountInput countInput = new CountInput(); - countInput.setInstance(TestUtils.defineInstance()); - countInput.setSession(new QSession()); countInput.setTableName(TestUtils.defineTablePerson().getName()); return countInput; } @@ -189,16 +188,15 @@ public class RDBMSCountActionTest extends RDBMSActionTest void testRecordSecurity() throws QException { CountInput countInput = new CountInput(); - countInput.setInstance(TestUtils.defineInstance()); countInput.setTableName(TestUtils.TABLE_NAME_ORDER); - countInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new CountAction().execute(countInput).getCount()).isEqualTo(0); - countInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new CountAction().execute(countInput).getCount()).isEqualTo(8); - countInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(2, 3))); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(2, 3))); assertThat(new CountAction().execute(countInput).getCount()).isEqualTo(5); } diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteActionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteActionTest.java index 8f7ee125..a441e914 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteActionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteActionTest.java @@ -138,7 +138,6 @@ public class RDBMSDeleteActionTest extends RDBMSActionTest private DeleteInput initStandardPersonDeleteRequest() { DeleteInput deleteInput = new DeleteInput(); - deleteInput.setInstance(TestUtils.defineInstance()); deleteInput.setTableName(TestUtils.defineTablePerson().getName()); return deleteInput; } @@ -319,9 +318,11 @@ public class RDBMSDeleteActionTest extends RDBMSActionTest .withBackendDetails(new RDBMSTableBackendDetails() .withTableName("parent_table"))); + reInitInstanceInContext(qInstance); + DeleteInput deleteInput = new DeleteInput(); - deleteInput.setInstance(qInstance); deleteInput.setTableName(childTableName); + return deleteInput; } } \ No newline at end of file diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertActionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertActionTest.java index 96f182d1..e2d1b9fe 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertActionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertActionTest.java @@ -164,7 +164,6 @@ public class RDBMSInsertActionTest extends RDBMSActionTest private InsertInput initInsertRequest() { InsertInput insertInput = new InsertInput(); - insertInput.setInstance(TestUtils.defineInstance()); insertInput.setTableName(TestUtils.defineTablePerson().getName()); return insertInput; } diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryActionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryActionTest.java index ecd18857..2430c5a2 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryActionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryActionTest.java @@ -30,6 +30,7 @@ import java.util.function.Predicate; import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator; @@ -451,9 +452,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest private QueryInput initQueryRequest() { QueryInput queryInput = new QueryInput(); - queryInput.setInstance(TestUtils.defineInstance()); queryInput.setTableName(TestUtils.TABLE_NAME_PERSON); - queryInput.setSession(new QSession()); return queryInput; } @@ -488,8 +487,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test void testLookInsideTransaction() throws QException { - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(TestUtils.TABLE_NAME_PERSON); InsertAction insertAction = new InsertAction(); @@ -748,7 +746,8 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test void testFiveTableOmsJoinFindMismatchedStoreId() throws Exception { - QueryInput queryInput = new QueryInput(TestUtils.defineInstance(), new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QueryInput queryInput = new QueryInput(); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); queryInput.withQueryJoin(new QueryJoin(TestUtils.TABLE_NAME_ORDER, TestUtils.TABLE_NAME_STORE).withAlias("orderStore").withSelect(true)); queryInput.withQueryJoin(new QueryJoin(TestUtils.TABLE_NAME_ORDER, TestUtils.TABLE_NAME_ORDER_LINE).withSelect(true)); @@ -790,7 +789,8 @@ public class RDBMSQueryActionTest extends RDBMSActionTest orderLineCount.set(rs.getInt(1)); }); - QueryInput queryInput = new QueryInput(TestUtils.defineInstance(), new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QueryInput queryInput = new QueryInput(); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER_LINE); queryInput.withQueryJoin(new QueryJoin(TestUtils.TABLE_NAME_ORDER).withSelect(true)); @@ -811,7 +811,8 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testOmsQueryByPersons() throws Exception { QInstance instance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(instance, new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QueryInput queryInput = new QueryInput(); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); ///////////////////////////////////////////////////// @@ -913,7 +914,8 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testOmsQueryByPersonsExtraKelkhoffOrder() throws Exception { QInstance instance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(instance, new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QueryInput queryInput = new QueryInput(); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); //////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -967,7 +969,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testDuplicateAliases() { QInstance instance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(instance, new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); queryInput.withQueryJoins(List.of( @@ -998,35 +1000,35 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testRecordSecurityPrimaryKeyFieldNoFilters() throws QException { QInstance qInstance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_STORE); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new QueryAction().execute(queryInput).getRecords()).hasSize(3); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(1) .anyMatch(r -> r.getValueInteger("id").equals(1)); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 2)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 2)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(1) .anyMatch(r -> r.getValueInteger("id").equals(2)); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 5)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 5)); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, null)); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, null)); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, Collections.emptyList())); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, Collections.emptyList())); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 3))); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 3))); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(2) .anyMatch(r -> r.getValueInteger("id").equals(1)) @@ -1043,35 +1045,35 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testRecordSecurityForeignKeyFieldNoFilters() throws QException { QInstance qInstance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new QueryAction().execute(queryInput).getRecords()).hasSize(8); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(3) .allMatch(r -> r.getValueInteger("storeId").equals(1)); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 2)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 2)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(2) .allMatch(r -> r.getValueInteger("storeId").equals(2)); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 5)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 5)); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, null)); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, null)); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, Collections.emptyList())); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, Collections.emptyList())); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 3))); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 3))); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(6) .allMatch(r -> r.getValueInteger("storeId").equals(1) || r.getValueInteger("storeId").equals(3)); @@ -1086,29 +1088,29 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testRecordSecurityWithFilters() throws QException { QInstance qInstance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.BETWEEN, List.of(2, 7)))); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new QueryAction().execute(queryInput).getRecords()).hasSize(6); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.BETWEEN, List.of(2, 7)))); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(2) .allMatch(r -> r.getValueInteger("storeId").equals(1)); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.BETWEEN, List.of(2, 7)))); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 5)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 5)); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.BETWEEN, List.of(2, 7)))); - queryInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("storeId", QCriteriaOperator.IN, List.of(1, 2)))); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 3))); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 3))); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(3) .allMatch(r -> r.getValueInteger("storeId").equals(1)); @@ -1123,14 +1125,14 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testRecordSecurityWithOrQueries() throws QException { QInstance qInstance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); queryInput.setFilter(new QQueryFilter( new QFilterCriteria("billToPersonId", QCriteriaOperator.EQUALS, List.of(1)), new QFilterCriteria("shipToPersonId", QCriteriaOperator.EQUALS, List.of(5)) ).withBooleanOperator(QQueryFilter.BooleanOperator.OR)); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(5) .allMatch(r -> Objects.equals(r.getValueInteger("billToPersonId"), 1) || Objects.equals(r.getValueInteger("shipToPersonId"), 5)); @@ -1139,7 +1141,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest new QFilterCriteria("billToPersonId", QCriteriaOperator.EQUALS, List.of(1)), new QFilterCriteria("shipToPersonId", QCriteriaOperator.EQUALS, List.of(5)) ).withBooleanOperator(QQueryFilter.BooleanOperator.OR)); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 2)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 2)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(1) .allMatch(r -> r.getValueInteger("storeId").equals(2)) @@ -1155,7 +1157,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testRecordSecurityWithSubFilters() throws QException { QInstance qInstance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); queryInput.setFilter(new QQueryFilter() @@ -1166,24 +1168,24 @@ public class RDBMSQueryActionTest extends RDBMSActionTest ))); Predicate p = r -> r.getValueInteger("billToPersonId") == null || r.getValueInteger("shipToPersonId") == null || (r.getValueInteger("id") >= 2 && r.getValueInteger("billToPersonId") == 1); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(4) .allMatch(p); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(1) .allMatch(r -> r.getValueInteger("storeId").equals(1)) .allMatch(p); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 3)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 3)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(3) .allMatch(r -> r.getValueInteger("storeId").equals(3)) .allMatch(p); - queryInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); } @@ -1199,15 +1201,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest runTestSql("INSERT INTO `order` (id, store_id, bill_to_person_id, ship_to_person_id) VALUES (10, NULL, 6, 5)", null); QInstance qInstance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); + reInitInstanceInContext(qInstance); Predicate hasNullStoreId = r -> r.getValueInteger("storeId") == null; //////////////////////////////////////////// // all-access user should get all 10 rows // //////////////////////////////////////////// - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(10) .anyMatch(hasNullStoreId); @@ -1215,13 +1218,13 @@ public class RDBMSQueryActionTest extends RDBMSActionTest ////////////////////////////////////////////////////////////////////////////////////////////////// // no-values user should get 0 rows (given that default null-behavior on this key type is DENY) // ////////////////////////////////////////////////////////////////////////////////////////////////// - queryInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // user with list of all ids shouldn't see the nulls (given that default null-behavior on this key type is DENY) // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 2, 3, 4, 5))); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 2, 3, 4, 5))); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(8) .noneMatch(hasNullStoreId); @@ -1231,10 +1234,10 @@ public class RDBMSQueryActionTest extends RDBMSActionTest ////////////////////////////////////////////////////////////////////////// qInstance.getTable(TestUtils.TABLE_NAME_ORDER).getRecordSecurityLocks().get(0).setNullValueBehavior(RecordSecurityLock.NullValueBehavior.DENY); - queryInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 2, 3, 4, 5))); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 2, 3, 4, 5))); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(8) .noneMatch(hasNullStoreId); @@ -1247,7 +1250,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest ///////////////////////////////////////////// // all-access user should still get all 10 // ///////////////////////////////////////////// - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(10) .anyMatch(hasNullStoreId); @@ -1255,7 +1258,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest ///////////////////////////////////////////////////// // no-values user should only get the rows w/ null // ///////////////////////////////////////////////////// - queryInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(2) .allMatch(hasNullStoreId); @@ -1263,7 +1266,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest //////////////////////////////////////////////////// // user with list of all ids should see the nulls // //////////////////////////////////////////////////// - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 2, 3, 4, 5))); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 2, 3, 4, 5))); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(10) .anyMatch(hasNullStoreId); @@ -1278,7 +1281,7 @@ public class RDBMSQueryActionTest extends RDBMSActionTest void testRecordSecurityWithLockFromJoinTable() throws QException { QInstance qInstance = TestUtils.defineInstance(); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(TestUtils.TABLE_NAME_ORDER); ///////////////////////////////////////////////////////////////////////////////////////////////// @@ -1291,25 +1294,25 @@ public class RDBMSQueryActionTest extends RDBMSActionTest .withFieldName("store.id")); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.BETWEEN, List.of(2, 7)))); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); assertThat(new QueryAction().execute(queryInput).getRecords()).hasSize(6); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.BETWEEN, List.of(2, 7)))); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 1)); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(2) .allMatch(r -> r.getValueInteger("storeId").equals(1)); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.BETWEEN, List.of(2, 7)))); - queryInput.setSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 5)); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.TABLE_NAME_STORE, 5)); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("id", QCriteriaOperator.BETWEEN, List.of(2, 7)))); - queryInput.setSession(new QSession()); + QContext.setQSession(new QSession()); assertThat(new QueryAction().execute(queryInput).getRecords()).isEmpty(); queryInput.setFilter(new QQueryFilter(new QFilterCriteria("storeId", QCriteriaOperator.IN, List.of(1, 2)))); - queryInput.setSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 3))); + QContext.setQSession(new QSession().withSecurityKeyValues(TestUtils.TABLE_NAME_STORE, List.of(1, 3))); assertThat(new QueryAction().execute(queryInput).getRecords()) .hasSize(3) .allMatch(r -> r.getValueInteger("storeId").equals(1)); diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSTransactionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSTransactionTest.java index 7357cb4c..f71db380 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSTransactionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSTransactionTest.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.sql.Connection; +import com.kingsrook.qqq.backend.module.rdbms.BaseTest; import com.kingsrook.qqq.backend.module.rdbms.TestUtils; import com.kingsrook.qqq.backend.module.rdbms.jdbc.ConnectionManager; import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; @@ -34,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; /******************************************************************************* ** Unit test for RDBMSTransaction *******************************************************************************/ -class RDBMSTransactionTest +class RDBMSTransactionTest extends BaseTest { private final String testToken = getClass().getName(); diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java index e1bedd6f..f1733c7a 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java @@ -369,7 +369,6 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest private UpdateInput initUpdateRequest() { UpdateInput updateInput = new UpdateInput(); - updateInput.setInstance(TestUtils.defineInstance()); updateInput.setTableName(TestUtils.defineTablePerson().getName()); return updateInput; } diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/ConnectionManagerTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/ConnectionManagerTest.java index 64aa4da9..13850df1 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/ConnectionManagerTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/ConnectionManagerTest.java @@ -26,6 +26,7 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.Collections; import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter; +import com.kingsrook.qqq.backend.module.rdbms.BaseTest; import com.kingsrook.qqq.backend.module.rdbms.model.metadata.RDBMSBackendMetaData; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -36,7 +37,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; ** Unit test for ConnectionManager *******************************************************************************/ @Disabled("This was okay for POC, but shouldn't run in CI") -class ConnectionManagerTest +class ConnectionManagerTest extends BaseTest { @Test public void test() throws SQLException @@ -102,13 +103,13 @@ class ConnectionManagerTest private RDBMSBackendMetaData getAuroraBacked() { - QMetaDataVariableInterpreter interpreter = new QMetaDataVariableInterpreter(); - String vendor = interpreter.interpret("${env.RDBMS_VENDOR}"); - String hostname = interpreter.interpret("${env.RDBMS_HOSTNAME}"); - Integer port = Integer.valueOf(interpreter.interpret("${env.RDBMS_PORT}")); - String databaseName = interpreter.interpret("${env.RDBMS_DATABASE_NAME}"); - String username = interpreter.interpret("${env.RDBMS_USERNAME}"); - String password= interpreter.interpret("${env.RDBMS_PASSWORD}"); + QMetaDataVariableInterpreter interpreter = new QMetaDataVariableInterpreter(); + String vendor = interpreter.interpret("${env.RDBMS_VENDOR}"); + String hostname = interpreter.interpret("${env.RDBMS_HOSTNAME}"); + Integer port = Integer.valueOf(interpreter.interpret("${env.RDBMS_PORT}")); + String databaseName = interpreter.interpret("${env.RDBMS_DATABASE_NAME}"); + String username = interpreter.interpret("${env.RDBMS_USERNAME}"); + String password = interpreter.interpret("${env.RDBMS_PASSWORD}"); return new RDBMSBackendMetaData() .withName("aurora-test") diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/QueryManagerTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/QueryManagerTest.java index 5930ef84..2b46289b 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/QueryManagerTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/QueryManagerTest.java @@ -38,6 +38,7 @@ import java.time.OffsetDateTime; import java.util.GregorianCalendar; import java.util.List; import java.util.Map; +import com.kingsrook.qqq.backend.module.rdbms.BaseTest; import com.kingsrook.qqq.backend.module.rdbms.TestUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -52,7 +53,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; /******************************************************************************* ** *******************************************************************************/ -class QueryManagerTest +class QueryManagerTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/model/metadata/RDBMSBackendMetaDataTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/model/metadata/RDBMSBackendMetaDataTest.java index 83d2d3db..89caef0d 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/model/metadata/RDBMSBackendMetaDataTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/model/metadata/RDBMSBackendMetaDataTest.java @@ -26,6 +26,7 @@ import java.io.IOException; import com.kingsrook.qqq.backend.core.adapters.QInstanceAdapter; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.utils.JsonUtils; +import com.kingsrook.qqq.backend.module.rdbms.BaseTest; import com.kingsrook.qqq.backend.module.rdbms.TestUtils; import org.junit.jupiter.api.Test; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; @@ -35,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for RDBMSBackendMetaData *******************************************************************************/ -class RDBMSBackendMetaDataTest +class RDBMSBackendMetaDataTest extends BaseTest { /******************************************************************************* diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/reporting/GenerateReportActionRDBMSTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/reporting/GenerateReportActionRDBMSTest.java index b70553c6..f24d955f 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/reporting/GenerateReportActionRDBMSTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/reporting/GenerateReportActionRDBMSTest.java @@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.module.rdbms.reporting; import java.io.ByteArrayOutputStream; import com.kingsrook.qqq.backend.core.actions.reporting.GenerateReportAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportFormat; import com.kingsrook.qqq.backend.core.model.actions.reporting.ReportInput; @@ -94,6 +95,7 @@ public class GenerateReportActionRDBMSTest extends RDBMSActionTest .withColumn(new QReportField("shipToPersonName").withShowPossibleValueLabel(true).withSourceFieldName("billToPersonId")) ); qInstance.addReport(report); + reInitInstanceInContext(qInstance); String csv = runReport(qInstance); // System.out.println(csv); @@ -135,6 +137,7 @@ public class GenerateReportActionRDBMSTest extends RDBMSActionTest .withColumn(new QReportField("order.storeName").withShowPossibleValueLabel(true).withSourceFieldName("order.storeId").withLabel("Order Store Name")) ); qInstance.addReport(report); + reInitInstanceInContext(qInstance); String csv = runReport(qInstance); // System.out.println(csv); @@ -168,6 +171,7 @@ public class GenerateReportActionRDBMSTest extends RDBMSActionTest .withColumn(new QReportField("i.storeName").withShowPossibleValueLabel(true).withSourceFieldName("i.storeId").withLabel("Item Store Name")) ); qInstance.addReport(report); + reInitInstanceInContext(qInstance); String csv = runReport(qInstance); System.out.println(csv); @@ -195,8 +199,8 @@ public class GenerateReportActionRDBMSTest extends RDBMSActionTest *******************************************************************************/ private String runReport(QInstance qInstance) throws QException { - ReportInput reportInput = new ReportInput(qInstance); - reportInput.setSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); + ReportInput reportInput = new ReportInput(); + QContext.setQSession(new QSession().withSecurityKeyValue(TestUtils.SECURITY_KEY_STORE_ALL_ACCESS, true)); reportInput.setReportName(TEST_REPORT); reportInput.setReportFormat(ReportFormat.CSV); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); diff --git a/qqq-language-support-javascript/src/test/java/com/kingsrook/qqq/languages/javascript/BaseTest.java b/qqq-language-support-javascript/src/test/java/com/kingsrook/qqq/languages/javascript/BaseTest.java new file mode 100644 index 00000000..a3fb4765 --- /dev/null +++ b/qqq-language-support-javascript/src/test/java/com/kingsrook/qqq/languages/javascript/BaseTest.java @@ -0,0 +1,60 @@ +/* + * Copyright © 2022-2023. Nutrifresh Services . All Rights Reserved. + */ + +package com.kingsrook.qqq.languages.javascript; + + +import com.kingsrook.qqq.backend.core.context.QContext; +import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.session.QSession; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; + + +/******************************************************************************* + ** + *******************************************************************************/ +public class BaseTest +{ + private static final Logger LOG = LogManager.getLogger(BaseTest.class); + + + + /******************************************************************************* + ** + *******************************************************************************/ + @BeforeEach + void baseBeforeEach() + { + QContext.init(TestUtils.defineInstance(), new QSession()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @AfterEach + void baseAfterEach() + { + QContext.clear(); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + protected static void reInitInstanceInContext(QInstance qInstance) + { + if(qInstance.equals(QContext.getQInstance())) + { + LOG.warn("Unexpected condition - the same qInstance that is already in the QContext was passed into reInit. You probably want a new QInstance object instance."); + } + QContext.init(qInstance, new QSession()); + } + +} diff --git a/qqq-language-support-javascript/src/test/java/com/kingsrook/qqq/languages/javascript/ExecuteCodeActionTest.java b/qqq-language-support-javascript/src/test/java/com/kingsrook/qqq/languages/javascript/ExecuteCodeActionTest.java index 7d4cd145..48b4ed2a 100644 --- a/qqq-language-support-javascript/src/test/java/com/kingsrook/qqq/languages/javascript/ExecuteCodeActionTest.java +++ b/qqq-language-support-javascript/src/test/java/com/kingsrook/qqq/languages/javascript/ExecuteCodeActionTest.java @@ -32,7 +32,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeType; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeUsage; -import com.kingsrook.qqq.backend.core.model.session.QSession; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; @@ -44,7 +43,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /******************************************************************************* ** Unit test for ExecuteCodeAction *******************************************************************************/ -class ExecuteCodeActionTest +class ExecuteCodeActionTest extends BaseTest { /******************************************************************************* @@ -53,7 +52,7 @@ class ExecuteCodeActionTest @Test void testHelloWorld() throws QException { - ExecuteCodeInput input = new ExecuteCodeInput(TestUtils.defineInstance()) + ExecuteCodeInput input = new ExecuteCodeInput() .withCodeReference(new QCodeReference("helloWorld.js", QCodeType.JAVA_SCRIPT, QCodeUsage.CUSTOMIZER) .withInlineCode(""" return "Hello, " + input""")) @@ -256,8 +255,7 @@ class ExecuteCodeActionTest TestOutput testOutput = new TestOutput(); - ExecuteCodeInput input = new ExecuteCodeInput(instance); - input.setSession(new QSession()); + ExecuteCodeInput input = new ExecuteCodeInput(); input.setCodeReference(new QCodeReference("test.js", QCodeType.JAVA_SCRIPT, QCodeUsage.CUSTOMIZER).withInlineCode(code)); input.withContext("input", testInput); input.withContext("output", testOutput); diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java index 0d913249..f99ae224 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java @@ -53,6 +53,7 @@ import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction; import com.kingsrook.qqq.backend.core.actions.values.SearchPossibleValueSourceAction; import com.kingsrook.qqq.backend.core.adapters.QInstanceAdapter; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException; import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException; import com.kingsrook.qqq.backend.core.exceptions.QModuleDispatchException; @@ -190,6 +191,17 @@ public class QJavalinImplementation service.routes(getRoutes()); service.before(QJavalinImplementation::hotSwapQInstance); service.before((Context context) -> context.header("Content-Type", "application/json")); + service.after(QJavalinImplementation::clearQContext); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public static void clearQContext(Context context) + { + QContext.clear(); } @@ -336,7 +348,7 @@ public class QJavalinImplementation public static void setupSession(Context context, AbstractActionInput input) throws QModuleDispatchException, QAuthenticationException { QAuthenticationModuleDispatcher qAuthenticationModuleDispatcher = new QAuthenticationModuleDispatcher(); - QAuthenticationModuleInterface authenticationModule = qAuthenticationModuleDispatcher.getQModule(input.getAuthenticationMetaData()); + QAuthenticationModuleInterface authenticationModule = qAuthenticationModuleDispatcher.getQModule(qInstance.getAuthentication()); try { @@ -374,8 +386,9 @@ public class QJavalinImplementation } } + QContext.init(qInstance, null); // hmm... QSession session = authenticationModule.createSession(qInstance, authenticationContext); - input.setSession(session); + QContext.init(qInstance, session, null, input); ///////////////////////////////////////////////////////////////////////////////// // if we got a session id cookie in, then send it back with updated cookie age // @@ -463,7 +476,7 @@ public class QJavalinImplementation List primaryKeys = new ArrayList<>(); primaryKeys.add(context.pathParam("primaryKey")); - DeleteInput deleteInput = new DeleteInput(qInstance); + DeleteInput deleteInput = new DeleteInput(); setupSession(context, deleteInput); deleteInput.setTableName(table); deleteInput.setPrimaryKeys(primaryKeys); @@ -492,7 +505,7 @@ public class QJavalinImplementation { String table = context.pathParam("table"); - UpdateInput updateInput = new UpdateInput(qInstance); + UpdateInput updateInput = new UpdateInput(); setupSession(context, updateInput); updateInput.setTableName(table); @@ -550,7 +563,7 @@ public class QJavalinImplementation try { String table = context.pathParam("table"); - InsertInput insertInput = new InsertInput(qInstance); + InsertInput insertInput = new InsertInput(); setupSession(context, insertInput); insertInput.setTableName(table); @@ -599,7 +612,7 @@ public class QJavalinImplementation String tableName = context.pathParam("table"); QTableMetaData table = qInstance.getTable(tableName); String primaryKey = context.pathParam("primaryKey"); - GetInput getInput = new GetInput(qInstance); + GetInput getInput = new GetInput(); setupSession(context, getInput); getInput.setTableName(tableName); @@ -651,7 +664,7 @@ public class QJavalinImplementation { try { - CountInput countInput = new CountInput(qInstance); + CountInput countInput = new CountInput(); setupSession(context, countInput); countInput.setTableName(context.pathParam("table")); @@ -698,7 +711,7 @@ public class QJavalinImplementation { try { - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); setupSession(context, queryInput); queryInput.setTableName(context.pathParam("table")); queryInput.setShouldGenerateDisplayValues(true); @@ -738,7 +751,7 @@ public class QJavalinImplementation { try { - MetaDataInput metaDataInput = new MetaDataInput(qInstance); + MetaDataInput metaDataInput = new MetaDataInput(); setupSession(context, metaDataInput); MetaDataAction metaDataAction = new MetaDataAction(); MetaDataOutput metaDataOutput = metaDataAction.execute(metaDataInput); @@ -760,7 +773,7 @@ public class QJavalinImplementation { try { - TableMetaDataInput tableMetaDataInput = new TableMetaDataInput(qInstance); + TableMetaDataInput tableMetaDataInput = new TableMetaDataInput(); setupSession(context, tableMetaDataInput); String tableName = context.pathParam("table"); @@ -798,7 +811,7 @@ public class QJavalinImplementation { try { - ProcessMetaDataInput processMetaDataInput = new ProcessMetaDataInput(qInstance); + ProcessMetaDataInput processMetaDataInput = new ProcessMetaDataInput(); setupSession(context, processMetaDataInput); String processName = context.pathParam("processName"); @@ -830,11 +843,10 @@ public class QJavalinImplementation { try { - InsertInput insertInput = new InsertInput(qInstance); + InsertInput insertInput = new InsertInput(); setupSession(context, insertInput); - RenderWidgetInput input = new RenderWidgetInput(qInstance) - .withSession(insertInput.getSession()) + RenderWidgetInput input = new RenderWidgetInput() .withWidgetMetaData(qInstance.getWidget(context.pathParam("name"))); // todo permission? @@ -910,7 +922,7 @@ public class QJavalinImplementation ///////////////////////////////////////////// // set up the report action's input object // ///////////////////////////////////////////// - ExportInput exportInput = new ExportInput(qInstance); + ExportInput exportInput = new ExportInput(); setupSession(context, exportInput); exportInput.setTableName(tableName); exportInput.setReportFormat(reportFormat); @@ -1137,7 +1149,7 @@ public class QJavalinImplementation throw (new QNotFoundException("Field " + fieldName + " in table " + tableName + " is not associated with a possible value source.")); } - SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(qInstance); + SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(); setupSession(context, input); input.setPossibleValueSourceName(field.getPossibleValueSourceName()); input.setSearchTerm(searchTerm); diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinProcessHandler.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinProcessHandler.java index 3af29a35..42e83099 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinProcessHandler.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinProcessHandler.java @@ -186,7 +186,7 @@ public class QJavalinProcessHandler ///////////////////////////////////////////// // set up the report action's input object // ///////////////////////////////////////////// - ReportInput reportInput = new ReportInput(QJavalinImplementation.qInstance); + ReportInput reportInput = new ReportInput(); QJavalinImplementation.setupSession(context, reportInput); PermissionsHelper.checkReportPermissionThrowing(reportInput, reportName); @@ -296,7 +296,7 @@ public class QJavalinProcessHandler LOG.info(startAfterStep == null ? "Initiating process [" + processName + "] [" + processUUID + "]" : "Resuming process [" + processName + "] [" + processUUID + "] after step [" + startAfterStep + "]"); - RunProcessInput runProcessInput = new RunProcessInput(QJavalinImplementation.qInstance); + RunProcessInput runProcessInput = new RunProcessInput(); QJavalinImplementation.setupSession(context, runProcessInput); runProcessInput.setProcessName(processName); @@ -484,8 +484,7 @@ public class QJavalinProcessHandler + File.separator + runProcessInput.getProcessName() + File.separator + qUploadedFile.getFilename(); - InsertInput insertInput = new InsertInput(QJavalinImplementation.qInstance); - insertInput.setSession(runProcessInput.getSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(QJavalinImplementation.javalinMetaData.getUploadedFileArchiveTableName()); insertInput.setRecords(List.of(new QRecord() .withValue("fileName", fileName) @@ -569,7 +568,7 @@ public class QJavalinProcessHandler try { - AbstractActionInput input = new AbstractActionInput(QJavalinImplementation.qInstance); + AbstractActionInput input = new AbstractActionInput(); QJavalinImplementation.setupSession(context, input); // todo... get process values? PermissionsHelper.checkProcessPermissionThrowing(input, context.pathParam("processName")); @@ -638,7 +637,7 @@ public class QJavalinProcessHandler { try { - AbstractActionInput input = new AbstractActionInput(QJavalinImplementation.qInstance); + AbstractActionInput input = new AbstractActionInput(); QJavalinImplementation.setupSession(context, input); // todo - need process values? PermissionsHelper.checkProcessPermissionThrowing(input, context.pathParam("processName")); diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinScriptsHandler.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinScriptsHandler.java index e920b657..b4a7c616 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinScriptsHandler.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinScriptsHandler.java @@ -97,7 +97,7 @@ public class QJavalinScriptsHandler String tableName = context.pathParam("table"); QTableMetaData table = QJavalinImplementation.qInstance.getTable(tableName); String primaryKey = context.pathParam("primaryKey"); - GetInput getInput = new GetInput(QJavalinImplementation.qInstance); + GetInput getInput = new GetInput(); QJavalinImplementation.setupSession(context, getInput); getInput.setTableName(tableName); @@ -150,7 +150,7 @@ public class QJavalinScriptsHandler Serializable scriptId = record.getValue(fieldName); if(scriptId != null) { - GetInput getScriptInput = new GetInput(QJavalinImplementation.qInstance); + GetInput getScriptInput = new GetInput(); QJavalinImplementation.setupSession(context, getScriptInput); getScriptInput.setTableName("script"); getScriptInput.setPrimaryKey(scriptId); @@ -159,7 +159,7 @@ public class QJavalinScriptsHandler { thisScriptData.put("script", getScriptOutput.getRecord()); - QueryInput queryInput = new QueryInput(QJavalinImplementation.qInstance); + QueryInput queryInput = new QueryInput(); QJavalinImplementation.setupSession(context, queryInput); queryInput.setTableName("scriptRevision"); queryInput.setFilter(new QQueryFilter() @@ -227,7 +227,7 @@ public class QJavalinScriptsHandler String scriptRevisionId = context.pathParam("scriptRevisionId"); - QueryInput queryInput = new QueryInput(QJavalinImplementation.qInstance); + QueryInput queryInput = new QueryInput(); QJavalinImplementation.setupSession(context, queryInput); queryInput.setTableName("scriptLog"); queryInput.setFilter(new QQueryFilter() @@ -265,7 +265,7 @@ public class QJavalinScriptsHandler ///////////////////////////////////////////////////////////////////////////////// String tableName = context.pathParam("table"); QTableMetaData table = QJavalinImplementation.qInstance.getTable(tableName); - GetInput getInput = new GetInput(QJavalinImplementation.qInstance); + GetInput getInput = new GetInput(); getInput.setTableName(tableName); QJavalinImplementation.setupSession(context, getInput); PermissionsHelper.checkTablePermissionThrowing(getInput, TablePermissionSubType.READ); @@ -298,7 +298,7 @@ public class QJavalinScriptsHandler try { - StoreAssociatedScriptInput input = new StoreAssociatedScriptInput(QJavalinImplementation.qInstance); + StoreAssociatedScriptInput input = new StoreAssociatedScriptInput(); QJavalinImplementation.setupSession(context, input); input.setCode(context.formParam("contents")); @@ -335,7 +335,7 @@ public class QJavalinScriptsHandler { getReferencedRecordToEnsureAccess(context); - TestScriptInput input = new TestScriptInput(QJavalinImplementation.qInstance); + TestScriptInput input = new TestScriptInput(); QJavalinImplementation.setupSession(context, input); // todo delete? input.setRecordPrimaryKey(context.pathParam("primaryKey")); diff --git a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementationAuthenticationTest.java b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementationAuthenticationTest.java index bbfee5dc..8f93da37 100644 --- a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementationAuthenticationTest.java +++ b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementationAuthenticationTest.java @@ -26,10 +26,12 @@ import java.time.ZonedDateTime; import java.util.Base64; import java.util.List; import java.util.concurrent.TimeUnit; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.authentication.TableBasedAuthenticationMetaData; +import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.modules.authentication.implementations.TableBasedAuthenticationModule; import com.kingsrook.qqq.backend.core.utils.JsonUtils; import com.kingsrook.qqq.backend.core.utils.SleepUtils; @@ -192,6 +194,7 @@ public class QJavalinImplementationAuthenticationTest extends QJavalinTestBase TableBasedAuthenticationMetaData tableBasedAuthenticationMetaData = new TableBasedAuthenticationMetaData(); qInstance.addTable(tableBasedAuthenticationMetaData.defineStandardUserTable(TestUtils.BACKEND_NAME_MEMORY)); qInstance.addTable(tableBasedAuthenticationMetaData.defineStandardSessionTable(TestUtils.BACKEND_NAME_MEMORY)); + QContext.init(qInstance, new QSession()); try { @@ -202,7 +205,7 @@ public class QJavalinImplementationAuthenticationTest extends QJavalinTestBase } catch(Exception e) { - fail("Error inserting test user."); + fail("Error inserting test user.", e); } qInstance.setAuthentication(tableBasedAuthenticationMetaData); diff --git a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinScriptsHandlerTest.java b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinScriptsHandlerTest.java index 5f11b2e3..301a2e6e 100644 --- a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinScriptsHandlerTest.java +++ b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinScriptsHandlerTest.java @@ -26,6 +26,7 @@ import java.util.List; import com.kingsrook.qqq.backend.core.actions.tables.InsertAction; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator; @@ -40,6 +41,8 @@ import com.kingsrook.qqq.backend.core.utils.JsonUtils; import kong.unirest.HttpResponse; import kong.unirest.Unirest; import org.json.JSONObject; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -50,6 +53,25 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; *******************************************************************************/ class QJavalinScriptsHandlerTest extends QJavalinTestBase { + @BeforeEach + public void beforeEach() throws Exception + { + QContext.init(TestUtils.defineInstance(), new QSession()); + super.beforeEach(); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @AfterEach + void afterEach() + { + QContext.clear(); + } + + /******************************************************************************* ** @@ -57,14 +79,12 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase @Test void testGetRecordDeveloperMode() throws QException { - UpdateInput updateInput = new UpdateInput(TestUtils.defineInstance()); - updateInput.setSession(new QSession()); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName("person"); updateInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("testScriptId", 47))); new UpdateAction().execute(updateInput); - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("script"); insertInput.setRecords(List.of(new QRecord().withValue("id", 47).withValue("currentScriptRevisionId", 100))); new InsertAction().execute(insertInput); @@ -99,8 +119,7 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase @Test void testStoreRecordAssociatedScript() throws QException { - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("scriptType"); insertInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("name", "Test"))); new InsertAction().execute(insertInput); @@ -110,8 +129,7 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase .field("commitMessage", "Javalin Commit") .asString(); - QueryInput queryInput = new QueryInput(TestUtils.defineInstance()); - queryInput.setSession(new QSession()); + QueryInput queryInput = new QueryInput(); queryInput.setTableName("scriptRevision"); queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria("contents", QCriteriaOperator.EQUALS, List.of("var j = 0;"))) @@ -129,8 +147,7 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase @Test void testTestAssociatedScript() throws QException { - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("scriptType"); insertInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("name", "Test"))); new InsertAction().execute(insertInput); @@ -158,8 +175,7 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase @Test void testGetAssociatedScriptLogs() throws QException { - InsertInput insertInput = new InsertInput(TestUtils.defineInstance()); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName("scriptLog"); insertInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("output", "testOutput").withValue("scriptRevisionId", 100))); new InsertAction().execute(insertInput); diff --git a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/TestUtils.java b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/TestUtils.java index 8a2eeb89..98f7f684 100644 --- a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/TestUtils.java +++ b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/TestUtils.java @@ -517,8 +517,7 @@ public class TestUtils *******************************************************************************/ public static void insertRecords(QInstance qInstance, QTableMetaData table, List records) throws QException { - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(new QSession()); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(table.getName()); insertInput.setRecords(records); new InsertAction().execute(insertInput); diff --git a/qqq-middleware-lambda/src/main/java/com/kingsrook/qqq/lambda/QStandardLambdaHandler.java b/qqq-middleware-lambda/src/main/java/com/kingsrook/qqq/lambda/QStandardLambdaHandler.java index 5b29d6a4..e53b913a 100644 --- a/qqq-middleware-lambda/src/main/java/com/kingsrook/qqq/lambda/QStandardLambdaHandler.java +++ b/qqq-middleware-lambda/src/main/java/com/kingsrook/qqq/lambda/QStandardLambdaHandler.java @@ -36,7 +36,6 @@ 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.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; -import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.utils.ExceptionUtils; import com.kingsrook.qqq.lambda.model.QLambdaRequest; import com.kingsrook.qqq.lambda.model.QLambdaResponse; @@ -72,7 +71,6 @@ public class QStandardLambdaHandler extends QAbstractLambdaHandler *******************************************************************************/ protected void setupSession(QLambdaRequest request, AbstractActionInput actionInput) { - actionInput.setSession(new QSession()); } @@ -187,7 +185,7 @@ public class QStandardLambdaHandler extends QAbstractLambdaHandler log(startAfterStep == null ? "Initiating process [" + processName + "] [" + processUUID + "]" : "Resuming process [" + processName + "] [" + processUUID + "] after step [" + startAfterStep + "]"); - RunProcessInput runProcessInput = new RunProcessInput(qInstance); + RunProcessInput runProcessInput = new RunProcessInput(); setupSession(request, runProcessInput); runProcessInput.setProcessName(processName); runProcessInput.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.BREAK); diff --git a/qqq-middleware-picocli/src/main/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementation.java b/qqq-middleware-picocli/src/main/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementation.java index deebfbad..b636d735 100644 --- a/qqq-middleware-picocli/src/main/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementation.java +++ b/qqq-middleware-picocli/src/main/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementation.java @@ -451,9 +451,8 @@ public class QPicoCliImplementation { String processName = processParseResult.commandSpec().name(); QProcessMetaData process = qInstance.getProcess(processName); - RunProcessInput request = new RunProcessInput(qInstance); + RunProcessInput request = new RunProcessInput(); - request.setSession(session); request.setProcessName(processName); request.setCallback(new PicoCliProcessCallback(subCommandLine)); @@ -498,8 +497,7 @@ public class QPicoCliImplementation *******************************************************************************/ private int runTableMetaData(CommandLine commandLine, String tableName, ParseResult subParseResult) throws QException { - TableMetaDataInput tableMetaDataInput = new TableMetaDataInput(qInstance); - tableMetaDataInput.setSession(session); + TableMetaDataInput tableMetaDataInput = new TableMetaDataInput(); tableMetaDataInput.setTableName(tableName); TableMetaDataAction tableMetaDataAction = new TableMetaDataAction(); TableMetaDataOutput tableMetaDataOutput = tableMetaDataAction.execute(tableMetaDataInput); @@ -514,8 +512,7 @@ public class QPicoCliImplementation *******************************************************************************/ private int runTableCount(CommandLine commandLine, String tableName, ParseResult subParseResult) throws QException { - CountInput countInput = new CountInput(qInstance); - countInput.setSession(session); + CountInput countInput = new CountInput(); countInput.setTableName(tableName); countInput.setFilter(generateQueryFilter(subParseResult)); @@ -532,8 +529,7 @@ public class QPicoCliImplementation *******************************************************************************/ private int runTableGet(CommandLine commandLine, String tableName, ParseResult subParseResult, CommandLine subCommandLine) throws QException { - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); queryInput.setSkip(subParseResult.matchedOptionValue("skip", null)); @@ -579,8 +575,7 @@ public class QPicoCliImplementation *******************************************************************************/ private int runTableQuery(CommandLine commandLine, String tableName, ParseResult subParseResult) throws QException { - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); queryInput.setSkip(subParseResult.matchedOptionValue("skip", null)); queryInput.setLimit(subParseResult.matchedOptionValue("limit", null)); @@ -633,8 +628,7 @@ public class QPicoCliImplementation ///////////////////////////////////////////// // set up the report action's input object // ///////////////////////////////////////////// - ExportInput exportInput = new ExportInput(qInstance); - exportInput.setSession(session); + ExportInput exportInput = new ExportInput(); exportInput.setTableName(tableName); exportInput.setReportFormat(reportFormat); exportInput.setFilename(filename); @@ -698,8 +692,7 @@ public class QPicoCliImplementation *******************************************************************************/ private int runTableInsert(CommandLine commandLine, String tableName, ParseResult subParseResult) throws QException { - InsertInput insertInput = new InsertInput(qInstance); - insertInput.setSession(session); + InsertInput insertInput = new InsertInput(); insertInput.setTableName(tableName); QTableMetaData table = qInstance.getTable(tableName); @@ -794,8 +787,7 @@ public class QPicoCliImplementation *******************************************************************************/ private int runTableUpdate(CommandLine commandLine, String tableName, ParseResult subParseResult) throws QException { - UpdateInput updateInput = new UpdateInput(qInstance); - updateInput.setSession(session); + UpdateInput updateInput = new UpdateInput(); updateInput.setTableName(tableName); QTableMetaData table = qInstance.getTable(tableName); @@ -888,8 +880,7 @@ public class QPicoCliImplementation *******************************************************************************/ private int runTableDelete(CommandLine commandLine, String tableName, ParseResult subParseResult) throws QException { - DeleteInput deleteInput = new DeleteInput(qInstance); - deleteInput.setSession(session); + DeleteInput deleteInput = new DeleteInput(); deleteInput.setTableName(tableName); ///////////////////////////////////////////// @@ -929,8 +920,7 @@ public class QPicoCliImplementation { if(parseResult.hasMatchedOption("--meta-data")) { - MetaDataInput metaDataInput = new MetaDataInput(qInstance); - metaDataInput.setSession(session); + MetaDataInput metaDataInput = new MetaDataInput(); MetaDataAction metaDataAction = new MetaDataAction(); MetaDataOutput metaDataOutput = metaDataAction.execute(metaDataInput); commandLine.getOut().println(JsonUtils.toPrettyJson(metaDataOutput)); @@ -948,8 +938,7 @@ public class QPicoCliImplementation *******************************************************************************/ private List executeQuery(String tableName, ParseResult subParseResult) throws QException { - QueryInput queryInput = new QueryInput(qInstance); - queryInput.setSession(session); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(tableName); queryInput.setFilter(generateQueryFilter(subParseResult)); diff --git a/qqq-middleware-picocli/src/test/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementationTest.java b/qqq-middleware-picocli/src/test/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementationTest.java index 572aab31..c0b7417c 100644 --- a/qqq-middleware-picocli/src/test/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementationTest.java +++ b/qqq-middleware-picocli/src/test/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementationTest.java @@ -33,12 +33,15 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.UUID; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; +import com.kingsrook.qqq.backend.core.model.session.QSession; import com.kingsrook.qqq.backend.core.utils.JsonUtils; import com.kingsrook.qqq.backend.core.utils.StringUtils; import org.apache.commons.io.FileUtils; import org.json.JSONArray; import org.json.JSONObject; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -68,6 +71,18 @@ class QPicoCliImplementationTest public void beforeEach() throws Exception { TestUtils.primeTestDatabase(); + QContext.init(TestUtils.defineInstance(), new QSession()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @AfterEach + void afterEach() + { + QContext.clear(); } @@ -910,7 +925,7 @@ class QPicoCliImplementationTest *******************************************************************************/ private TestOutput testCli(String... args) { - QInstance qInstance = TestUtils.defineInstance(); + QInstance qInstance = QContext.getQInstance(); return testCli(qInstance, args); } diff --git a/qqq-middleware-slack/src/main/java/com/kingsrook/qqq/slack/QSlackImplementation.java b/qqq-middleware-slack/src/main/java/com/kingsrook/qqq/slack/QSlackImplementation.java index f607ec09..0b498d82 100644 --- a/qqq-middleware-slack/src/main/java/com/kingsrook/qqq/slack/QSlackImplementation.java +++ b/qqq-middleware-slack/src/main/java/com/kingsrook/qqq/slack/QSlackImplementation.java @@ -287,7 +287,7 @@ public class QSlackImplementation *******************************************************************************/ private static void buildSlackMetaData(Context context) throws QException { - MetaDataInput metaDataInput = new MetaDataInput(qInstance); + MetaDataInput metaDataInput = new MetaDataInput(); setupSession(context, metaDataInput); MetaDataAction metaDataAction = new MetaDataAction(); MetaDataOutput metaDataOutput = metaDataAction.execute(metaDataInput); @@ -384,7 +384,7 @@ public class QSlackImplementation { try { - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setLimit(10); queryInput.setTableName(tableName); setupSession(context, queryInput); @@ -426,7 +426,7 @@ public class QSlackImplementation { try(ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - ExportInput exportInput = new ExportInput(qInstance); + ExportInput exportInput = new ExportInput(); exportInput.setLimit(1000); exportInput.setTableName(tableName); exportInput.setReportFormat(ReportFormat.valueOf(format)); @@ -471,7 +471,7 @@ public class QSlackImplementation { QTableMetaData tableMetaData = qInstance.getTable(tableName); - GetInput getInput = new GetInput(qInstance); + GetInput getInput = new GetInput(); getInput.setPrimaryKey(id); getInput.setTableName(tableName); setupSession(context, getInput); @@ -520,7 +520,7 @@ public class QSlackImplementation QWidgetMetaDataInterface widgetMetaData = qInstance.getWidget(widgetName); - RenderWidgetInput input = new RenderWidgetInput(qInstance) + RenderWidgetInput input = new RenderWidgetInput() .withWidgetMetaData(widgetMetaData); setupSession(context, input); RenderWidgetOutput output = new RenderWidgetAction().execute(input); @@ -729,7 +729,6 @@ public class QSlackImplementation } QSession session = authenticationModule.createSession(qInstance, authenticationContext); - input.setSession(session); ///////////////////////////////////////////////////////////////////////////////// // if we got a session id cookie in, then send it back with updated cookie age // diff --git a/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/SampleCliTest.java b/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/SampleCliTest.java index be51bead..787899bc 100644 --- a/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/SampleCliTest.java +++ b/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/SampleCliTest.java @@ -22,7 +22,9 @@ package com.kingsrook.sampleapp; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; +import com.kingsrook.qqq.backend.core.model.session.QSession; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -40,17 +42,20 @@ class SampleCliTest @Test void testExitSuccess() throws QException { + QContext.init(SampleMetaDataProvider.defineInstance(), new QSession()); int exitCode = new SampleCli().run(new String[] { "--meta-data" }); assertEquals(0, exitCode); } + /******************************************************************************* ** *******************************************************************************/ @Test void testNotExitSuccess() throws QException { + QContext.init(SampleMetaDataProvider.defineInstance(), new QSession()); int exitCode = new SampleCli().run(new String[] { "asdfasdf" }); assertNotEquals(0, exitCode); } diff --git a/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/SampleMetaDataProviderTest.java b/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/SampleMetaDataProviderTest.java index 07cf4872..0c40f0b0 100644 --- a/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/SampleMetaDataProviderTest.java +++ b/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/SampleMetaDataProviderTest.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.UUID; import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessOutput; @@ -46,6 +47,7 @@ import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -71,6 +73,18 @@ public class SampleMetaDataProviderTest void beforeEach() throws Exception { primeTestDatabase("prime-test-database.sql"); + QContext.init(SampleMetaDataProvider.defineInstance(), new QSession()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @AfterEach + void afterEach() + { + QContext.clear(); } @@ -134,7 +148,6 @@ public class SampleMetaDataProviderTest try { QueryInput queryInput = new QueryInput(); - queryInput.setInstance(SampleMetaDataProvider.defineInstance()); queryInput.setTableName(fileTable.getName()); QueryOutput queryOutput = new FilesystemQueryAction().execute(queryInput); @@ -178,13 +191,11 @@ public class SampleMetaDataProviderTest { QInstance qInstance = SampleMetaDataProvider.defineInstance(); QTableMetaData personTable = SampleMetaDataProvider.defineTablePerson(); - RunProcessInput request = new RunProcessInput(qInstance); - request.setSession(new QSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(SampleMetaDataProvider.PROCESS_NAME_GREET); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(personTable.getName()); - queryInput.setSession(new QSession()); QueryOutput queryOutput = new QueryAction().execute(queryInput); request.setRecords(queryOutput.getRecords()); @@ -205,8 +216,7 @@ public class SampleMetaDataProviderTest public void testThrowProcess() throws Exception { QInstance qInstance = SampleMetaDataProvider.defineInstance(); - RunProcessInput request = new RunProcessInput(qInstance); - request.setSession(new QSession()); + RunProcessInput request = new RunProcessInput(); request.setProcessName(SampleMetaDataProvider.PROCESS_NAME_SIMPLE_THROW); request.addValue(SampleMetaDataProvider.ThrowerStep.FIELD_SLEEP_MILLIS, 10); diff --git a/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/dashboard/widgets/PersonsByCreateDateBarChartTest.java b/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/dashboard/widgets/PersonsByCreateDateBarChartTest.java index f666b81c..7fc9eb70 100644 --- a/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/dashboard/widgets/PersonsByCreateDateBarChartTest.java +++ b/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/dashboard/widgets/PersonsByCreateDateBarChartTest.java @@ -27,7 +27,6 @@ import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetInput; import com.kingsrook.qqq.backend.core.model.actions.widgets.RenderWidgetOutput; import com.kingsrook.qqq.backend.core.model.dashboard.widgets.ChartData; import com.kingsrook.qqq.backend.core.model.dashboard.widgets.WidgetType; -import com.kingsrook.sampleapp.SampleMetaDataProvider; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -46,7 +45,7 @@ class PersonsByCreateDateBarChartTest @Test void test() throws QException { - RenderWidgetOutput output = new PersonsByCreateDateBarChart().render(new RenderWidgetInput(SampleMetaDataProvider.defineInstance())); + RenderWidgetOutput output = new PersonsByCreateDateBarChart().render(new RenderWidgetInput()); assertThat(output.getWidgetData()).isInstanceOf(ChartData.class); ChartData chartData = (ChartData) output.getWidgetData(); assertEquals(WidgetType.CHART.getType(), chartData.getType()); diff --git a/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/processes/clonepeople/ClonePeopleTransformStepTest.java b/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/processes/clonepeople/ClonePeopleTransformStepTest.java index 4702c241..d0f73521 100644 --- a/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/processes/clonepeople/ClonePeopleTransformStepTest.java +++ b/qqq-sample-project/src/test/java/com/kingsrook/sampleapp/processes/clonepeople/ClonePeopleTransformStepTest.java @@ -24,6 +24,7 @@ package com.kingsrook.sampleapp.processes.clonepeople; import java.util.ArrayList; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; +import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLine; import com.kingsrook.qqq.backend.core.model.actions.processes.ProcessSummaryLineInterface; @@ -82,10 +83,10 @@ class ClonePeopleTransformStepTest void testProcessStep() throws QException { QInstance qInstance = SampleMetaDataProvider.defineInstance(); + QContext.init(qInstance, new QSession()); - QueryInput queryInput = new QueryInput(qInstance); + QueryInput queryInput = new QueryInput(); queryInput.setTableName(SampleMetaDataProvider.TABLE_NAME_PERSON); - queryInput.setSession(new QSession()); QueryOutput queryOutput = new QueryAction().execute(queryInput); RunBackendStepInput input = new RunBackendStepInput();