/** * @param float $loanAmount * @param bool $expectedAcceptance * @param string $expectedAgentInstance * * @dataProvider loanApplicationDataProvider */ public function testResolveLoanRequest(float $loanAmount, bool $expectedAcceptance, string $expectedAgentInstance) { $loanRequest = new LoanApplicationRequest(new BankCustomer('Unit Test Customer'), $loanAmount); $loanApprovalResult = $this->loanSystem->resolveLoanRequest($loanRequest); $this->assertNotNull($loanApprovalResult); $this->assertInstanceOf('\\PetrePatrasc\\ChainOfResponsibility\\LoanApplicationResponse', $loanApprovalResult); $this->assertInternalType('bool', $loanApprovalResult->isApproved()); $this->assertEquals($expectedAcceptance, $loanApprovalResult->isApproved()); $this->assertNotNull($loanApprovalResult->getAgent()); $this->assertInstanceOf($expectedAgentInstance, $loanApprovalResult->getAgent()); }
/** * @inheritDoc */ public function applyForLoan(float $amount, LoanSystem $loanSystem) : LoanApplicationResponse { $loanRequest = new LoanApplicationRequest($this, $amount); return $loanSystem->resolveLoanRequest($loanRequest); }