markTestSkipped('Skip test no Yodlee API credentials found'); $this->makeTestData(); } public function testFunctionalMatching() { $yodlee = new Yodlee('sbMem62e1e69547bfb1'); $accounts = $yodlee->getAccounts(); foreach($accounts as $account) { if(!BankIntegration::where('bank_account_id', $account['id'])->where('company_id', $this->company->id)->exists()) { $bank_integration = new BankIntegration(); $bank_integration->company_id = $this->company->id; $bank_integration->account_id = $this->company->account_id; $bank_integration->user_id = $this->user->id; $bank_integration->bank_account_id = $account['id']; $bank_integration->bank_account_type = $account['account_type']; $bank_integration->bank_account_name = $account['account_name']; $bank_integration->bank_account_status = $account['account_status']; $bank_integration->bank_account_number = $account['account_number']; $bank_integration->provider_id = $account['provider_id']; $bank_integration->provider_name = $account['provider_name']; $bank_integration->nickname = $account['nickname']; $bank_integration->balance = $account['current_balance']; $bank_integration->currency = $account['account_currency']; $bank_integration->save(); ProcessBankTransactions::dispatchSync('sbMem62e1e69547bfb1', $bank_integration); } } $this->assertGreaterThan(1, BankIntegration::count()); $this->assertGreaterThan(1, BankTransaction::count()); $this->invoice->number = "XXXXXX8501"; $this->invoice->save(); BankService::dispatchSync($this->company->id, $this->company->db); $bt = BankTransaction::where('invoice_id', $this->invoice->id)->first(); $this->assertNotNull($bt); $this->assertEquals(1, $bt->provisional_match); } public function testDataMatching() { $transaction = collect([ (object)[ 'description' => 'tinkertonkton' ], (object)[ 'description' => 'spud' ], ]); $this->assertEquals(2, $transaction->count()); $hit = $transaction->where('description', 'spud')->first(); $this->assertNotNull($hit); $hit = $transaction->where('description', 'tinkertonkton')->first(); $this->assertNotNull($hit); $hit = $transaction->contains('description', 'tinkertonkton'); $this->assertTrue($hit); $transaction = collect([ (object)[ 'description' => 'tinker and spice' ], (object)[ 'description' => 'spud with water' ], ]); $hit = $transaction->contains('description', 'tinker and spice'); $this->assertTrue($hit); $invoice = $transaction->first(function ($value, $key) { return str_contains($value->description, 'tinker'); }); $this->assertNotNull($invoice); } public function testYodleeInstance() { $yodlee = new Yodlee(); $this->assertNotNull($yodlee); $this->assertInstanceOf(Yodlee::class, $yodlee); } public function testAccessTokenGeneration() { $yodlee = new Yodlee('sbMem62e1e69547bfb1'); $access_token = $yodlee->getAccessToken(); $this->assertNotNull($access_token); } /** [transactionCategory] => Array ( [0] => stdClass Object ( [id] => 1 [source] => SYSTEM [classification] => PERSONAL [category] => Uncategorized [type] => UNCATEGORIZE [highLevelCategoryId] => 10000017 [highLevelCategoryName] => Uncategorized [defaultCategoryName] => Uncategorized [defaultHighLevelCategoryName] => Uncategorized ) [1] => stdClass Object ( [id] => 2 [source] => SYSTEM [classification] => PERSONAL [category] => Automotive/Fuel [type] => EXPENSE [detailCategory] => Array ( [0] => stdClass Object ( [id] => 1041 [name] => Registration/Licensing ) [1] => stdClass Object ( [id] => 1145 [name] => Automotive ) [2] => stdClass Object ( [id] => 1218 [name] => Auto Fees/Penalties ) [3] => stdClass Object ( [id] => 1260 [name] => Car Appraisers ) [4] => stdClass Object ( [id] => 1261 [name] => Car Dealers ) [5] => stdClass Object ( [id] => 1262 [name] => Car Dealers and Leasing ) [6] => stdClass Object ( [id] => 1263 [name] => Car Parts and Accessories ) [7] => stdClass Object ( [id] => 1264 [name] => Car Wash and Detail ) [8] => stdClass Object ( [id] => 1265 [name] => Classic and Antique Car ) [9] => stdClass Object ( [id] => 1267 [name] => Maintenance and Repair ) [10] => stdClass Object ( [id] => 1268 [name] => Motorcycles/Mopeds/Scooters ) [11] => stdClass Object ( [id] => 1269 [name] => Oil and Lube ) [12] => stdClass Object ( [id] => 1270 [name] => Motorcycle Repair ) [13] => stdClass Object ( [id] => 1271 [name] => RVs and Motor Homes ) [14] => stdClass Object ( [id] => 1272 [name] => Motorcycle Sales ) [15] => stdClass Object ( [id] => 1273 [name] => Salvage Yards ) [16] => stdClass Object ( [id] => 1274 [name] => Smog Check ) [17] => stdClass Object ( [id] => 1275 [name] => Tires ) [18] => stdClass Object ( [id] => 1276 [name] => Towing ) [19] => stdClass Object ( [id] => 1277 [name] => Transmissions ) [20] => stdClass Object ( [id] => 1278 [name] => Used Cars ) [21] => stdClass Object ( [id] => 1240 [name] => e-Charging ) [22] => stdClass Object ( [id] => 1266 [name] => Gas Stations ) ) [highLevelCategoryId] => 10000003 [highLevelCategoryName] => Automotive Expenses [defaultCategoryName] => Automotive Expenses [defaultHighLevelCategoryName] => Automotive Expenses ) */ public function testGetCategories() { $yodlee = new Yodlee('sbMem62e1e69547bfb2'); $transactions = $yodlee->getTransactionCategories(); // nlog($transactions); $this->assertIsArray($transactions->transactionCategory); } /** [2022-08-05 01:29:45] local.INFO: stdClass Object ( [account] => Array ( [0] => stdClass Object ( [CONTAINER] => bank [providerAccountId] => 11308693 [accountName] => My CD - 8878 [accountStatus] => ACTIVE [accountNumber] => xxxx8878 [aggregationSource] => USER [isAsset] => 1 [balance] => stdClass Object ( [currency] => USD [amount] => 49778.07 ) [id] => 12331861 [includeInNetWorth] => 1 [providerId] => 18769 [providerName] => Dag Site Captcha [isManual] => [currentBalance] => stdClass Object ( [currency] => USD [amount] => 49778.07 ) [accountType] => CD [displayedName] => LORETTA [createdDate] => 2022-07-28T06:55:33Z [lastUpdated] => 2022-07-28T06:56:09Z [dataset] => Array ( [0] => stdClass Object ( [name] => BASIC_AGG_DATA [additionalStatus] => AVAILABLE_DATA_RETRIEVED [updateEligibility] => ALLOW_UPDATE [lastUpdated] => 2022-07-28T06:55:50Z [lastUpdateAttempt] => 2022-07-28T06:55:50Z ) ) ) [1] => stdClass Object ( [CONTAINER] => bank [providerAccountId] => 11308693 [accountName] => Joint Savings - 7159 [accountStatus] => ACTIVE [accountNumber] => xxxx7159 [aggregationSource] => USER [isAsset] => 1 [balance] => stdClass Object ( [currency] => USD [amount] => 186277.45 ) [id] => 12331860 [includeInNetWorth] => 1 [providerId] => 18769 [providerName] => Dag Site Captcha [isManual] => [availableBalance] => stdClass Object ( [currency] => USD [amount] => 186277.45 ) [currentBalance] => stdClass Object ( [currency] => USD [amount] => 186277.45 ) [accountType] => SAVINGS [displayedName] => LYDIA [createdDate] => 2022-07-28T06:55:33Z [classification] => PERSONAL [lastUpdated] => 2022-07-28T06:56:09Z [dataset] => Array ( [0] => stdClass Object ( [name] => BASIC_AGG_DATA [additionalStatus] => AVAILABLE_DATA_RETRIEVED [updateEligibility] => ALLOW_UPDATE [lastUpdated] => 2022-07-28T06:55:50Z [lastUpdateAttempt] => 2022-07-28T06:55:50Z ) ) ) */ public function testGetAccounts() { $yodlee = new Yodlee('sbMem62e1e69547bfb1'); $accounts = $yodlee->getAccounts(); $this->assertIsArray($accounts); } /** [2022-08-05 01:36:34] local.INFO: stdClass Object ( [transaction] => Array ( [0] => stdClass Object ( [CONTAINER] => bank [id] => 103953585 [amount] => stdClass Object ( [amount] => 480.66 [currency] => USD ) [categoryType] => UNCATEGORIZE [categoryId] => 1 [category] => Uncategorized [categorySource] => SYSTEM [highLevelCategoryId] => 10000017 [createdDate] => 2022-08-04T21:50:17Z [lastUpdated] => 2022-08-04T21:50:17Z [description] => stdClass Object ( [original] => CHEROKEE NATION TAX TA TAHLEQUAH OK ) [isManual] => [sourceType] => AGGREGATED [date] => 2022-08-03 [transactionDate] => 2022-08-03 [postDate] => 2022-08-03 [status] => POSTED [accountId] => 12331794 [runningBalance] => stdClass Object ( [amount] => 480.66 [currency] => USD ) [checkNumber] => 998 ) */ public function testGetTransactions() { $yodlee = new Yodlee('sbMem62e1e69547bfb1'); $transactions = $yodlee->getTransactions(['categoryId' => 2, 'fromDate' => '2000-01-01']); $this->assertIsArray($transactions); } public function testGetTransactionsWithParams() { $yodlee = new Yodlee('sbMem62e1e69547bfb1'); $data = [ 'basetype' => 'DEBIT', //CREDIT 'CONTAINER' => 'bank', 'top' => 500, 'fromDate' => '2000-10-10', /// YYYY-MM-DD ]; $accounts = $yodlee->getTransactions($data); $this->assertIsArray($accounts); } }