예제 #1
0
 public function testBindAllocationForAccount()
 {
     $accountRepo = new AccountRepository();
     $account = $accountRepo->findOneByAccountNumber('744888386');
     $subclassesData = $this->subclassesData;
     $subclassesData['RWX']['security']['amount'] = 2156.54;
     $subclassesData['RWX']['security']['qty'] = 65;
     $subclassesData['DBC']['muni_security']['qty'] = 0;
     $subclassesData['DBC']['muni_security']['amount'] = 0;
     $subclassCollection = $this->repository->bindAllocations($this->portfolio, $account);
     $this->checkCollection($subclassCollection, $subclassesData);
 }
 public function testGetAccountsByRebalancerActionData()
 {
     $rebalancerActionRepo = new RebalancerActionRepository();
     $rebalancerActions = $rebalancerActionRepo->findAll();
     /** @var RebalancerAction $rebalancerAction */
     $rebalancerAction = $rebalancerActions->first();
     $sql = "SELECT u.*, up.client_account_managed as account_managed from rebalancer_actions ra\n                  LEFT JOIN client_portfolio_values cpv ON cpv.id = ra.client_portfolio_value_id\n                  LEFT JOIN client_portfolio cp ON cp.id = cpv.client_portfolio_id\n                  LEFT JOIN users u ON u.id = cp.client_id\n                  LEFT JOIN user_profiles up ON up.user_id = u.id\n                  WHERE ra.id = :rebalancerActionId\n        ";
     $parameters = array('rebalancerActionId' => $rebalancerAction->getId());
     $connection = WealthbotMySqlSqliteConnection::getInstance();
     $pdo = $connection->getPdo();
     $statement = $pdo->prepare($sql);
     $statement->execute($parameters);
     $result = $statement->fetch(\PDO::FETCH_ASSOC);
     $client = new Client();
     $client->setId($result['id']);
     $accounts = $this->repository->findClientAccounts($client);
     $rebalancerAction->setClient($client);
     $client->setAccountManaged(Client::ACCOUNT_MANAGED_HOUSEHOLD);
     $collection = $this->repository->getAccountsByRebalancerAction($rebalancerAction);
     $this->assertCount(4, $collection);
     //-------------------------------------------------------------------------
     $rebalancerAction->setAccountId($accounts->first()->getId());
     $client->setAccountManaged(Client::ACCOUNT_MANAGED_ACCOUNT);
     $collection = $this->repository->getAccountsByRebalancerAction($rebalancerAction);
     $account = $collection->first();
     $this->assertCount(1, $collection);
     $this->assertEquals($rebalancerAction->getAccountId(), $account->getId());
     $this->assertEquals($client->getId(), $account->getClient()->getId());
 }
예제 #3
0
 public function testFindSecuritiesByAccount()
 {
     $clientRepo = new ClientRepository();
     $client = $clientRepo->findOneBy(array('email' => '*****@*****.**'));
     $accountRepo = new AccountRepository();
     $account = $accountRepo->findOneByAccountNumber('744888385');
     $account->setClient($client);
     $securities = $this->repository->findSecuritiesByAccount($account);
     $this->assertCount(1, $securities);
     /** @var Security $security */
     $security = $securities->first();
     $this->assertEquals('SPDR Dow Jones Intl Real Estate', $security->getName());
     $this->assertEquals('RWX', $security->getSymbol());
     $this->assertEquals(0, $security->getIsPreferredBuy());
     $this->assertEquals(33.41, $security->getPrice());
     $this->assertEquals(10, $security->getQty());
 }
 public function testFindVSPForTradeData()
 {
     $riaRepo = new RiaRepository();
     $ria = $riaRepo->findOneBy(array('email' => '*****@*****.**'));
     $jobRepo = new JobRepository();
     $job = $jobRepo->findOneBy(array('user_id' => $ria->getId()));
     $accountRepo = new AccountRepository();
     $securityRepo = new SecurityRepository();
     $tradeData = new TradeData();
     $tradeData->setJobId($job->getId());
     $tradeData->setAccountId($accountRepo->findOneByAccountNumber('916985328')->getId());
     $tradeData->setSecurityId($securityRepo->findOneBySymbol('RWX')->getId());
     $vsps = $this->repository->findVSPForTradeData($tradeData);
     $vspsExpected = array(array('purchase' => 'VSP', 'purchase_date' => '02132013', 'quantity' => 36), array('purchase' => 'VSP', 'purchase_date' => '02162013', 'quantity' => 20));
     $this->assertEquals($vspsExpected, $vsps);
 }
예제 #5
0
 public function testFindLotsByAccountAndSecurity()
 {
     $accountRepo = new AccountRepository();
     $securityRepo = new SecurityRepository();
     $clientRepo = new ClientRepository();
     $portfolioRepo = new PortfolioRepository();
     $security = $securityRepo->findOneBySymbol('RWX');
     $account = $accountRepo->findOneByAccountNumber('744888386');
     $client = $clientRepo->findClientByEmail('*****@*****.**');
     $portfolioRepo->findPortfolioByClient($client);
     $account->setClient($client);
     $lots = $this->repository->findLotsByAccountAndSecurity($account, $security);
     $this->assertCount(1, $lots);
     /** @var Lot $lot */
     $lot = $lots->first();
     $this->assertEquals(2156.54, $lot->getAmount());
     $this->assertEquals(65, $lot->getQuantity());
     $this->assertTrue($lot->isOpen());
     $this->assertFalse($lot->getIsMuni());
     $security = $securityRepo->findOneBySymbol('BND');
     $lots = $this->repository->findLotsByAccountAndSecurity($account, $security);
     $this->assertTrue($lots->isEmpty());
     $account = $accountRepo->findOneByAccountNumber('214888609');
     $security = $securityRepo->findOneBySymbol('VTI');
     $account->setClient($client);
     $lots = $this->repository->findLotsByAccountAndSecurity($account, $security);
     $this->assertCount(1, $lots);
     $lot = $lots->first();
     $this->assertEquals(1000, $lot->getAmount());
     $this->assertEquals(100, $lot->getQuantity());
     $this->assertTrue($lot->isInitial());
     $this->assertTrue($lot->getIsMuni());
 }