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()); }
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); }
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()); }