Skip to content

Commit 1173338

Browse files
committed
add unit. Atomic rollback
1 parent 9842ecb commit 1173338

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

tests/Units/Service/AtomicServiceTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,37 @@ public function testBlockIter3(): void
6666

6767
self::assertSame($iterations * 2000, $user->balanceInt);
6868
}
69+
70+
public function testRollback(): void
71+
{
72+
$atomic = app(AtomicServiceInterface::class);
73+
74+
/** @var Buyer $user */
75+
$user = BuyerFactory::new()->create();
76+
77+
$user->deposit(1000);
78+
79+
self::assertSame(1000, $user->balanceInt);
80+
81+
try {
82+
$atomic->block($user, function () use ($user) {
83+
$user->forceWithdraw(1000);
84+
$user->forceWithdraw(1000);
85+
$user->forceWithdraw(1000);
86+
$user->deposit(5000);
87+
88+
throw new \Exception();
89+
});
90+
91+
self::assertTrue(false); // check
92+
} catch (\Throwable) {
93+
}
94+
95+
self::assertTrue($user->wallet->refreshBalance()); // check
96+
97+
$userFromDb = Buyer::find($user->getKey());
98+
99+
self::assertSame(1000, $userFromDb->balanceInt);
100+
self::assertSame(1000, $user->balanceInt);
101+
}
69102
}

0 commit comments

Comments
 (0)