public function testFindByNameForPortfolio() { $subclass = $this->repository->findByNameForPortfolio('Short', $this->portfolio); $this->assertEquals(6, $subclass->getToleranceBand()); $this->assertEquals(7, $subclass->getPriority()); $this->assertNotNull($subclass->getId()); $subclass = $this->repository->findByNameForPortfolio('not_exist_name', $this->portfolio); $this->assertNull($subclass); }
public function testFindLotsBySubclass() { $subclassRepo = new SubclassRepository(); $clientRepo = new ClientRepository(); $portfolioRepo = new PortfolioRepository(); $securityRepo = new SecurityRepository(); $accountRepo = new AccountRepository(); $security = $securityRepo->findOneBySymbol('RWX'); $client = $clientRepo->findClientByEmail('*****@*****.**'); $portfolioRepo->findPortfolioByClient($client); $subclass = $subclassRepo->findByNameForPortfolio('Short', $client->getPortfolio()); $subclass->setSecurity($security); $lots = $this->repository->findLotsBySubclass($client->getPortfolio(), $subclass); $this->assertCount(2, $lots); /** @var Lot $lot */ $lot = $lots->first(); $this->assertEquals(390.49, $lot->getAmount()); $this->assertEquals(10, $lot->getQuantity()); $this->assertTrue($lot->isOpen()); $this->assertFalse($lot->getIsMuni()); $lot = $lots->next(); $this->assertEquals(2156.54, $lot->getAmount()); $this->assertEquals(65, $lot->getQuantity()); $this->assertTrue($lot->isOpen()); $this->assertFalse($lot->getIsMuni()); //---------------------------------------------------------------------------------// $account = $accountRepo->findOneByAccountNumber('744888386'); $lots = $this->repository->findLotsBySubclass($client->getPortfolio(), $subclass, $account); $this->assertCount(1, $lots); $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('VTI'); $subclass->setSecurity($security); $lots = $this->repository->findLotsBySubclass($client->getPortfolio(), $subclass); $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()); }
public function fakeStart($jobId) { /** @var JobRepository $jobRepo */ $jobRepo = $this->getRepository('Job'); /** @var Job $job */ $job = $jobRepo->find($jobId); if (!$job) { return; } /** @var ClientRepository $clientRepo */ $clientRepo = $this->getRepository('Client'); /** @var RebalancerActionRepository $rebalancerActionRepo */ $rebalancerActionRepo = $this->getRepository('RebalancerAction'); $rebalancerActions = $rebalancerActionRepo->bindForJob($job); /** @var AccountRepository $accountRepo */ $accountRepo = $this->getRepository('Account'); /** @var LotRepository $lotRepository */ $lotRepository = $this->getRepository('Lot'); /** @var SecurityRepository $securityRepo */ $securityRepo = $this->getRepository('Security'); /** @var PortfolioRepository $portfolioRepo */ $portfolioRepo = $this->getRepository('Portfolio'); /** @var RebalancerQueueRepository $rebalancerQueueRepo */ $rebalancerQueueRepo = $this->getRepository('RebalancerQueue'); $account744888385 = $accountRepo->findOneByAccountNumber('744888385'); $account744888386 = $accountRepo->findOneByAccountNumber('744888386'); $securityRWX = $securityRepo->findOneBySymbol('RWX'); $securityVTI = $securityRepo->findOneBySymbol('VTI'); $subclassRepo = new SubclassRepository(); /** @var RebalancerAction $rebalancerAction */ foreach ($rebalancerActions as $rebalancerAction) { $rebalancerAction->setStatus($job->getRebalanceType()); $client = $clientRepo->getClientByRebalancerAction($rebalancerAction); $portfolio = $portfolioRepo->findPortfolioByClient($client); $account744888385->setClient($client); $account744888386->setClient($client); $subclass = $subclassRepo->findByNameForPortfolio('Large Value', $portfolio); $queueItem = new QueueItem(); $queueItem->setStatus(QueueItem::STATUS_SELL); $queueItem->setLot($lotRepository->findLastLotByAccountAndSecurity($account744888385, $securityRWX)); $queueItem->setAccount($account744888385); $queueItem->setAmount(1000); $queueItem->setQuantity(50); $queueItem->setSecurity($securityRWX); $queueItem->setSubclass($subclass); $queueItem->setRebalancerActionId($rebalancerAction->getId()); $rebalancerQueueRepo->save($queueItem); $queueItem = new QueueItem(); $queueItem->setStatus(QueueItem::STATUS_BUY); $queueItem->setAccount($account744888386); $queueItem->setAmount(700); $queueItem->setQuantity(7); $queueItem->setSecurity($securityVTI); $queueItem->setSubclass($subclass); $queueItem->setRebalancerActionId($rebalancerAction->getId()); $rebalancerQueueRepo->save($queueItem); $rebalancerActionRepo->saveStatus($rebalancerAction); } $jobRepo->finish($job); }