public function testSaveStatus() { $jobRepo = new JobRepository(); $clientRepo = new ClientRepository(); $portfolioRepo = new PortfolioRepository(); $job = $jobRepo->findFirst(); $client = $clientRepo->findClientByEmail('*****@*****.**'); $portfolio = $portfolioRepo->findPortfolioByClient($client); $rebalancerActions = $this->repository->findByPortfolioAndJob($portfolio, $job); /** @var RebalancerAction $rebalancerAction */ $rebalancerAction = $rebalancerActions->first(); $sql = "SELECT * FROM " . BaseRepository::TABLE_REBALANCER_ACTION . " ra where ra.id = :id"; $connection = WealthbotMySqlSqliteConnection::getInstance(); $pdo = $connection->getPdo(); $statement = $pdo->prepare($sql); $statement->execute(array('id' => $rebalancerAction->getId())); $result = $statement->fetch(\PDO::FETCH_ASSOC); $this->assertNotEquals(Job::REBALANCE_TYPE_NO_ACTIONS, $result['status']); $tmpStatus = $result['status']; $rebalancerAction->setStatus(Job::REBALANCE_TYPE_NO_ACTIONS); $this->repository->saveStatus($rebalancerAction); $statement = $pdo->prepare($sql); $statement->execute(array('id' => $rebalancerAction->getId())); $result = $statement->fetch(\PDO::FETCH_ASSOC); $this->assertEquals(Job::REBALANCE_TYPE_NO_ACTIONS, $result['status']); $rebalancerAction->setStatus($tmpStatus); $this->repository->saveStatus($rebalancerAction); }
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()); }
public function setUp() { $clientRepo = new ClientRepository(); $client = $clientRepo->findOneBy(array('email' => '*****@*****.**')); $portfolioRepo = new PortfolioRepository(); $this->portfolio = $portfolioRepo->findPortfolioByClient($client); $securitiesRepo = new SecurityRepository(); $portfolioSecurities = $securitiesRepo->findSecuritiesByPortfolio($this->portfolio); $this->portfolio->setSecurities($portfolioSecurities); $this->repository = new SubclassRepository(); }
public function testFindOneByPortfolioAndSecurity() { $clientRepo = new ClientRepository(); $client = $clientRepo->findOneBy(array('email' => '*****@*****.**')); $portfolioRepository = new PortfolioRepository(); $portfolio = $portfolioRepository->findPortfolioByClient($client); $securityRepo = new SecurityRepository(); $security = $securityRepo->findOneBySymbol('VTV'); $securityTransaction = $this->repository->findOneByPortfolioAndSecurity($portfolio, $security); $this->assertEquals(66, $securityTransaction->getRedemptionPenaltyInterval()); $this->assertEquals(77, $securityTransaction->getRedemptionFee()); $portfolio->setId(0); $security->setId(0); $securityTransaction = $this->repository->findOneByPortfolioAndSecurity($portfolio, $security); $this->assertNull($securityTransaction); }
public function testFindSecuritiesByPortfolio() { $clientRepo = new ClientRepository(); $client = $clientRepo->findOneBy(array('email' => '*****@*****.**')); $portfolioRepo = new PortfolioRepository(); $portfolio = $portfolioRepo->findPortfolioByClient($client); $securities = $this->repository->findSecuritiesByPortfolio($portfolio); $this->assertCount(13, $securities); foreach ($this->securitiesdData as $securityData) { /** @var Security $security */ $security = $securities->current(); $this->assertEquals($securityData['name'], $security->getName()); $this->assertEquals($securityData['symbol'], $security->getSymbol()); $this->assertEquals($securityData['price'], $security->getPrice()); $securities->next(); } }
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()); }