/**
  * @param         $accountId
  * @param         $fileId
  * @param Request $request
  * @return JsonResponse
  */
 public function putFilesAction($accountId, $fileId, Request $request)
 {
     $params = $this->getPostJson($request);
     $this->configuration->updateFile($accountId, $fileId, $params);
     $files = [];
     /** @var File $file */
     foreach ($this->configuration->getFiles($accountId) as $file) {
         $files[] = $file->toArray();
     }
     return $this->createJsonResponse($files, 200);
 }
 /**
  * Run
  */
 public function testRun()
 {
     $this->createConfig();
     $this->createAccount();
     // add files to config
     $file = new File(['id' => 0, 'title' => 'Test Sheet', 'tableId' => $this->tableId, 'targetFolder' => '0B8ceg4OWLR3lelQzMm9pcDEyNHc', 'type' => 'sheet']);
     $file2 = new File(['id' => 1, 'title' => 'Test File', 'tableId' => $this->tableId, 'targetFolder' => '0B8ceg4OWLR3lelQzMm9pcDEyNHc', 'type' => 'file']);
     $file3 = new File(['id' => 2, 'title' => 'Test Sheet Redshift', 'tableId' => $this->rsTableId, 'targetFolder' => '0B8ceg4OWLR3lelQzMm9pcDEyNHc', 'type' => 'sheet']);
     $file4 = new File(['id' => 3, 'title' => 'Test File Redshift', 'tableId' => $this->rsTableId, 'targetFolder' => '0B8ceg4OWLR3lelQzMm9pcDEyNHc', 'type' => 'file']);
     $filesToSync = [$file, $file2, $file3, $file4];
     /** @var $f File */
     foreach ($filesToSync as $f) {
         $this->configuration->addFile($this->accountId, $f->toArray());
     }
     // run
     $job = $this->processJob($this->componentName . '/run');
     $this->assertEquals('success', $job->getStatus());
     // update files
     $files = $this->configuration->getFiles($this->accountId);
     /** @var File $file */
     $file = $files[0];
     $file->setTitle('Test Sheet Updated');
     $this->configuration->updateFile($this->accountId, $file->getId(), $file->toArray());
     /** @var File $file2 */
     $file2 = $files[1];
     $file2->setTitle('Test File Updated');
     $this->configuration->updateFile($this->accountId, $file2->getId(), $file2->toArray());
     /** @var File $file3 */
     $file3 = $files[2];
     /** @var File $file4 */
     $file4 = $files[3];
     $this->httpClient->restart();
     $job = $this->processJob($this->componentName . '/run');
     $this->assertEquals('success', $job->getStatus());
     $updatedFiles = $this->configuration->getFiles($this->accountId);
     /** @var File $updatedFile */
     $updatedFile = $updatedFiles[0];
     /** @var File $updatedFile2 */
     $updatedFile2 = $updatedFiles[1];
     $this->assertEquals($file->getGoogleId(), $updatedFile->getGoogleId());
     $this->assertEquals($file2->getGoogleId(), $updatedFile2->getGoogleId());
     $this->assertEquals('Test File Redshift', $file4->getTitle());
     $this->assertEquals('Test Sheet Redshift', $file3->getTitle());
 }