AgentProfitCommissionProfileTest.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace Tests\Unit;
  3. use App\Models\Agent\AgentProfitCommissionProfile;
  4. use App\Models\Agent\AgentProfitCommissionAssignment;
  5. use PHPUnit\Framework\TestCase;
  6. class AgentProfitCommissionProfileTest extends TestCase
  7. {
  8. public function test_game_types_map_to_the_expected_profit_rates(): void
  9. {
  10. $profile = new AgentProfitCommissionProfile([
  11. 'live_rate' => '1', 'slot_rate' => '2', 'lottery_rate' => '3', 'sport_rate' => '4',
  12. 'esports_rate' => '5', 'fishing_rate' => '6', 'chess_rate' => '7',
  13. ]);
  14. $this->assertSame('1.0000', $profile->rateForGameType(1));
  15. $this->assertSame('2.0000', $profile->rateForGameType(2));
  16. $this->assertSame('3.0000', $profile->rateForGameType(3));
  17. $this->assertSame('4.0000', $profile->rateForGameType(4));
  18. $this->assertSame('5.0000', $profile->rateForGameType(5));
  19. $this->assertSame('6.0000', $profile->rateForGameType(6));
  20. $this->assertSame('7.0000', $profile->rateForGameType(7));
  21. $this->assertSame('0.0000', $profile->rateForGameType(99));
  22. }
  23. public function test_historical_assignment_uses_its_rate_snapshot(): void
  24. {
  25. $assignment = new AgentProfitCommissionAssignment([
  26. 'live_rate' => '11', 'slot_rate' => '12', 'lottery_rate' => '13', 'sport_rate' => '14',
  27. 'esports_rate' => '15', 'fishing_rate' => '16', 'chess_rate' => '17',
  28. ]);
  29. $this->assertSame('11.0000', $assignment->rateForGameType(1));
  30. $this->assertSame('14.0000', $assignment->rateForGameType(4));
  31. $this->assertSame('17.0000', $assignment->rateForGameType(7));
  32. $this->assertSame('0.0000', $assignment->rateForGameType(99));
  33. }
  34. }