SMS service

This commit is contained in:
Simon Pocrnjič
2025-10-24 21:39:10 +02:00
parent 3a2eed7dda
commit 930ac83604
52 changed files with 3830 additions and 36 deletions
+41
View File
@@ -0,0 +1,41 @@
<?php
use App\Models\SmsProfile;
use App\Services\Sms\SmsClient;
use App\Services\Sms\SmsMessage;
use App\Services\Sms\SmsResult;
use App\Services\Sms\SmsService;
it('sends via service and creates a log', function () {
$profile = SmsProfile::factory()->create([
'api_username' => 'apiuser',
'api_password' => 'apipass',
]);
// Bind a fake client that always returns sent
app()->instance(SmsClient::class, new class implements SmsClient
{
public function send(App\Models\SmsProfile $profile, SmsMessage $message): SmsResult
{
return new SmsResult(status: 'sent', providerMessageId: '99999');
}
public function getCreditBalance(App\Models\SmsProfile $profile): int
{
return 0;
}
public function getPriceQuotes(App\Models\SmsProfile $profile): array
{
return [];
}
});
$sms = app(SmsService::class);
$log = $sms->sendRaw($profile, '+38640111222', 'Hello');
expect($log->id)->not->toBeNull();
expect($log->profile_id)->toBe($profile->id);
expect($log->status)->toBe('sent');
expect($log->provider_message_id)->toBe('99999');
});