public function testShouldWorkWithZero()
 {
     $service = new Service();
     $converter = new Converter($service);
     $actual = $converter->convert(0, 'USD', 'EUR');
     $expected = 0;
     $this->assertEquals($expected, $actual);
 }
 /**
  * @param InputInterface $input
  * @param OutputInterface $output
  * @return void
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $headerStyle = new OutputFormatterStyle('white', 'blue', array('bold'));
     $output->getFormatter()->setStyle('header', $headerStyle);
     $id = intval($input->getArgument('id'));
     if (!$id) {
         throw new \InvalidArgumentException('Please provide valid merchant ID');
     }
     $output->writeln('<header> Report for merchant #' . $id . ' </header>');
     $storage = new Storage(new PDO(DB_DSN));
     $transaction = new Transaction($storage);
     $merchant = new Merchant($transaction);
     $converter = new Converter(new Service());
     $transactions = $merchant->getTransactions($id);
     if (!empty($transactions)) {
         $output->writeln("Date\t\tAmount,GBP");
         foreach ($transactions as $transaction) {
             $output->writeln(sprintf("%s\t%.2f", date('d/m/Y', strtotime($transaction['created_at'])), $converter->convert($transaction['amount'], $transaction['currency'], 'GBP')));
         }
     } else {
         $output->writeln('No data for merchant');
     }
 }