コード例 #1
0
 public function testLoadPortfolioValues()
 {
     $clientRepo = new ClientRepository();
     $client = $clientRepo->findClientByEmail('*****@*****.**');
     $portfolio = $this->repository->findPortfolioByClient($client);
     $this->repository->loadPortfolioValues($client);
     $this->assertEquals('2451038.0', $portfolio->getTotalValue());
     $this->assertEquals('699098.0', $portfolio->getTotalInSecurities());
     $this->assertEquals('992397.0', $portfolio->getTotalCashInAccounts());
     $this->assertEquals('759543.0', $portfolio->getTotalCashInMoneyMarket());
     $this->assertEquals('0.0', $portfolio->getSasCash());
     $this->assertEquals('0.0', $portfolio->getCashBuffer());
     $this->assertEquals('0.0', $portfolio->getBillingCash());
     $notExistClient = new Client();
     $notExistPortfolio = new Portfolio();
     $notExistPortfolio->setId(0);
     $notExistClient->setPortfolio($notExistPortfolio);
     $this->repository->loadPortfolioValues($notExistClient);
     $this->assertNull($notExistPortfolio->getTotalValue());
     $this->assertNull($notExistPortfolio->getTotalInSecurities());
     $this->assertNull($notExistPortfolio->getTotalCashInAccounts());
     $this->assertNull($notExistPortfolio->getTotalCashInMoneyMarket());
     $this->assertNull($notExistPortfolio->getSasCash());
     $this->assertNull($notExistPortfolio->getCashBuffer());
     $this->assertNull($notExistPortfolio->getBillingCash());
 }
コード例 #2
0
 /**
  * Find active portfolio by client
  *
  * @param Client $client
  * @return Portfolio|null
  */
 public function findPortfolioByClient(Client $client)
 {
     $sql = "SELECT cp.portfolio_id as id FROM {$this->table} cp\n                WHERE cp.is_active = :isActive AND cp.client_id = :clientId";
     $parameters = array('isActive' => true, 'clientId' => $client->getId());
     $result = $this->db->query($sql, $parameters);
     $collection = $this->bindCollection($result);
     $portfolio = $collection->first();
     if ($portfolio) {
         $client->setPortfolio($portfolio);
         return $portfolio;
     }
     return null;
 }
コード例 #3
0
 public function testLotOrderForMuni()
 {
     $positions = array(array('client_system_account_id' => 222, 'muni_id' => 78, 'security_id' => 22222), array('client_system_account_id' => 333, 'muni_id' => null, 'security_id' => 33333));
     /** @var LotRepository $mockRepository */
     $mockRepository = $this->getMockBuilder('Model\\WealthbotRebalancer\\Repository\\LotRepository')->disableOriginalConstructor()->setMethods(array('getPositionsByPortfolio', 'getLastPositionLots'))->getMock();
     $mockRepository->expects($this->any())->method('getPositionsByPortfolio')->will($this->returnValue($positions));
     $mockRepository->expects($this->any())->method('getLastPositionLots')->will($this->returnCallback(function (Portfolio $portfolio, $securityId, $clientSystemAccountId, $isMuni = false) {
         $lotCollection = new LotCollection();
         $lot = new Lot();
         $lot->setIsMuni($isMuni);
         $lotCollection->add($lot);
         return $lotCollection;
     }));
     $mockRepository->expects($this->any())->method('findLotsByAccountAndSecurity')->will($this->returnCallback(function (Portfolio $portfolio, $securityId, $clientSystemAccountId, $isMuni = false) {
         $lotCollection = new LotCollection();
         $lot = new Lot();
         $lot->setIsMuni($isMuni);
         $lotCollection->add($lot);
         return $lotCollection;
     }));
     $lotCollection = $mockRepository->findLotsBySubclass(new Portfolio(), new Subclass(), new Account());
     $lot1 = $lotCollection->first();
     $this->assertFalse($lot1->getIsMuni());
     $lot2 = $lotCollection->next();
     $this->assertTrue($lot2->getIsMuni());
     $lot3 = $lotCollection->next();
     $this->assertFalse($lot3->getIsMuni());
     //-------------------------------------------------------------------------------------------------------------/
     $account = new Account();
     $client = new Client();
     $client->setPortfolio(new Portfolio());
     $account->setClient($client);
     $lotCollection = $mockRepository->findLotsByAccountAndSecurity($account, new Security());
     $lot1 = $lotCollection->first();
     $this->assertFalse($lot1->getIsMuni());
     $lot2 = $lotCollection->next();
     $this->assertTrue($lot2->getIsMuni());
     $lot3 = $lotCollection->next();
     $this->assertFalse($lot3->getIsMuni());
 }