Merge branch 'develop' of https://bitbucket.org/colosa/processmaker into feature/PMCORE-1444
This commit is contained in:
14
app/Jobs/ActionByEmail.php
Normal file
14
app/Jobs/ActionByEmail.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
class ActionByEmail extends QueuedClosure
|
||||
{
|
||||
/**
|
||||
* The number of times the job may be attempted.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 1;
|
||||
|
||||
}
|
||||
14
app/Jobs/GenerateReportTable.php
Normal file
14
app/Jobs/GenerateReportTable.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
class GenerateReportTable extends QueuedClosure
|
||||
{
|
||||
/**
|
||||
* The number of times the job may be attempted.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 1;
|
||||
|
||||
}
|
||||
@@ -18,4 +18,14 @@ abstract class QueuedClosure extends CallQueuedClosure
|
||||
{
|
||||
parent::__construct(new SerializableClosure($closure));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the display name for the queued job.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function displayName(): string
|
||||
{
|
||||
return get_class($this) . ' ' . parent::displayName();
|
||||
}
|
||||
}
|
||||
|
||||
14
app/Jobs/RouteCase.php
Normal file
14
app/Jobs/RouteCase.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
class RouteCase extends QueuedClosure
|
||||
{
|
||||
/**
|
||||
* The number of times the job may be attempted.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 1;
|
||||
|
||||
}
|
||||
@@ -3,10 +3,14 @@
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\AbeConfiguration::class, function (Faker $faker) {
|
||||
$process = \ProcessMaker\Model\Process::all()->random();
|
||||
$task = \ProcessMaker\Model\Task::all()->random();
|
||||
$dynaForm = \ProcessMaker\Model\Dynaform::all()->random();
|
||||
$emailServer = \ProcessMaker\Model\EmailServerModel::all()->random();
|
||||
$process = factory(\ProcessMaker\Model\Process::class)->create();
|
||||
$dynaform = factory(\ProcessMaker\Model\Dynaform::class)->create([
|
||||
'PRO_UID' => $process->PRO_UID
|
||||
]);
|
||||
$task = factory(\ProcessMaker\Model\Task::class)->create([
|
||||
'PRO_UID' => $process->PRO_UID
|
||||
]);
|
||||
$emailServer = factory(\ProcessMaker\Model\EmailServerModel::class)->create();
|
||||
return [
|
||||
'ABE_UID' => G::generateUniqueID(),
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
@@ -14,7 +18,7 @@ $factory->define(\ProcessMaker\Model\AbeConfiguration::class, function (Faker $f
|
||||
'ABE_TYPE' => $faker->randomElement(['', 'LINK']),
|
||||
'ABE_TEMPLATE' => 'actionByEmail.html',
|
||||
'ABE_DYN_TYPE' => 'NORMAL',
|
||||
'DYN_UID' => $dynaForm->DYN_UID,
|
||||
'DYN_UID' => $dynaform->DYN_UID,
|
||||
'ABE_EMAIL_FIELD' => 'admin@processmaker.com',
|
||||
'ABE_ACTION_FIELD' => '',
|
||||
'ABE_CASE_NOTE_IN_RESPONSE' => $faker->randomElement(['0', '1']),
|
||||
|
||||
@@ -3,12 +3,17 @@
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\AbeRequest::class, function (Faker $faker) {
|
||||
$process = \ProcessMaker\Model\Application::all()->random();
|
||||
$abeConfiguration = \ProcessMaker\Model\AbeConfiguration::all()->random();
|
||||
$process = factory(\ProcessMaker\Model\Process::class)->create();
|
||||
$abeConfiguration = factory(\ProcessMaker\Model\AbeConfiguration::class)->create([
|
||||
'PRO_UID' => $process->PRO_UID
|
||||
]);
|
||||
$application = factory(\ProcessMaker\Model\Application::class)->create([
|
||||
'PRO_UID' => $process->PRO_UID
|
||||
]);
|
||||
return [
|
||||
'ABE_REQ_UID' => G::generateUniqueID(),
|
||||
'ABE_UID' => $abeConfiguration->ABE_UID,
|
||||
'APP_UID' => $process->APP_UID,
|
||||
'APP_UID' => $application->APP_UID,
|
||||
'DEL_INDEX' => 0,
|
||||
'ABE_REQ_SENT_TO' => $faker->email,
|
||||
'ABE_REQ_SUBJECT' => '',
|
||||
|
||||
@@ -3,20 +3,26 @@
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\Application::class, function(Faker $faker) {
|
||||
$statuses = ['DRAFT', 'TO_DO'];
|
||||
$status = $faker->randomElement($statuses);
|
||||
$statusId = array_search($status, $statuses) + 1;
|
||||
$user = factory(\ProcessMaker\Model\User::class)->create();
|
||||
$appNumber = $faker->unique()->numberBetween(1000);
|
||||
|
||||
//APP_TITLE field is used in 'MYSQL: MATCH() AGAINST()' function, string size should not be less than 3.
|
||||
$appTitle = $faker->lexify(str_repeat('?', rand(3, 5)) . ' ' . str_repeat('?', rand(3, 5)));
|
||||
|
||||
//APP_STATUS must start in TO_DO because all tests require this state.
|
||||
|
||||
return [
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'APP_TITLE' => $faker->sentence(3),
|
||||
'APP_TITLE' => $appTitle,
|
||||
'APP_NUMBER' => $appNumber,
|
||||
'APP_STATUS' => $status,
|
||||
'APP_STATUS_ID' => $statusId,
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'APP_STATUS' => 'TO_DO',
|
||||
'APP_STATUS_ID' => 2,
|
||||
'PRO_UID' => function() {
|
||||
return factory(\ProcessMaker\Model\Process::class)->create()->PRO_UID;
|
||||
},
|
||||
'APP_PARALLEL' => 'N',
|
||||
'APP_INIT_USER' => G::generateUniqueID(),
|
||||
'APP_CUR_USER' => G::generateUniqueID(),
|
||||
'APP_INIT_USER' => $user->USR_UID,
|
||||
'APP_CUR_USER' => $user->USR_UID,
|
||||
'APP_PIN' => G::generateUniqueID(),
|
||||
'APP_CREATE_DATE' => $faker->dateTime(),
|
||||
'APP_UPDATE_DATE' => $faker->dateTime(),
|
||||
@@ -30,17 +36,19 @@ $factory->state(\ProcessMaker\Model\Application::class, 'foreign_keys', function
|
||||
// Create values in the foreign key relations
|
||||
$process = factory(\ProcessMaker\Model\Process::class)->create();
|
||||
$user = factory(\ProcessMaker\Model\User::class)->create();
|
||||
// Get other random values
|
||||
$statuses = ['DRAFT', 'TO_DO'];
|
||||
$status = $faker->randomElement($statuses);
|
||||
$statusId = array_search($status, $statuses) + 1;
|
||||
$appNumber = $faker->unique()->numberBetween(1000);
|
||||
|
||||
//APP_TITLE field is used in 'MYSQL: MATCH() AGAINST()' function, string size should not be less than 3.
|
||||
$appTitle = $faker->lexify(str_repeat('?', rand(3, 5)) . ' ' . str_repeat('?', rand(3, 5)));
|
||||
|
||||
//APP_STATUS must start in TO_DO because all tests require this state.
|
||||
|
||||
return [
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'APP_TITLE' => $faker->sentence(3),
|
||||
'APP_TITLE' => $appTitle,
|
||||
'APP_NUMBER' => $appNumber,
|
||||
'APP_STATUS' => $status,
|
||||
'APP_STATUS_ID' => $statusId,
|
||||
'APP_STATUS' => 'TO_DO',
|
||||
'APP_STATUS_ID' => 2,
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
'APP_PARALLEL' => 'N',
|
||||
'APP_INIT_USER' => $user->USR_UID,
|
||||
@@ -51,4 +59,4 @@ $factory->state(\ProcessMaker\Model\Application::class, 'foreign_keys', function
|
||||
'APP_INIT_DATE' => $faker->dateTime(),
|
||||
'APP_DATA' => serialize(['APP_NUMBER' => $appNumber])
|
||||
];
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,15 +3,26 @@
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\Delegation::class, function(Faker $faker) {
|
||||
$user = factory(\ProcessMaker\Model\User::class)->create();
|
||||
$process = factory(\ProcessMaker\Model\Process::class)->create();
|
||||
$task = factory(\ProcessMaker\Model\Task::class)->create([
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
'PRO_ID' => $process->PRO_ID
|
||||
]);
|
||||
$application = factory(\ProcessMaker\Model\Application::class)->create([
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
'APP_INIT_USER' => $user->USR_UID,
|
||||
'APP_CUR_USER' => $user->USR_UID
|
||||
]);
|
||||
// Return with default values
|
||||
return [
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'APP_UID' => $application->APP_UID,
|
||||
'DEL_INDEX' => 1,
|
||||
'APP_NUMBER' => $faker->unique()->numberBetween(1, 100000),
|
||||
'APP_NUMBER' => $application->APP_NUMBER,
|
||||
'DEL_PREVIOUS' => 0,
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'TAS_UID' => G::generateUniqueID(),
|
||||
'USR_UID' => G::generateUniqueID(),
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
'TAS_UID' => $task->TAS_UID,
|
||||
'USR_UID' => $user->USR_UID,
|
||||
'DEL_TYPE' => 'NORMAL',
|
||||
'DEL_THREAD' => 1,
|
||||
'DEL_THREAD_STATUS' => 'OPEN',
|
||||
@@ -20,9 +31,9 @@ $factory->define(\ProcessMaker\Model\Delegation::class, function(Faker $faker) {
|
||||
'DEL_INIT_DATE' => $faker->dateTime(),
|
||||
'DEL_TASK_DUE_DATE' => $faker->dateTime(),
|
||||
'DEL_RISK_DATE' => $faker->dateTime(),
|
||||
'USR_ID' => 0,
|
||||
'PRO_ID' => 0,
|
||||
'TAS_ID' => 0,
|
||||
'USR_ID' => $user->USR_ID,
|
||||
'PRO_ID' => $process->PRO_ID,
|
||||
'TAS_ID' => $task->TAS_ID,
|
||||
'DEL_DATA' => ''
|
||||
];
|
||||
});
|
||||
@@ -30,10 +41,17 @@ $factory->define(\ProcessMaker\Model\Delegation::class, function(Faker $faker) {
|
||||
// Create a delegation with the foreign keys
|
||||
$factory->state(\ProcessMaker\Model\Delegation::class, 'foreign_keys', function (Faker $faker) {
|
||||
// Create values in the foreign key relations
|
||||
$application = factory(\ProcessMaker\Model\Application::class)->create();
|
||||
$process = factory(\ProcessMaker\Model\Process::class)->create();
|
||||
$task = factory(\ProcessMaker\Model\Task::class)->create();
|
||||
$user = factory(\ProcessMaker\Model\User::class)->create();
|
||||
$process = factory(\ProcessMaker\Model\Process::class)->create();
|
||||
$task = factory(\ProcessMaker\Model\Task::class)->create([
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
'PRO_ID' => $process->PRO_ID
|
||||
]);
|
||||
$application = factory(\ProcessMaker\Model\Application::class)->create([
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
'APP_INIT_USER' => $user->USR_UID,
|
||||
'APP_CUR_USER' => $user->USR_UID
|
||||
]);
|
||||
|
||||
// Return with default values
|
||||
return [
|
||||
|
||||
54
database/factories/DocumentsFactory.php
Normal file
54
database/factories/DocumentsFactory.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\Documents::class, function (Faker $faker) {
|
||||
$types = ['INPUT', 'OUTPUT', 'ATTACHED'];
|
||||
$type = $faker->randomElement($types);
|
||||
return [
|
||||
'APP_DOC_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_FILENAME' => 'image.png',
|
||||
'APP_DOC_TITLE' => '',
|
||||
'APP_DOC_COMMENT' => '',
|
||||
'DOC_VERSION' => 1,
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'DEL_INDEX' => 1,
|
||||
'DOC_UID' => G::generateUniqueID(),
|
||||
'USR_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_TYPE' => $type,
|
||||
'APP_DOC_CREATE_DATE' => $faker->date(),
|
||||
'APP_DOC_INDEX' => 1,
|
||||
'FOLDER_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_PLUGIN' => '',
|
||||
'APP_DOC_TAGS' => '',
|
||||
'APP_DOC_STATUS' => 'ACTIVE',
|
||||
'APP_DOC_STATUS_DATE' => $faker->date(),
|
||||
'APP_DOC_FIELDNAME' => '',
|
||||
'APP_DOC_DRIVE_DOWNLOAD' => '',
|
||||
];
|
||||
});
|
||||
|
||||
// Create a document related to the case notes
|
||||
$factory->state(\ProcessMaker\Model\Documents::class, 'case_notes', function (Faker $faker) {
|
||||
return [
|
||||
'APP_DOC_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_FILENAME' => 'image.png',
|
||||
'APP_DOC_TITLE' => '',
|
||||
'APP_DOC_COMMENT' => '',
|
||||
'DOC_VERSION' => 1,
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'DEL_INDEX' => 1,
|
||||
'DOC_UID' => G::generateUniqueID(),
|
||||
'USR_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_TYPE' => 'CASE_NOTE',
|
||||
'APP_DOC_CREATE_DATE' => $faker->date(),
|
||||
'APP_DOC_INDEX' => 1,
|
||||
'FOLDER_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_PLUGIN' => '',
|
||||
'APP_DOC_TAGS' => '',
|
||||
'APP_DOC_STATUS' => 'ACTIVE',
|
||||
'APP_DOC_STATUS_DATE' => $faker->date(),
|
||||
'APP_DOC_FIELDNAME' => '',
|
||||
'APP_DOC_DRIVE_DOWNLOAD' => '',
|
||||
];
|
||||
});
|
||||
@@ -10,10 +10,12 @@ $factory->define(\ProcessMaker\Model\Dynaform::class, function(Faker $faker) {
|
||||
$date = $faker->dateTime();
|
||||
return [
|
||||
'DYN_UID' => G::generateUniqueID(),
|
||||
'DYN_ID' => $faker->unique()->numberBetween(1, 10000),
|
||||
'DYN_TITLE' => $faker->sentence(2),
|
||||
'DYN_DESCRIPTION' => $faker->sentence(5),
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'PRO_UID' => function() {
|
||||
$process = factory(Process::class)->create();
|
||||
return $process->PRO_UID;
|
||||
},
|
||||
'DYN_TYPE' => 'xmlform',
|
||||
'DYN_FILENAME' => '',
|
||||
'DYN_CONTENT' => '',
|
||||
@@ -27,7 +29,6 @@ $factory->state(\ProcessMaker\Model\Dynaform::class, 'foreign_keys', function (F
|
||||
$date = $faker->dateTime();
|
||||
return [
|
||||
'DYN_UID' => G::generateUniqueID(),
|
||||
'DYN_ID' => $faker->unique()->numberBetween(1, 10000),
|
||||
'DYN_TITLE' => $faker->sentence(2),
|
||||
'DYN_DESCRIPTION' => $faker->sentence(5),
|
||||
'PRO_UID' => function() {
|
||||
@@ -49,10 +50,12 @@ $factory->state(\ProcessMaker\Model\Dynaform::class, 'translations', function (F
|
||||
$date = $faker->dateTime();
|
||||
return [
|
||||
'DYN_UID' => G::generateUniqueID(),
|
||||
'DYN_ID' => $faker->unique()->numberBetween(1, 10000),
|
||||
'DYN_TITLE' => $faker->sentence(2),
|
||||
'DYN_DESCRIPTION' => $faker->sentence(5),
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'PRO_UID' => function() {
|
||||
$process = factory(Process::class)->create();
|
||||
return $process->PRO_UID;
|
||||
},
|
||||
'DYN_TYPE' => 'xmlform',
|
||||
'DYN_FILENAME' => '',
|
||||
'DYN_CONTENT' => '',
|
||||
|
||||
@@ -7,7 +7,6 @@ use Faker\Generator as Faker;
|
||||
$factory->define(\ProcessMaker\Model\Groupwf::class, function(Faker $faker) {
|
||||
return [
|
||||
'GRP_UID' => G::generateUniqueID(),
|
||||
'GRP_ID' => $faker->unique()->numberBetween(1, 2000),
|
||||
'GRP_TITLE' => $faker->sentence(2),
|
||||
'GRP_STATUS' => 'ACTIVE',
|
||||
'GRP_LDAP_DN' => '',
|
||||
|
||||
@@ -10,7 +10,6 @@ use ProcessMaker\Model\Process;
|
||||
$factory->define(InputDocument::class, function(Faker $faker) {
|
||||
return [
|
||||
'INP_DOC_UID' => G::generateUniqueID(),
|
||||
'INP_DOC_ID' => $faker->unique()->numberBetween(1, 10000),
|
||||
'PRO_UID' => function() {
|
||||
$process = factory(Process::class)->create();
|
||||
return $process->PRO_UID;
|
||||
|
||||
@@ -6,9 +6,9 @@ use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\Process::class, function(Faker $faker) {
|
||||
// Return with default values
|
||||
//The incremental fields of the tables must not be specified in the creation list.
|
||||
return [
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'PRO_ID' => $faker->unique()->numberBetween(1, 1000000),
|
||||
'PRO_TITLE' => $faker->sentence(3),
|
||||
'PRO_DESCRIPTION' => $faker->paragraph(3),
|
||||
'PRO_CREATE_USER' => '00000000000000000000000000000001',
|
||||
@@ -19,7 +19,9 @@ $factory->define(\ProcessMaker\Model\Process::class, function(Faker $faker) {
|
||||
'PRO_TYPE_PROCESS' => 'PUBLIC',
|
||||
'PRO_UPDATE_DATE' => $faker->dateTime(),
|
||||
'PRO_CREATE_DATE' => $faker->dateTime(),
|
||||
'PRO_CATEGORY' => '',
|
||||
'PRO_CATEGORY' => function() {
|
||||
return factory(\ProcessMaker\Model\ProcessCategory::class)->create()->CATEGORY_UID;
|
||||
},
|
||||
];
|
||||
});
|
||||
|
||||
@@ -28,7 +30,6 @@ $factory->state(\ProcessMaker\Model\Process::class, 'foreign_keys', function (Fa
|
||||
$user = factory(\ProcessMaker\Model\User::class)->create();
|
||||
return [
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'PRO_ID' => $faker->unique()->numberBetween(1, 1000000),
|
||||
'PRO_TITLE' => $faker->sentence(3),
|
||||
'PRO_DESCRIPTION' => $faker->paragraph(3),
|
||||
'PRO_CREATE_USER' => $user->USR_UID,
|
||||
@@ -49,7 +50,6 @@ $factory->state(\ProcessMaker\Model\Process::class, 'flow', function (Faker $fak
|
||||
$user = factory(\ProcessMaker\Model\User::class)->create();
|
||||
$process = [
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'PRO_ID' => $faker->unique()->numberBetween(1, 1000000),
|
||||
'PRO_TITLE' => $faker->sentence(3),
|
||||
'PRO_DESCRIPTION' => $faker->paragraph(3),
|
||||
'PRO_CREATE_USER' => $user->USR_UID,
|
||||
|
||||
@@ -6,9 +6,37 @@ use ProcessMaker\Model\ProcessVariables;
|
||||
$factory->define(ProcessVariables::class, function (Faker $faker) {
|
||||
return [
|
||||
'VAR_UID' => G::generateUniqueID(),
|
||||
'PRO_ID' => G::generateUniqueID(),
|
||||
'PRJ_UID' => G::generateUniqueID(),
|
||||
'VAR_NAME' => $faker->word,
|
||||
'VAR_FIELD_TYPE' => G::generateUniqueID(),
|
||||
'VAR_FIELD_TYPE_ID' => G::generateUniqueID(),
|
||||
'VAR_FIELD_SIZE' => 10,
|
||||
'VAR_LABEL' => 'string',
|
||||
'VAR_DBCONNECTION' => 'workflow',
|
||||
'VAR_SQL' => '',
|
||||
'VAR_NULL' => 0,
|
||||
'VAR_DEFAULT' => '',
|
||||
'VAR_ACCEPTED_VALUES' => '[]',
|
||||
'INP_DOC_UID' => ''
|
||||
];
|
||||
});
|
||||
|
||||
// Create a processVariables with the foreign keys
|
||||
$factory->state(ProcessVariables::class, 'foreign_keys', function (Faker $faker) {
|
||||
$types = ['string', 'integer', 'float', 'boolean', 'datetime', 'grid', 'array', 'file', 'multiplefile', 'object'];
|
||||
$varType = $faker->randomElement($types);
|
||||
$varTypeId = array_search($varType, $types) + 1;
|
||||
// Create values in the foreign key relations
|
||||
$process = factory(\ProcessMaker\Model\Process::class)->create();
|
||||
|
||||
return [
|
||||
'VAR_UID' => G::generateUniqueID(),
|
||||
'PRO_ID' => $process->PRO_ID,
|
||||
'PRJ_UID' => $process->PRO_UID,
|
||||
'VAR_NAME' => $faker->word,
|
||||
'VAR_FIELD_TYPE' => $varType,
|
||||
'VAR_FIELD_TYPE_ID' => $varTypeId,
|
||||
'VAR_FIELD_SIZE' => 10,
|
||||
'VAR_LABEL' => 'string',
|
||||
'VAR_DBCONNECTION' => 'workflow',
|
||||
|
||||
18
database/factories/StepTriggerFactory.php
Normal file
18
database/factories/StepTriggerFactory.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\StepTrigger::class, function (Faker $faker) {
|
||||
return [
|
||||
'STEP_UID' => $faker->regexify("/[a-zA-Z]{32}/"),
|
||||
'TAS_UID' => function() {
|
||||
return factory(\ProcessMaker\Model\Task::class)->create()->TAS_UID;
|
||||
},
|
||||
'TRI_UID' => function() {
|
||||
return factory(\ProcessMaker\Model\Triggers::class)->create()->TRI_UID;
|
||||
},
|
||||
'ST_TYPE' => 'BEFORE',
|
||||
'ST_CONDITION' => '',
|
||||
'ST_POSITION' => 1,
|
||||
];
|
||||
});
|
||||
17
database/factories/SubApplicationFactory.php
Normal file
17
database/factories/SubApplicationFactory.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\SubApplication::class, function (Faker $faker) {
|
||||
return [
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'APP_PARENT' => G::generateUniqueID(),
|
||||
'DEL_INDEX_PARENT' => 2,
|
||||
'DEL_THREAD_PARENT' => 1,
|
||||
'SA_STATUS' => 'ACTIVE',
|
||||
'SA_VALUES_OUT' => 'a:0:{}',
|
||||
'SA_VALUES_IN' => 'a:0:{}',
|
||||
'SA_INIT_DATE' => $faker->dateTime(),
|
||||
'SA_FINISH_DATE' => $faker->dateTime(),
|
||||
];
|
||||
});
|
||||
@@ -6,11 +6,11 @@
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\Task::class, function(Faker $faker) {
|
||||
$process = factory(\ProcessMaker\Model\Process::class)->create();
|
||||
return [
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'PRO_ID' => $faker->unique()->numberBetween(),
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
'PRO_ID' => $process->PRO_ID,
|
||||
'TAS_UID' => G::generateUniqueID(),
|
||||
'TAS_ID' => $faker->unique()->numberBetween(),
|
||||
'TAS_TITLE' => $faker->sentence(2),
|
||||
'TAS_TYPE' => 'NORMAL',
|
||||
'TAS_TYPE_DAY' => 1,
|
||||
@@ -39,7 +39,6 @@ $factory->state(\ProcessMaker\Model\Task::class, 'foreign_keys', function (Faker
|
||||
'PRO_UID' => $process->PRO_UID,
|
||||
'PRO_ID' => $process->PRO_ID,
|
||||
'TAS_UID' => G::generateUniqueID(),
|
||||
'TAS_ID' => $faker->unique()->numberBetween(1, 200000),
|
||||
'TAS_TITLE' => $faker->sentence(2),
|
||||
'TAS_TYPE' => 'NORMAL',
|
||||
'TAS_TYPE_DAY' => 1,
|
||||
|
||||
@@ -5,12 +5,14 @@ use ProcessMaker\Model\Triggers;
|
||||
|
||||
$factory->define(Triggers::class, function (Faker $faker) {
|
||||
return [
|
||||
'TRI_UID' => G::generateUniqueID(),
|
||||
'TRI_UID' => $faker->regexify("/[a-zA-Z]{32}/"),
|
||||
'TRI_TITLE' => $faker->sentence(5),
|
||||
'TRI_DESCRIPTION' => $faker->text,
|
||||
'PRO_UID' => G::generateUniqueID(),
|
||||
'PRO_UID' => function() {
|
||||
return factory(\ProcessMaker\Model\Process::class)->create()->PRO_UID;
|
||||
},
|
||||
'TRI_TYPE' => 'SCRIPT',
|
||||
'TRI_WEBBOT' => $faker->text,
|
||||
'TRI_PARAM' => '',
|
||||
];
|
||||
});
|
||||
});
|
||||
|
||||
@@ -90,6 +90,10 @@
|
||||
var evaluateFunctionFunction = [evaluateFunction+"($gridName,$Expression)"];
|
||||
arrayFunctions[evaluateFunction] = evaluateFunctionFunction;
|
||||
|
||||
var PMFTotalCalculation = "PMFTotalCalculation";
|
||||
var PMFTotalCalculationFunction = [PMFTotalCalculation + "($gridName, $field, 'function')"];
|
||||
arrayFunctions[PMFTotalCalculation] = PMFTotalCalculationFunction;
|
||||
|
||||
var PMFTaskCase = "PMFTaskCase";
|
||||
var PMFTaskCaseFunction = [PMFTaskCase+"($caseId)"];
|
||||
arrayFunctions[PMFTaskCase] = PMFTaskCaseFunction;
|
||||
@@ -219,7 +223,7 @@
|
||||
arrayFunctions[PMFGetCaseNotes] = PMFGetCaseNotesFunction;
|
||||
|
||||
var phpPMFunctions = [formatDate,getCurrentDate,getCurrentTime,literalDate,capitalize,lowerCase,upperCase,userInfo,executeQuery,orderGrid,
|
||||
evaluateFunction,PMFTaskCase,PMFTaskList,PMFUserList,PMFGroupList,PMFRoleList,PMFCaseList,PMFProcessList,PMFSendVariables,PMFDerivateCase,
|
||||
evaluateFunction, PMFTotalCalculation, PMFTaskCase,PMFTaskList,PMFUserList,PMFGroupList,PMFRoleList,PMFCaseList,PMFProcessList,PMFSendVariables,PMFDerivateCase,
|
||||
PMFNewCaseImpersonate,PMFNewCase,PMFPauseCase,PMFUnpauseCase,PMFAssignUserToGroup,PMFCreateUser,PMFUpdateUser,PMFInformationUser,
|
||||
generateCode,setCaseTrackerCode,jumping,PMFRedirectToStep,pauseCase,PMFSendMessage,PMFgetLabelOption,PMFGenerateOutputDocument,
|
||||
PMFGetUserEmailAddress,PMFGetNextAssignedUser,PMFDeleteCase,PMFCancelCase,PMFAddInputDocument,PMFAddCaseNote,PMFGetCaseNotes];
|
||||
|
||||
1666
tests/resources/dynaform1.json
Normal file
1666
tests/resources/dynaform1.json
Normal file
File diff suppressed because it is too large
Load Diff
BIN
tests/resources/images/activate.png
Normal file
BIN
tests/resources/images/activate.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 750 B |
BIN
tests/resources/images/activity.gif
Normal file
BIN
tests/resources/images/activity.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.5 KiB |
33
tests/resources/structureReportTable.json
Normal file
33
tests/resources/structureReportTable.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"data": {
|
||||
"var_Text1": "5298067855ed6e6893e1424067710552",
|
||||
"var_Textarea1": "4835809915ed6e6893e14a6079656976",
|
||||
"var_Dropdown1": "5287566085ed6e6893e14e0083475368",
|
||||
"var_Suggest1": "4813021735ed6e6893e1520081779769",
|
||||
"var_DateTime1": "1975-04-04 16:34:22",
|
||||
"var_String1": "7984290665ed6e6893e15b2092042769",
|
||||
"var_Integer1": "44"
|
||||
},
|
||||
"mapping": [{
|
||||
"sFieldName": "var_Text1",
|
||||
"sType": "char"
|
||||
}, {
|
||||
"sFieldName": "var_Textarea1",
|
||||
"sType": "text"
|
||||
}, {
|
||||
"sFieldName": "var_Dropdown1",
|
||||
"sType": "char"
|
||||
}, {
|
||||
"sFieldName": "var_Suggest1",
|
||||
"sType": "char"
|
||||
}, {
|
||||
"sFieldName": "var_DateTime1",
|
||||
"sType": "date"
|
||||
}, {
|
||||
"sFieldName": "var_String1",
|
||||
"sType": "char"
|
||||
}, {
|
||||
"sFieldName": "var_Integer1",
|
||||
"sType": "number"
|
||||
}]
|
||||
}
|
||||
BIN
tests/resources/testDocument.pdf
Normal file
BIN
tests/resources/testDocument.pdf
Normal file
Binary file not shown.
@@ -10,6 +10,7 @@ use ProcessMaker\Model\Application;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\Process;
|
||||
use ProcessMaker\Model\Route;
|
||||
use ProcessMaker\Model\SubApplication;
|
||||
use ProcessMaker\Model\Task;
|
||||
use ProcessMaker\Model\TaskUser;
|
||||
use ProcessMaker\Model\User;
|
||||
@@ -111,6 +112,8 @@ class DerivationTest extends TestCase
|
||||
* It tests the doDerivation method sending variables synchronously
|
||||
*
|
||||
* @covers Derivation::doDerivation()
|
||||
* @covers Derivation::<protected>
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_should_test_the_do_derivation_method_sending_variables_synchronously()
|
||||
@@ -151,7 +154,7 @@ class DerivationTest extends TestCase
|
||||
$sp = [
|
||||
'SP_VARIABLES_OUT' => 'a:1:{s:6:"@&var1";s:6:"@&var2";}',
|
||||
'SP_VARIABLES_IN' => 'a:1:{s:6:"@&var2";s:6:"@&var3";}',
|
||||
'SP_SYNCHRONOUS' => '1',
|
||||
'SP_SYNCHRONOUS' => 1,
|
||||
'SP_TYPE' => '',
|
||||
'TAS_UID' => $task->TAS_UID,
|
||||
'USR_UID' => $user->USR_UID,
|
||||
@@ -166,12 +169,22 @@ class DerivationTest extends TestCase
|
||||
|
||||
// Assert the new delegation index is 1
|
||||
$this->assertEquals(1, $res);
|
||||
|
||||
// Review the subprocess synchronously
|
||||
$query = SubApplication::query()->select();
|
||||
$query->where('APP_PARENT', $application->APP_UID);
|
||||
$query->where('DEL_INDEX_PARENT', $appDelegation->DEL_INDEX);
|
||||
$results = $query->get()->toArray();
|
||||
$this->assertNotEmpty($results);
|
||||
$this->assertEquals($results[0]['SA_STATUS'], 'ACTIVE');
|
||||
}
|
||||
|
||||
/**
|
||||
* It tests the doDerivation method sending variables asynchronously
|
||||
*
|
||||
* @covers Derivation::doDerivation()
|
||||
* @covers Derivation::<protected>
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_should_test_the_do_derivation_method_sending_variables_asynchronously()
|
||||
@@ -225,7 +238,7 @@ class DerivationTest extends TestCase
|
||||
$sp = [
|
||||
'SP_VARIABLES_OUT' => 'a:1:{s:6:"@&var1";s:6:"@&var2";}',
|
||||
'SP_VARIABLES_IN' => 'a:1:{s:6:"@&var2";s:6:"@&var3";}',
|
||||
'SP_SYNCHRONOUS' => '0',
|
||||
'SP_SYNCHRONOUS' => 0,
|
||||
'SP_TYPE' => '',
|
||||
'TAS_UID' => $task->TAS_UID,
|
||||
'USR_UID' => $user->USR_UID,
|
||||
@@ -240,5 +253,13 @@ class DerivationTest extends TestCase
|
||||
|
||||
// Assert the new delegation index is 1
|
||||
$this->assertEquals(1, $res);
|
||||
|
||||
// Review the subprocess asynchronously
|
||||
$query = SubApplication::query()->select();
|
||||
$query->where('APP_PARENT', $application->APP_UID);
|
||||
$query->where('DEL_INDEX_PARENT', $appDelegation->DEL_INDEX);
|
||||
$results = $query->get()->toArray();
|
||||
$this->assertNotEmpty($results);
|
||||
$this->assertEquals($results[0]['SA_STATUS'], 'FINISHED');
|
||||
}
|
||||
}
|
||||
@@ -984,6 +984,64 @@ class PmDynaformTest extends TestCase
|
||||
// Compare the values
|
||||
$this->assertEquals($dynaformTitle, $dynaform->DYN_TITLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test should verify the setDependentOptionsForDatetime() method, to
|
||||
* add the dependentOptions property to the datetime control.
|
||||
* @test
|
||||
* @covers PmDynaform::jsonr()
|
||||
* @covers PmDynaform::setDependentOptionsForDatetime()
|
||||
*/
|
||||
public function it_should_test_dependent_options_for_datetime_control()
|
||||
{
|
||||
$pathData = PATH_TRUNK . "/tests/resources/dynaform1.json";
|
||||
$data = file_get_contents($pathData);
|
||||
$json = json_decode($data);
|
||||
|
||||
//assert for not contain property: dependentOptions
|
||||
$result = json_decode(json_encode($json), JSON_OBJECT_AS_ARRAY);
|
||||
$fn = function($item) use(&$fn) {
|
||||
if (is_array($item)) {
|
||||
if (isset($item['type']) && $item['type'] === 'datetime') {
|
||||
$this->assertArrayNotHasKey('dependentOptions', $item);
|
||||
}
|
||||
array_map($fn, $item);
|
||||
}
|
||||
};
|
||||
array_map($fn, $result);
|
||||
|
||||
//assert new property: dependentOptions
|
||||
$dynaform = new PmDynaform();
|
||||
$dynaform->jsonr($json);
|
||||
$result = json_decode(json_encode($json), JSON_OBJECT_AS_ARRAY);
|
||||
|
||||
$fn = function($item) use(&$fn) {
|
||||
if (is_array($item)) {
|
||||
if (isset($item['type']) && $item['type'] === 'datetime') {
|
||||
$this->assertArrayHasKey('dependentOptions', $item);
|
||||
$this->assertArrayHasKey('minDate', $item['dependentOptions']);
|
||||
$this->assertArrayHasKey('maxDate', $item['dependentOptions']);
|
||||
$this->assertArrayHasKey('defaultDate', $item['dependentOptions']);
|
||||
}
|
||||
array_map($fn, $item);
|
||||
}
|
||||
};
|
||||
array_map($fn, $result);
|
||||
|
||||
$dynaform = new PmDynaform();
|
||||
$reflection = new ReflectionClass($dynaform);
|
||||
$reflectionMethod = $reflection->getMethod('setDependentOptionsForDatetime');
|
||||
$reflectionMethod->setAccessible(true);
|
||||
|
||||
$a = new stdClass();
|
||||
$reflectionMethod->invokeArgs($dynaform, [&$a]);
|
||||
$this->assertInstanceOf('ReflectionMethod', $reflectionMethod);
|
||||
|
||||
$a = new stdClass();
|
||||
$a->type = 'suggest';
|
||||
$reflectionMethod->invokeArgs($dynaform, [&$a]);
|
||||
$this->assertInstanceOf('ReflectionMethod', $reflectionMethod);
|
||||
}
|
||||
}
|
||||
|
||||
// Dummy function used for the coverture
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,260 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\unit\workflow\engine\classes\PmFunctions;
|
||||
|
||||
use Faker\Factory;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Test the PMFTotalCalculation() function
|
||||
*
|
||||
* @link https://wiki.processmaker.com/3.1/ProcessMaker_Functions#executeQuery.28.29
|
||||
*/
|
||||
class PMFTotalCalculationTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the sum
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_sum_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 2
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 5
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 3
|
||||
]
|
||||
];
|
||||
$field = "field2";
|
||||
$this->assertEquals(10, PMFTotalCalculation($grid, $field, 'sum'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the average
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_average_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 2
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 5
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 3
|
||||
]
|
||||
];
|
||||
$this->assertEquals(3.3333333333, PMFTotalCalculation($grid, 'field2', 'average'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the median
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_median_of_the_method()
|
||||
{
|
||||
$grid1 = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 2
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 5
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 3
|
||||
]
|
||||
];
|
||||
$grid2 = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 2
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 5
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 3
|
||||
],
|
||||
'4' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 8
|
||||
]
|
||||
];
|
||||
$this->assertEquals(3, PMFTotalCalculation($grid1, 'field2', 'median'));
|
||||
$this->assertEquals(4, PMFTotalCalculation($grid2, 'field2', 'median'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the minimum
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_minimum_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 5
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 2
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 3
|
||||
]
|
||||
];
|
||||
$this->assertEquals(2, PMFTotalCalculation($grid, 'field2', 'minimum'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the maximum
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_maximum_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 2
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 5
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 3
|
||||
]
|
||||
];
|
||||
$this->assertEquals(5, PMFTotalCalculation($grid, 'field2', 'maximum'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the standardDeviation
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_standardDeviation_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 25
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 40
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 10
|
||||
]
|
||||
];
|
||||
$this->assertEquals(12.2474487139, PMFTotalCalculation($grid, 'field2', 'standardDeviation'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the variance
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_variance_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 25
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 40
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 10
|
||||
]
|
||||
];
|
||||
$this->assertEquals(150, PMFTotalCalculation($grid, 'field2', 'variance'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the percentile
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_percentile_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 10
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 35
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 5
|
||||
]
|
||||
];
|
||||
$expectedArray = [
|
||||
"1" => 20,
|
||||
"2" => 70,
|
||||
"3" => 10,
|
||||
];
|
||||
$this->assertEquals($expectedArray, PMFTotalCalculation($grid, 'field2', 'percentile'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the count
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_count_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 25
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 40
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 10
|
||||
]
|
||||
];
|
||||
$this->assertEquals(3, PMFTotalCalculation($grid, 'field2', 'count'));
|
||||
}
|
||||
/**
|
||||
* This tests if the "PMFTotalCalculation" execute correctly the count distinct
|
||||
* @test
|
||||
*/
|
||||
public function it_must_return_the_count_distinct_of_the_method()
|
||||
{
|
||||
$grid = [
|
||||
'1' => [
|
||||
"field1" => "Value 1",
|
||||
"field2" => 20
|
||||
],
|
||||
'2' => [
|
||||
"field1" => "Value 2",
|
||||
"field2" => 20
|
||||
],
|
||||
'3' => [
|
||||
"field1" => "Value 3",
|
||||
"field2" => 10
|
||||
]
|
||||
];
|
||||
$this->assertEquals(2, PMFTotalCalculation($grid, 'field2', 'countDistinct'));
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,17 +3,32 @@
|
||||
namespace Tests\unit\workflow\engine\classes\model;
|
||||
|
||||
use AdditionalTables;
|
||||
use App\Jobs\GenerateReportTable;
|
||||
use Exception;
|
||||
use G;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Queue;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use ProcessMaker\BusinessModel\ReportTable;
|
||||
use ProcessMaker\Model\AdditionalTables as AdditionalTablesModel;
|
||||
use ProcessMaker\Model\Application;
|
||||
use ProcessMaker\Model\DbSource;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\Process;
|
||||
use ProcessMaker\Model\Task;
|
||||
use Tests\TestCase;
|
||||
|
||||
class AdditionalTablesTest extends TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Set up method.
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
/**
|
||||
* This tests the creation of a PMTable.
|
||||
* @test
|
||||
@@ -198,6 +213,74 @@ class AdditionalTablesTest extends TestCase
|
||||
$this->assertContains($actual[0], $expected, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if populate report table is added to job queue.
|
||||
* @test
|
||||
* @covers \AdditionalTables::populateReportTable
|
||||
*/
|
||||
public function it_should_test_populate_report_table()
|
||||
{
|
||||
$proUid = factory(Process::class)->create()->PRO_UID;
|
||||
|
||||
$task = factory(Task::class)->create([
|
||||
'PRO_UID' => $proUid
|
||||
]);
|
||||
|
||||
//local connections
|
||||
$dbSource = factory(DbSource::class)->create([
|
||||
'PRO_UID' => $proUid,
|
||||
'DBS_SERVER' => env('DB_HOST'),
|
||||
'DBS_DATABASE_NAME' => env('DB_DATABASE'),
|
||||
'DBS_USERNAME' => env('DB_USERNAME'),
|
||||
'DBS_PASSWORD' => G::encrypt(env('DB_PASSWORD'), env('DB_DATABASE')) . "_2NnV3ujj3w",
|
||||
'DBS_PORT' => '3306',
|
||||
'DBS_CONNECTION_TYPE' => 'NORMAL'
|
||||
]);
|
||||
$additionalTable = factory(AdditionalTablesModel::class)->create([
|
||||
'PRO_UID' => $proUid,
|
||||
'DBS_UID' => $dbSource->DBS_UID,
|
||||
]);
|
||||
$tableName = $additionalTable->ADD_TAB_NAME;
|
||||
$name = $additionalTable->ADD_TAB_CLASS_NAME;
|
||||
$this->createSchema($dbSource->DBS_DATABASE_NAME, $tableName, $name, $dbSource->DBS_UID);
|
||||
|
||||
//external connection
|
||||
$dbSource = factory(DbSource::class)->create([
|
||||
'PRO_UID' => $proUid,
|
||||
'DBS_SERVER' => config('database.connections.testexternal.host'),
|
||||
'DBS_DATABASE_NAME' => config('database.connections.testexternal.database'),
|
||||
'DBS_USERNAME' => config('database.connections.testexternal.username'),
|
||||
'DBS_PASSWORD' => G::encrypt(config('database.connections.testexternal.password'), config('database.connections.testexternal.database')) . "_2NnV3ujj3w",
|
||||
'DBS_PORT' => '3306',
|
||||
'DBS_CONNECTION_TYPE' => 'NORMAL'
|
||||
]);
|
||||
$additionalTable = factory(AdditionalTablesModel::class)->create([
|
||||
'PRO_UID' => $proUid,
|
||||
'DBS_UID' => $dbSource->DBS_UID,
|
||||
]);
|
||||
$tableNameExternal = $additionalTable->ADD_TAB_NAME;
|
||||
$nameExternal = $additionalTable->ADD_TAB_CLASS_NAME;
|
||||
$this->createSchema($dbSource->DBS_DATABASE_NAME, $tableNameExternal, $nameExternal, $dbSource->DBS_UID);
|
||||
|
||||
$application = factory(Application::class)->create([
|
||||
'PRO_UID' => $proUid
|
||||
]);
|
||||
factory(Delegation::class)->create([
|
||||
'DEL_THREAD_STATUS' => 'CLOSED',
|
||||
'APP_NUMBER' => $application->APP_NUMBER,
|
||||
'TAS_UID' => $task->TAS_UID,
|
||||
]);
|
||||
|
||||
//assertions
|
||||
Queue::fake();
|
||||
Queue::assertNothingPushed();
|
||||
|
||||
$additionalTables = new AdditionalTables();
|
||||
$additionalTables->populateReportTable($tableName, 'workflow', 'NORMAL', $proUid, '', $additionalTable->ADD_TAB_UID);
|
||||
|
||||
Queue::assertPushed(GenerateReportTable::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* This gets the content from template file.
|
||||
* @param string $pathData
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user