mirror of
https://github.com/OPSnet/Gazelle.git
synced 2026-01-17 03:04:47 -05:00
463 lines
24 KiB
PHP
463 lines
24 KiB
PHP
<?php
|
|
|
|
namespace Gazelle;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use GazelleUnitTest\Helper;
|
|
|
|
class DonorTest extends TestCase {
|
|
protected User\Donor $donor;
|
|
|
|
public function setUp(): void {
|
|
$this->donor = new User\Donor(
|
|
Helper::makeUser('donor.' . randomString(6), 'donor', clearInbox: true)
|
|
);
|
|
}
|
|
|
|
public function tearDown(): void {
|
|
$user = $this->donor->user();
|
|
$this->donor->remove();
|
|
$user->remove();
|
|
}
|
|
|
|
public function testDonorCreate(): void {
|
|
$donor = $this->donor;
|
|
|
|
// before being a donor
|
|
$this->assertFalse($donor->isDonor(), 'donor-is-new');
|
|
$this->assertNull($donor->expirationDate(), 'donor-new-no-expiry');
|
|
$this->assertNull($donor->lastDonationDate(), 'donor-new-no-last-donation');
|
|
$this->assertFalse($donor->profileInfo(1), 'donor-new-no-profile-1');
|
|
$this->assertFalse($donor->profileInfo(2), 'donor-new-no-profile-2');
|
|
$this->assertFalse($donor->profileInfo(3), 'donor-new-no-profile-3');
|
|
$this->assertFalse($donor->profileInfo(4), 'donor-new-no-profile-4');
|
|
$this->assertEquals('', $donor->heart($donor->user()), 'donor-new-no-heart');
|
|
$this->assertEquals(0, $donor->collageTotal(), 'donor-new-no-collage');
|
|
|
|
// secondary class
|
|
$this->assertEquals(0, $donor->removeDonorStatus(), 'donor-new-remove-status');
|
|
$this->assertEquals(1, $donor->addDonorStatus(), 'donor-new-add-status');
|
|
$this->assertEquals(1, $donor->removeDonorStatus(), 'donor-new-clear-status');
|
|
|
|
// test body
|
|
$body = $donor->messageBody('EUR', 12.34, 1, 1);
|
|
$this->assertStringContainsString('[b]You Contributed:[/b] 12.34 EUR', $body, 'donor-msg-amount');
|
|
$this->assertStringContainsString('[b]You Received:[/b] 1 Donor Point', $body, 'donor-msg-point');
|
|
$this->assertStringContainsString('[b]Your Donor Rank:[/b] Donor Rank # 1', $body, 'donor-msg-rank');
|
|
|
|
// small donation
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: 9.75,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit source',
|
|
reason: 'phpunit reason',
|
|
),
|
|
'donor-small'
|
|
);
|
|
$this->assertTrue($donor->isDonor(), 'donor-is-now-new');
|
|
$this->assertEquals(0, $donor->invitesReceived(), 'donor-no-invites');
|
|
|
|
$inbox = $donor->user()->inbox();
|
|
$this->assertEquals(1, $inbox->messageTotal(), 'donor-inbox-small-total');
|
|
$list = $inbox->messageList(new Manager\PM($donor->user()), 1, 0);
|
|
$this->assertStringContainsString('Your contribution has been received and credited', $list[0]->subject(), 'inbox-pm-subject');
|
|
Helper::clearInbox($donor->user());
|
|
|
|
// second donation
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit second source',
|
|
reason: 'phpunit second reason',
|
|
),
|
|
'donor-2nd-point'
|
|
);
|
|
$inbox->messageList(new Manager\PM($donor->user()), 2, 0);
|
|
$this->assertEquals(1, $donor->rank(), 'donor-rank-1');
|
|
$this->assertEquals(1, $donor->totalRank(), 'donor-total-rank-1');
|
|
$this->assertEquals(0, $donor->specialRank(), 'donor-not-special-rank-1');
|
|
$this->assertEquals(2, $donor->invitesReceived(), 'donor-received-2-invites');
|
|
$this->assertEquals('1 [Red]', $donor->rankLabel(), 'donor-rank-label-1');
|
|
$this->assertEquals(1, $donor->collageTotal(), 'donor-collage-1');
|
|
$this->assertEquals('Donor', $donor->iconHoverText(), 'donor-icon-hover-text-1');
|
|
$this->assertEquals(STATIC_SERVER . '/common/symbols/donor.png', $donor->heartIcon(), 'donor-heart-icon-1');
|
|
$this->assertGreaterThan(0, $donor->leaderboardRank(), 'donor-leaderboard-rank-1');
|
|
|
|
$this->assertFalse($donor->avatarHover(), 'donor-avatar-hover-1');
|
|
$this->assertFalse($donor->avatarHoverText(), 'donor-avatar-hover-text-1');
|
|
$this->assertFalse($donor->profileInfo(1), 'donor-profile1-info-1');
|
|
$this->assertFalse($donor->profileTitle(1), 'donor-profile1-title-1');
|
|
$this->assertFalse($donor->hasForum(), 'donor-has-forum-1');
|
|
|
|
$this->assertTrue($donor->isVisible(), 'donor-is-visible');
|
|
$this->assertFalse($donor->setVisible(false), 'donor-is-now-invisible');
|
|
$this->assertFalse($donor->isVisible(), 'donor-is-hidden');
|
|
$this->assertTrue($donor->setVisible(true), 'donor-is-now-visible');
|
|
$this->assertTrue($donor->isVisible(), 'donor-is-not-hidden');
|
|
}
|
|
|
|
public function testDonorAdjust(): void {
|
|
$donor = $this->donor;
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE * 0.75,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit adjust source',
|
|
reason: 'phpunit adjust reason',
|
|
),
|
|
'donor-donate-rank-2'
|
|
);
|
|
$this->assertTrue($donor->isDonor(), 'donor-adj-is-donor');
|
|
$this->assertEquals(0, $donor->rank(), 'donor-adj-no-rank');
|
|
$this->assertEquals(0, $donor->totalRank(), 'donor-adj-no-total-rank');
|
|
$this->assertEquals(1, $donor->adjust(7, 12, 'phpunit adjust 1', $donor->user()), 'donor-adj-rank-plus');
|
|
$this->assertEquals(7, $donor->rank(), 'donor-adj-1-rank');
|
|
$this->assertEquals(12, $donor->totalRank(), 'donor-adj-1-total-rank');
|
|
$this->assertEquals(1, $donor->adjust(-4, -10, 'phpunit adjust 2', $donor->user()), 'donor-adj-rank-minus');
|
|
$this->assertEquals(3, $donor->rank(), 'donor-adj-2-rank');
|
|
$this->assertEquals(2, $donor->totalRank(), 'donor-adj-2-total-rank');
|
|
|
|
$this->assertEquals(0, $donor->specialRank(), 'donor-adj-no-special-rank');
|
|
$this->assertEquals(1, $donor->setSpecialRank(1), 'donor-set-special-1');
|
|
$this->assertEquals(3, $donor->setSpecialRank(3), 'donor-set-special-3');
|
|
$this->assertTrue($donor->hasMaxSpecialRank(), 'donor-set-has-max-special');
|
|
}
|
|
|
|
public function testDonorAvatar(): void {
|
|
$donor = $this->donor;
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE * 50,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit avatar source',
|
|
reason: 'phpunit avatar reason',
|
|
),
|
|
'donor-donate-rank-2'
|
|
);
|
|
$this->assertTrue(
|
|
$donor->updateAvatarHoverText('avatar hover')
|
|
->updateAvatarHover('https://www.example.com/donor.jpg')
|
|
->modify(),
|
|
'donor-avatar-set'
|
|
);
|
|
$this->assertEquals('', $donor->user()->avatar(), 'donor-avatar-blank');
|
|
$this->assertEquals(
|
|
[
|
|
"image" => USER_DEFAULT_AVATAR,
|
|
"hover" => "https://www.example.com/donor.jpg",
|
|
"text" => "avatar hover",
|
|
],
|
|
$donor->user()->avatarComponentList($donor->user()),
|
|
'donor-avatar-component'
|
|
);
|
|
}
|
|
|
|
public function testDonorStaff(): void {
|
|
$donor = $this->donor;
|
|
$donor->user()->setField('PermissionID', MOD)->modify();
|
|
$this->assertTrue($donor->hasForum(), 'donor-mod-has-forum');
|
|
$this->assertTrue($donor->hasRankAbove(0), 'donor-mod-has-rank');
|
|
$this->assertTrue($donor->hasMaxSpecialRank(), 'donor-mod-has-max-special');
|
|
$this->assertEquals('Never', $donor->rankExpiry(), 'donor-mod-rank-expiry');
|
|
$this->assertEquals('∞ [Diamond]', $donor->rankLabel(), 'donor-mod-rank-label');
|
|
$this->assertEquals(STATIC_SERVER . '/common/symbols/donor_6.png', $donor->heartIcon(), 'donor-mod-heart-icon');
|
|
$this->assertEquals('', $donor->profileInfo(1), 'donor-mod-profile1-info');
|
|
$this->assertEquals('', $donor->profileTitle(1), 'donor-mod-profile1-title');
|
|
$this->assertEquals('', $donor->profileInfo(2), 'donor-mod-profile2-info');
|
|
$this->assertEquals('', $donor->profileTitle(2), 'donor-mod-profile2-title');
|
|
$this->assertEquals('', $donor->profileInfo(3), 'donor-mod-profile3-info');
|
|
$this->assertEquals('', $donor->profileTitle(3), 'donor-mod-profile3-title');
|
|
$this->assertEquals('', $donor->profileInfo(4), 'donor-mod-profile4-info');
|
|
$this->assertEquals('', $donor->profileTitle(4), 'donor-mod-profile4-title');
|
|
}
|
|
|
|
public function testDonorRank(): void {
|
|
$donor = $this->donor;
|
|
$source = 'phpunit rank 2 source';
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE * 2,
|
|
xbtRate: 0.06125,
|
|
source: $source,
|
|
reason: 'phpunit rank 2 reason',
|
|
),
|
|
'donor-donate-rank-2'
|
|
);
|
|
|
|
$this->assertEquals(1, $donor->user()->inbox()->messageTotal(), 'donor-inbox-rank-2');
|
|
$this->assertEquals(2, $donor->rank(), 'donor-rank-2');
|
|
$this->assertEquals(2, $donor->totalRank(), 'donor-total-rank-2');
|
|
$this->assertEquals(0, $donor->specialRank(), 'donor-not-special-rank-2');
|
|
$this->assertEquals('2 [Copper]', $donor->rankLabel(), 'donor-rank-label-2');
|
|
$this->assertEquals(2, $donor->invitesReceived(), 'donor-received-2-for-2-invites');
|
|
$this->assertEquals(2, $donor->collageTotal(), 'donor-collage-2');
|
|
$this->assertStringContainsString('1 month', $donor->rankExpiry(), 'donor-rank-expiry-2');
|
|
$this->assertEquals('donate.php', $donor->iconLink(), 'donor-icon-link-2');
|
|
$this->assertEquals('donate.php', $donor->iconLink(), 'donor-icon-link-2');
|
|
$this->assertEquals('Donor', $donor->iconHoverText(), 'donor-icon-hover-text-2');
|
|
$this->assertEquals(STATIC_SERVER . '/common/symbols/donor_2.png', $donor->heartIcon(), 'donor-heart-icon-2');
|
|
$this->assertTrue($donor->hasForum(), 'donor-has-forum-2');
|
|
|
|
$this->assertTrue($donor->hasRankAbove(1), 'donor-has-above-rank1-2');
|
|
$donor->updateProfileInfo(1, 'phpunit donor info 1');
|
|
$this->assertFalse($donor->user()->dirty(), 'donor-user-clean-2');
|
|
$this->assertTrue($donor->dirty(), 'donor-needs-update-2');
|
|
$this->assertTrue($donor->modify(), 'donor-update-profile1-info-2');
|
|
$this->assertEquals('phpunit donor info 1', $donor->profileInfo(1), 'donor-profile1-info-2');
|
|
$this->assertEquals('', $donor->profileInfo(2), 'donor-profile2-info-initial-2');
|
|
$this->assertFalse($donor->hasRankAbove(2), 'donor-has-above-rank2-2');
|
|
$this->assertFalse($donor->updateProfileInfo(2, 'phpunit donor info 2')->modify(), 'donor-no-profile2-info-2');
|
|
$this->assertTrue($donor->updateIconHoverText('hover')->modify(), 'donor-update-icon-hover-2');
|
|
$this->assertEquals('hover', $donor->iconHoverText(), 'donor-icon-hover-2');
|
|
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit rank 3 source',
|
|
reason: 'phpunit rank 3 reason',
|
|
),
|
|
'donor-donate-rank-3'
|
|
);
|
|
$this->assertEquals(3, $donor->rank(), 'donor-rank-3');
|
|
$this->assertEquals(3, $donor->totalRank(), 'donor-total-rank-3');
|
|
$this->assertEquals(0, $donor->specialRank(), 'donor-not-special-rank-3');
|
|
$this->assertEquals(3, $donor->collageTotal(), 'donor-collage-3');
|
|
$this->assertEquals('3 [Bronze]', $donor->rankLabel(), 'donor-rank-label-2');
|
|
$this->assertEquals(4, $donor->invitesReceived(), 'donor-received-3-for-4-invites');
|
|
$this->assertEquals(STATIC_SERVER . '/common/symbols/donor_3.png', $donor->heartIcon(), 'donor-heart-icon-3');
|
|
$this->assertTrue($donor->updateProfileInfo(2, 'phpunit donor info 2')->modify(), 'donor-profile2-info-2');
|
|
$this->assertEquals('', $donor->avatarHoverText(), 'donor-no-avatar-hover-text-2');
|
|
$this->assertTrue($donor->updateAvatarHoverText('avatar hover')->modify(), 'donor-update-avatar-hover-2');
|
|
$this->assertEquals('avatar hover', $donor->avatarHoverText(), 'donor-no-avatar-hover-text-2');
|
|
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit rank 4 source',
|
|
reason: 'phpunit rank 4 reason',
|
|
),
|
|
'donor-donate-rank-4'
|
|
);
|
|
$this->assertEquals(4, $donor->rank(), 'donor-rank-4');
|
|
$this->assertEquals(4, $donor->totalRank(), 'donor-total-rank-4');
|
|
$this->assertEquals(0, $donor->specialRank(), 'donor-not-special-rank-4');
|
|
$this->assertEquals(4, $donor->collageTotal(), 'donor-collage-4');
|
|
$this->assertEquals('4 [Silver]', $donor->rankLabel(), 'donor-rank-label-2');
|
|
$this->assertEquals(STATIC_SERVER . '/common/symbols/donor_4.png', $donor->heartIcon(), 'donor-heart-icon-4');
|
|
$this->assertTrue($donor->updateProfileInfo(3, 'phpunit donor info 3')->modify(), 'donor-profile3-info-2');
|
|
$this->assertTrue($donor->updateIconLink('https://example.com/')->modify(), 'donor-update-icon-link-2');
|
|
$this->assertEquals('https://example.com/', $donor->iconLink(), 'donor-icon-link-2');
|
|
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit rank 5 source',
|
|
reason: 'phpunit rank 5 reason',
|
|
),
|
|
'donor-donate-rank-5'
|
|
);
|
|
$this->assertEquals(5, $donor->rank(), 'donor-rank-5');
|
|
$this->assertEquals(5, $donor->totalRank(), 'donor-total-rank-5');
|
|
$this->assertEquals(0, $donor->specialRank(), 'donor-not-special-rank-5');
|
|
$this->assertEquals(5, $donor->collageTotal(), 'donor-collage-5');
|
|
$this->assertEquals('4 [Silver]', $donor->rankLabel(), 'donor-rank-label-4');
|
|
$this->assertEquals(STATIC_SERVER . '/common/symbols/donor_4.png', $donor->heartIcon(), 'donor-heart-icon-4');
|
|
|
|
$this->assertFalse($donor->forumUseComma(), 'donor-has-forum-comma');
|
|
$this->assertTrue($donor->setForumDecoration('The', 'Person', false), 'donor-set-forum-decoration');
|
|
$this->assertEquals('The', $donor->forumPrefix(), 'donor-has-forum-prefix');
|
|
$this->assertEquals('Person', $donor->forumSuffix(), 'donor-has-forum-suffix');
|
|
$this->assertEquals('Person', $donor->forumSuffix(), 'donor-has-forum-suffix');
|
|
$this->assertEquals("The {$donor->user()->username()} Person", $donor->username(decorated: true), 'donor-has-forum-comma-username');
|
|
$this->assertTrue($donor->setForumDecoration('The', 'Person', true), 'donor-set-forum-comma');
|
|
$this->assertTrue($donor->forumUseComma(), 'donor-has-forum-comma');
|
|
$this->assertEquals("The {$donor->user()->username()}, Person", $donor->username(decorated: true), 'donor-has-forum-comma-username');
|
|
$this->assertEquals($donor->user()->username(), $donor->username(decorated: false), 'donor-bare-username');
|
|
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit rank 6 source',
|
|
reason: 'phpunit rank 6 reason',
|
|
),
|
|
'donor-donate-rank-6'
|
|
);
|
|
$this->assertEquals(6, $donor->rank(), 'donor-rank-6');
|
|
$this->assertEquals(6, $donor->totalRank(), 'donor-total-rank-6');
|
|
$this->assertEquals(0, $donor->specialRank(), 'donor-not-special-rank-5');
|
|
$this->assertEquals(5, $donor->collageTotal(), 'donor-collage-6-is-5');
|
|
$this->assertEquals('5 [Gold]', $donor->rankLabel(), 'donor-rank-label-5');
|
|
$this->assertEquals(STATIC_SERVER . '/common/symbols/donor_5.png', $donor->heartIcon(), 'donor-heart-icon-5');
|
|
$this->assertCount(5, $donor->historyList(), 'donor-history-list');
|
|
$this->assertFalse($donor->hasDonorPick(), 'donor-has-no-donor-pick');
|
|
$this->assertFalse($donor->avatarHover(), 'donor-has-no-avatar-hover');
|
|
$this->assertFalse($donor->updateAvatarHover('https://www.example.com/example.jpg')->modify(), 'donor-no-set-avatar-hover');
|
|
|
|
// expire a donation
|
|
$db = DB::DB();
|
|
$db->prepared_query("
|
|
UPDATE users_donor_ranks SET
|
|
RankExpirationTime = now() - INTERVAL 767 HOUR
|
|
WHERE UserID = (SELECT UserID FROM donations WHERE source = ?)
|
|
", $source
|
|
);
|
|
$this->assertEquals(1, $db->affected_rows(), 'donor-found-expirable');
|
|
|
|
$manager = new Manager\Donation();
|
|
$this->assertEquals(1, $manager->expireRanks(), 'donor-expiry');
|
|
$donor->flush();
|
|
$this->assertEquals(5, $donor->rank(), 'donor-rank-now-5');
|
|
$this->assertEquals(6, $donor->totalRank(), 'donor-total-rank-still-6');
|
|
}
|
|
|
|
public function testDonorSpecial(): void {
|
|
$donor = $this->donor;
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE * 10,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit special 1 source',
|
|
reason: 'phpunit special 1 reason',
|
|
),
|
|
'donor-donate-special-1'
|
|
);
|
|
$this->assertEquals(1, $donor->specialRank(), 'donor-special-rank-1');
|
|
$this->assertTrue($donor->hasDonorPick(), 'donor-has-donor-pick');
|
|
$this->assertEquals(5, $donor->collageTotal(), 'donor-collage-special-1');
|
|
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE * 10,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit special 2 source',
|
|
reason: 'phpunit special 2 reason',
|
|
),
|
|
'donor-donate-special-2'
|
|
);
|
|
$this->assertEquals(2, $donor->specialRank(), 'donor-special-rank-2');
|
|
$this->assertEquals('', $donor->avatarHover(), 'donor-has-empty-avatar-hover');
|
|
$this->assertTrue($donor->updateAvatarHover('https://www.example.com/example.jpg')->modify(), 'donor-set-avatar-hover');
|
|
$this->assertEquals('https://www.example.com/example.jpg', $donor->avatarHover(), 'donor-has-avatar-hover');
|
|
|
|
$this->assertEquals(
|
|
1,
|
|
$donor->donate(
|
|
amount: DONOR_RANK_PRICE * 30,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit special 3 source',
|
|
reason: 'phpunit special 3 reason',
|
|
),
|
|
'donor-donate-special-3'
|
|
);
|
|
$this->assertEquals(3, $donor->specialRank(), 'donor-special-rank-3');
|
|
$this->assertTrue($donor->hasMaxSpecialRank(), 'donor-has-max-special-rank');
|
|
$this->assertEquals('∞ [Diamond]', $donor->rankLabel(), 'donor-rank-label-infin');
|
|
$this->assertEquals('Never', $donor->rankExpiry(), 'donor-rank-expire-never');
|
|
|
|
$this->assertTrue($donor->updateProfileTitle(1, 'phpunit donor title 1')->modify(), 'donor-info-title-1');
|
|
$this->assertTrue($donor->updateProfileTitle(2, 'phpunit donor title 2')->modify(), 'donor-info-title-2');
|
|
$this->assertTrue($donor->updateProfileTitle(3, 'phpunit donor title 3')->modify(), 'donor-info-title-3');
|
|
$this->assertTrue($donor->updateProfileTitle(4, 'phpunit donor title 4')->modify(), 'donor-info-title-4');
|
|
$this->assertEquals('phpunit donor title 1', $donor->profileTitle(1), 'donor-infin-title-1');
|
|
$this->assertEquals('phpunit donor title 2', $donor->profileTitle(2), 'donor-infin-title-2');
|
|
$this->assertEquals('phpunit donor title 3', $donor->profileTitle(3), 'donor-infin-title-3');
|
|
$this->assertEquals('phpunit donor title 4', $donor->profileTitle(4), 'donor-infin-title-4');
|
|
$this->assertEquals('', $donor->profileInfo(1), 'donor-has-infin-profile-1');
|
|
$this->assertEquals('', $donor->profileInfo(2), 'donor-has-infin-profile-2');
|
|
$this->assertEquals('', $donor->profileInfo(3), 'donor-has-infin-profile-3');
|
|
$this->assertEquals('', $donor->profileInfo(4), 'donor-has-infin-profile-4');
|
|
}
|
|
|
|
public function testDonorManager(): void {
|
|
$manager = new Manager\Donation();
|
|
$userMan = new Manager\User();
|
|
$initial = $manager->rewardTotal();
|
|
$initialGrand = $manager->grandTotal();
|
|
|
|
$this->donor->donate(
|
|
amount: DONOR_RANK_PRICE * 2.75,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit rank 2a source',
|
|
reason: 'phpunit rank 2a reason',
|
|
);
|
|
$this->assertEquals($initial + 1, $manager->rewardTotal(), 'donor-manager-reward-total');
|
|
|
|
$this->donor->donate(
|
|
amount: DONOR_RANK_PRICE * 3.75,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit rank 2b source',
|
|
reason: 'phpunit rank 2b reason',
|
|
);
|
|
$this->assertEquals(
|
|
number_format($initialGrand + DONOR_RANK_PRICE * 6.5 / 0.06125, 4),
|
|
number_format($manager->grandTotal(), 4),
|
|
'donor-manager-grand-total'
|
|
);
|
|
|
|
Helper::flushDonationMonth(1); // can be required when testing locally
|
|
$this->assertGreaterThan(0, $manager->topDonorList(100, $userMan), 'donor-top-donor');
|
|
$this->assertGreaterThan($initial + DONOR_RANK_PRICE, $manager->totalMonth(1), 'donor-manager-month');
|
|
$username = $this->donor->user()->username();
|
|
$entry = array_values(array_filter($manager->rewardPage(null, 100, 0), fn($d) => $d['user_id'] == $this->donor->user()->id))[0];
|
|
$this->assertEquals($username, $entry['Username'], 'donor-manager-reward-username');
|
|
$entry = array_values(array_filter($manager->rewardPage($username, 100, 0), fn($d) => $d['user_id'] == $this->donor->user()->id))[0];
|
|
$this->assertEquals($username, $entry['Username'], 'donor-manager-reward-search');
|
|
|
|
$timeline = $manager->timeline();
|
|
$last = end($timeline);
|
|
|
|
Helper::flushDonationMonth(1);
|
|
$this->assertLessThanOrEqual($manager->totalMonth(1), $last['Amount'], 'donor-manager-timeline');
|
|
|
|
$paginator = new Util\Paginator(USERS_PER_PAGE, 1)->setTotal($manager->rewardTotal());
|
|
Base::staticRequestContext()->setViewer($this->donor->user());
|
|
Util\Twig::setViewer($this->donor->user());
|
|
global $SessionID;
|
|
$SessionID = 'phpunit';
|
|
$render = (Util\Twig::factory($userMan))->render('donation/reward-list.twig', [
|
|
'paginator' => $paginator,
|
|
'user' => $manager->rewardPage(null, $paginator->limit(), $paginator->offset()),
|
|
'search' => null,
|
|
]);
|
|
$this->assertStringContainsString($this->donor->link(), $render, 'donor-manager-reward-page-render');
|
|
}
|
|
|
|
public function testDonorTwig(): void {
|
|
$user = $this->donor->user();
|
|
$twig = Util\Twig::factory(new Manager\User());
|
|
$template = $twig->createTemplate('{% if user is donor %}yes{% else %}no{% endif %}');
|
|
$this->assertEquals('no', $template->render(['user' => $user]), 'twig-test-not-donor');
|
|
|
|
$this->donor->donate(
|
|
amount: DONOR_RANK_PRICE,
|
|
xbtRate: 0.06125,
|
|
source: 'phpunit donor source',
|
|
reason: 'phpunit donor reason',
|
|
);
|
|
$this->assertEquals('yes', $template->render(['user' => $user]), 'twig-test-not-donor');
|
|
|
|
$panel = $twig->render('donation/admin-panel.twig', [
|
|
'donor' => $this->donor,
|
|
]);
|
|
$this->assertStringStartsWith('<table class="layout" id="donation_box">', $panel, 'twig-test-admin-donor-begin');
|
|
$this->assertStringEndsWith("</table>\n", $panel, 'twig-test-admin-donor-end');
|
|
}
|
|
}
|