/**
  * @param InputInterface $input
  * @param OutputInterface $output
  */
 public function execute(InputInterface $input, OutputInterface $output)
 {
     $id = $input->getOption('id');
     if ($id === null) {
         $output->writeln('<info>Syncing with all Salesforce accounts</info>');
     } else {
         $output->writeln(sprintf('<info>Syncing with Salesforce account %s</info>', $id));
     }
     list($salesforceRecords, $localUpdates) = $this->service->sync($id);
     $output->writeln(sprintf('<info>Got <comment>%d</comment> records from Salesforce</info>', $salesforceRecords));
     $output->writeln(sprintf('<info>Updated <comment>%d</comment> local records</info>', $localUpdates));
 }
 public function testQueryMore()
 {
     $expected1 = [['id' => '00XXXXXX0XXXXXXXXX', 'customEmptyField' => null, 'customField' => 'custom field value', 'ownerName' => 'Name of the Owner']];
     $expected2 = [['id' => '2 00XXXXXX0XXXXXXXXX', 'customEmptyField' => null, 'customField' => '2 custom field value', 'ownerName' => '2 Name of the Owner']];
     $iteration = 1;
     $service = new Salesforce\Service($this->mockClientForQueryMore(), $this->fieldmap, '', function (array $records) use($expected1, $expected2, &$iteration) {
         $this->assertEquals(1, count($records));
         if ($iteration == 1) {
             $this->assertEquals($expected1, $records, 'first batch');
         } else {
             $this->assertEquals($expected2, $records, 'second batch');
         }
         $iteration += 1;
         return 42;
     });
     list($salesforceResults, $updatedRecords) = $service->sync();
     $this->assertEquals(2, $salesforceResults);
     $this->assertEquals(84, $updatedRecords);
 }