Exemplo n.º 1
0
 public function __construct()
 {
     $opts = getopt(self::HELP . self::SERVER_URL . ':' . self::BALANCE . self::DAILY_BALANCE . self::EXPENSES . self::REMOVE_DUPLICATES . self::CLEAN_NAMES . '::' . self::BULK_DAILY_BALANCE . self::BULK_EXPENSES . self::FAILURE_THRESHOLD . ':' . self::ALL_DATA);
     if (array_key_exists(self::HELP, $opts) || count($opts) === 0) {
         $this->printUsage();
         exit;
     }
     $data = array();
     $dataUrl = self::DEFAULT_SERVER_URL;
     if (isset($opts[self::SERVER_URL]) && false !== $opts[self::SERVER_URL] && strlen($opts[self::SERVER_URL]) > 0) {
         $dataUrl = $opts[self::SERVER_URL];
     }
     $failureThreshold = 1;
     if (isset($opts[self::FAILURE_THRESHOLD]) && is_numeric($opts[self::FAILURE_THRESHOLD])) {
         $failureThreshold = $opts[self::FAILURE_THRESHOLD];
     }
     $data = $this->getData($dataUrl, $failureThreshold);
     $bulkLoad = isset($opts[self::BULK_DAILY_BALANCE]) || isset($opts[self::BULK_EXPENSES]);
     $transactionRecord = new TransactionRecord($data, $bulkLoad);
     if (isset($opts[self::REMOVE_DUPLICATES])) {
         $transactionRecord->removeDuplicateTransactions();
     }
     if (isset($opts[self::BULK_DAILY_BALANCE])) {
         error_log("THE BULK CALCULATED DAILY BALANCES: " . json_encode($transactionRecord->generateDailyCalculatedBalances()));
     }
     if (isset($opts[self::BULK_EXPENSES])) {
         error_log("THE BULK EXPENSES: " . json_encode($transactionRecord->generateExpenseList()));
     }
     if (isset($opts[self::BALANCE])) {
         error_log("THE BALANCE IS: " . $transactionRecord->getTotalBalance());
     }
     if (isset($opts[self::DAILY_BALANCE])) {
         error_log("THE DAILY BALANCE: " . json_encode($transactionRecord->getDailyBalances()));
     }
     if (isset($opts[self::EXPENSES])) {
         error_log("THE EXPENSES: " . json_encode($transactionRecord->getExpenses()));
     }
     if (isset($opts[self::CLEAN_NAMES])) {
         $regex = null;
         if (false !== $opts[self::CLEAN_NAMES] && strlen($opts[self::CLEAN_NAMES]) > 0) {
             $regex = $opts[self::CLEAN_NAMES];
         }
         error_log("THE CLEANED NAMES: " . json_encode($transactionRecord->cleanCompanyNames($regex)));
     }
     if (isset($opts[self::ALL_DATA])) {
         error_log("ALL DATA: " . $transactionRecord->getRawTransactionDataAsJSON());
     }
 }
 public function testFourTransactions()
 {
     $transactionRecord = new TransactionRecord(array());
     $transactionRecord->addTransaction($this->mTransaction4);
     $transactionRecord->addTransaction($this->mTransaction1);
     $transactionRecord->addTransaction($this->mTransaction3);
     $transactionRecord->addTransaction($this->mTransaction2);
     $expectedExpenses = array('Some expense' => array(TransactionRecord::TRANSACTIONS => array($this->mTransaction1), TransactionRecord::EXPENSES_TOTAL => 10.1), 'Some other expense' => array(TransactionRecord::TRANSACTIONS => array($this->mTransaction3, $this->mTransaction2), TransactionRecord::EXPENSES_TOTAL => 15.0), 'More expenses' => array(TransactionRecord::TRANSACTIONS => array($this->mTransaction4), TransactionRecord::EXPENSES_TOTAL => 5.0));
     $expectedDaily = array('2015-01-01' => 10.1, '2015-01-02' => 20.1, '2015-01-05' => 30.1);
     $this->assertEquals(4, $transactionRecord->getNumTransactions());
     $this->assertEquals(30.1, $transactionRecord->getTotalBalance(), '', 0.01);
     $this->assertEquals(array($this->mTransaction4, $this->mTransaction1, $this->mTransaction3, $this->mTransaction2), $transactionRecord->getRawTransactionData());
     $this->assertEquals($expectedExpenses, $transactionRecord->getExpenses());
     $this->assertEquals($expectedExpenses, $transactionRecord->generateExpenseList());
     $this->assertEquals($expectedDaily, $transactionRecord->getDailyBalances());
     $this->assertEquals($expectedDaily, $transactionRecord->generateDailyCalculatedBalances());
 }