diff --git a/tests/Library/Economy/Payment/WalletGatewayServiceTest.php b/tests/Library/Economy/Payment/WalletGatewayServiceTest.php new file mode 100644 index 0000000..5f15a22 --- /dev/null +++ b/tests/Library/Economy/Payment/WalletGatewayServiceTest.php @@ -0,0 +1,84 @@ +entityManager = static::getContainer()->get(EntityManagerInterface::class); + $this->walletService = static::getContainer()->get(WalletGatewayService::class); + } + + private function getUserAccounting(): Accounting + { + $user = new User(); + $user->setUsername('wallettestuser'); + $user->setEmail('testuser@wallet.com'); + $user->setPassword('wallettestpassword'); + + $accounting = new Accounting(); + $accounting->setCurrency('EUR'); + $accounting->setUser($user); + + $this->entityManager->persist($user); + $this->entityManager->flush(); + + return $accounting; + } + + private function getTipjarAccounting(): Accounting + { + $tipjar = new Tipjar(); + $tipjar->setName('WALLET_TEST_TIPJAR'); + + $accounting = new Accounting(); + $accounting->setTipjar($tipjar); + + $this->entityManager->persist($tipjar); + $this->entityManager->flush(); + + return $accounting; + } + + public function testTransactionsAddFunds() + { + $tipjar = $this->getTipjarAccounting(); + $user = $this->getUserAccounting(); + + $balance = $this->walletService->calcBalance($user); + + $this->assertEquals(0, $balance->amount); + $this->assertEquals($user->getCurrency(), $balance->currency); + + $transaction = new AccountingTransaction(); + $transaction->setMoney(new Money(100, 'EUR')); + $transaction->setOrigin($tipjar); + $transaction->setTarget($user); + + $this->entityManager->persist($transaction); + $this->entityManager->flush(); + + $balance = $this->walletService->calcBalance($user); + + $this->assertEquals(100, $balance->amount); + $this->assertEquals('EUR', $balance->currency); + } +}