TtnTest.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace Tests\Unit\Models;
  3. use App\Models\Setting;
  4. use App\Models\Ttn;
  5. use Illuminate\Foundation\Testing\RefreshDatabase;
  6. use Tests\TestCase;
  7. class TtnTest extends TestCase
  8. {
  9. use RefreshDatabase;
  10. public function test_reserve_next_ttn_number_uses_existing_setting_and_increments_it(): void
  11. {
  12. Setting::set(Setting::KEY_TTN_NEXT_NUMBER, 10);
  13. $reservedNumber = Ttn::reserveNextTtnNumber();
  14. $this->assertSame(10, $reservedNumber);
  15. $this->assertSame(11, Setting::getInt(Setting::KEY_TTN_NEXT_NUMBER));
  16. }
  17. public function test_reserve_next_ttn_number_falls_back_to_max_number_for_current_year(): void
  18. {
  19. Ttn::query()->create([
  20. 'year' => now()->year,
  21. 'ttn_number' => 13,
  22. 'ttn_number_suffix' => 'И',
  23. 'order_number' => 'З-13',
  24. 'order_date' => '2026-04-01',
  25. 'departure_date' => '2026-04-02',
  26. 'order_sum' => '1000',
  27. 'skus' => json_encode([1], JSON_THROW_ON_ERROR),
  28. ]);
  29. $reservedNumber = Ttn::reserveNextTtnNumber();
  30. $this->assertSame(14, $reservedNumber);
  31. $this->assertSame(15, Setting::getInt(Setting::KEY_TTN_NEXT_NUMBER));
  32. }
  33. }