/** * Persists the provided account. * * @param BankAccount $account * @return int The account ID */ public function persist(BankAccount $account) { if ($account->getId()) { $stmt = $this->database->prepare('update account set balance = ? where id = ?'); $stmt->execute([$account->getBalance(), $account->getId()]); return $account->getId(); } else { $stmt = $this->database->prepare('insert into account (balance) values (?)'); $stmt->execute([$account->getBalance()]); return $this->database->lastInsertId(); } }
public function testWithdrawingMoneyDecreasesTheBalanceByTheAmountWithdrawn() { $account = new BankAccount(100); $account->withdraw(100); $this->assertSame(0, $account->getBalance()); }