# Module: integrationTests

Contains all of the commands to test various components of the system.

Author:
  - Seth Hollingsead
Copyright:
  - Copyright © 2022-… by Seth Hollingsead. All rights reserved
Source:
  - commandsBlob/commands/integrationTests.js, line 1

### Requires

- module:commandBroker
- module:ruleBroker
- module:workflowBroker
- module:colorizer
- module:configurator
- module:loggers
- module:data
- module:queue
- module:stack
- @haystacks/constants
- path

### Methods

#### (inner) runAllValidations(inputData, inputMetaData) → {array.<boolean, (string|integer|boolean|object|array)>}

Runs all validations together, constants validation, command alias validation and workflow validation.

##### Parameters:

Name | Type | Description
--- | --- | ---
`inputData` | string | An array that could possibly include the name of this command, and a list of top-level data structures that all validations should be run against. Rather than always running the full set of validations against everything, as that could take longer, and only needs to be done exhaustively when releasing a new instance of the entire Haystacks platform. inputData[1] = runAllValidations inputData[2] = Could be a coma-separated string list of data types to run all validation with. inputData[n] = Could be additional list of workflow data types list to validate if the user entered a space-separated list. Options are: Framework,Platform,Application,App,Plugins,Plugin
`inputMetaData` | string | Not used for this command.

Author:
  - Seth Hollingsead
Source:
  - commandsBlob/commands/integrationTests.js, line 670

##### Returns:

An array with a boolean True or False value to indicate if the application should exit or not exit, followed by the command output.

Type
  array.<boolean, (string|integer|boolean|object|array)>

#### (inner) validateCommandAliases(inputData, inputMetaData) → {array.<boolean, (string|integer|boolean|object|array)>}

Validates all command aliases have no duplicates within a command, but also between commands.

##### Parameters:

Name | Type | Description
--- | --- | ---
`inputData` | array.<string> | An array that could possibly include the name of this command, and a list of top-level command aliases data structures to be validated. That way we can parameterize and optimize the validation of the command aliases specific to the testing needs. Rather than always running the full set of command aliases, as that could take a very long time, and only needs to be done exhaustively when releasing a new instance of the entire Haystacks platform. inputData[1] = validateCommandAliases inputData[2] = Could be a coma-separated string list of command alias data types to validate. inputData[n] = Could be additional list of command alias list data to validate if the user entered a space-separated list. Options are: Framework,Platform,Application,App,Plugins,Plugin
`inputMetaData` | string | Not used for this command.

Author:
  - Seth Hollingsead
Source:
  - commandsBlob/commands/integrationTests.js, line 287

##### Returns:

An array with a boolean True or False value to indicate if the application should exit or not exit, followed by the command output.

Type
  array.<boolean, (string|integer|boolean|object|array)>

#### (inner) validateConstants(inputData, inputMetaData) → {array.<boolean, (string|integer|boolean|object|array)>}

Validates all constants with a 2-phase verification process.

##### Parameters:

Name | Type | Description
--- | --- | ---
`inputData` | array.<string> | An array that could possibly include the name of this command, and a list of top-level constants validation data structures to be validated. That way we can parameterize and optimize the validation of the constants specific to the testing needs. Rather than always running the full set of constants validation, as that could take a very long time, and only needs to be done exhaustively when releasing a new instance of the entire Haystacks platform. inputData[1] = validateConstants - This command name inputData[2] = Could be a coma-separated string list of constants validation data to validate. inputData[n] = Could be additional list of constants validation data to validate if the user entered a space-separated list. Options are: Framework,Platform,Application,App,Plugins,Plugin
`inputMetaData` | string | Not used for this command.

Author:
  - Seth Hollingsead
Source:
  - commandsBlob/commands/integrationTests.js, line 40

##### Returns:

An array with a boolean True or False value to indicate if the application should exit or not exit, followed by the command output.

Type
  array.<boolean, (string|integer|boolean|object|array)>

#### (inner) validateWorkflows(inputData, inputMetaData) → {array.<boolean, (string|integer|boolean|object|array)>}

Validates all the workflows have no duplicates.

##### Parameters:

Name | Type | Description
--- | --- | ---
`inputData` | array.<string> | An array that could possibly include the name of this command, and a ist of top-level workflows data structures to be validated. That way we can parameterize and optimize the validation of the workflows specific to the testing needs. Rather than always running the full set of workflows, as that could take longer, and only needs to be done exhaustively when releasing a new instance of the entire Haystacks platform. inputData[1] = validateWorkflows inputData[2] = Could be a coma-separated string list of workflow data types to validate. inputData[n] = Could be additional list of workflow data types list to validate if the user entered a space-separated list. Options are: Framework,Platform,Application,App,Plugins,Plugin
`inputMetaData` | string | Not used for this command.

Author:
  - Seth Hollingsead
Source:
  - commandsBlob/commands/integrationTests.js, line 495

##### Returns:

An array with a boolean True or False value to indicate if the application should exit or not exit, followed by the command output.

Type
  array.<boolean, (string|integer|boolean|object|array)>