You are here

public function UploadFlowTest::testRequestTranslationSuccessFlowExecute in TMGMT Translator Smartling 8.3

Same name and namespace in other branches
  1. 8.4 tests/src/Kernel/UploadFlowTest.php \Drupal\Tests\tmgmt_smartling\Kernel\UploadFlowTest::testRequestTranslationSuccessFlowExecute()

Upload success flow with batch execution.

File

tests/src/Kernel/UploadFlowTest.php, line 17

Class

UploadFlowTest
Tests file upload flow.

Namespace

Drupal\Tests\tmgmt_smartling\Kernel

Code

public function testRequestTranslationSuccessFlowExecute() {
  $translate_job = $this
    ->createJobWithItems([
    'batch_uid' => 'uid',
    'batch_execute_on_job' => 1,
  ]);
  $this->apiWrapperMock
    ->expects($this
    ->once())
    ->method('getApi')
    ->with('batch')
    ->willReturn($this->batchApiMock);
  $this->apiWrapperMock
    ->expects($this
    ->once())
    ->method('createAuditLogRecord')
    ->with($translate_job, NULL, \Drupal::currentUser(), CreateRecordParameters::ACTION_TYPE_UPLOAD);
  $this->batchApiMock
    ->expects($this
    ->once())
    ->method('uploadBatchFile')
    ->with($this
    ->callback(function ($subject) {
    return strstr($subject, '/files/tmgmt_sources/JobID1_en_de.xml') !== FALSE;
  }), 'JobID1_en_de.xml', 'xml', 'uid', $this
    ->callback(function ($subject) {
    $params = $subject
      ->exportToArray();
    return $params['authorize'] == 0 && preg_match('/^{"client":"drupal-tmgmt-connector","version":"(\\d+\\.x-\\d+\\.\\d+|\\d+\\.x-\\d+\\.x-dev|unknown)"}$/', $params['smartling.client_lib_id']) && $params['localeIdsToAuthorize'][0] == 'de' && $params['smartling.translate_paths'] == 'html/body/div/div, html/body/div/span' && $params['smartling.string_format_paths'] == 'html : html/body/div/div, @default : html/body/div/span' && $params['smartling.variants_enabled'] == TRUE && $params['smartling.source_key_paths'] == 'html/body/div/{div.sl-variant}, html/body/div/{span.sl-variant}' && $params['smartling.character_limit_paths'] == 'html/body/div/limit' && $params['smartling.placeholder_format_custom'] == '(@|%|!)[\\w-]+';
  }));
  $this->apiWrapperMock
    ->expects($this
    ->once())
    ->method('executeBatch')
    ->with('uid');
  $this->apiWrapperMock
    ->expects($this
    ->at(2))
    ->method('createFirebaseRecord')
    ->with('tmgmt_smartling', 'notifications', 10, [
    "message" => 'File uploaded. Job id: 1, file name: JobID1_en_de.xml.',
    "type" => "status",
  ]);
  $this->apiWrapperMock
    ->expects($this
    ->at(4))
    ->method('createFirebaseRecord')
    ->with('tmgmt_smartling', 'notifications', 10, [
    "message" => "Finished: content is in the job. You may need to wait a few seconds before content is authorized (if you checked 'authorize' checkbox).",
    "type" => "status",
  ]);
  $translate_job
    ->requestTranslation();
}