GetCampaignsTest.php 2.88 KB
<?php

namespace Tests\Unit;

use App\Jobs\ProcessCallLimitedAPI;
use App\Models\Account;
use App\Models\Campaigns;
use App\Models\Tokens;
use App\Models\User;
use App\Service\Contract\API;
use App\Service\Requests\APIRequest;
use Illuminate\Support\Facades\Queue;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class GetCampaignsTest extends TestCase
{
    use RefreshDatabase;

    private $request;

    protected function setUp(): void
    {
        parent::setUp();

        $account = Account::create(['name' => 'Acme Corporation']);

        $this->user = factory(User::class)->create([
            'account_id' => $account->id,
            'first_name' => 'John',
            'last_name' => 'Doe',
            'email' => 'johndoe@example.com',
            'owner' => true,
        ]);

        $this->token = factory(Tokens::class)->create([
            'created_by'    =>  $this->user->id
        ]);

        $this->request = APIRequest::getInstance(API::YANDEX)
            ->setToken($this->token)
            ->getRequest('campaigns', 'get');

    }

    public function testCallApi(){
        Queue::fake();

        Queue::assertNothingPushed();

        $this->request->call(['ids'=>[1,2,3]]);
        Queue::assertPushed(ProcessCallLimitedAPI::class);
    }

    public function testHandleApi(){
        $this->request->handle([
            'result'    =>  [
                'Campaigns' =>  [
                        [
                        'Id'    =>  1,
                        'Name'    =>  'test',
                        'TimeTargeting'    =>  ['test time schedule'],
                        'NegativeKeywords'    =>  ['Items' => [1,2,3]],
                        'BlockedIps'    =>  ['Items' => [1,2,3]],
                        'ExcludedSites'    =>  ['Items' => [1,2,3]],
                        'DailyBudget'    =>  ['Items' => [1,2,3]],
                        'TextCampaign'    =>  [
                            'BiddingStrategy'   =>[
                                'Search'    =>  [
                                    'BiddingStrategyType'   =>  12312
                                ],
                                'Network'    =>  [
                                    'BiddingStrategyType'   =>  12312
                                ]
                            ],
                            'Settings'  =>  [123,123,12],
                            'CounterIds'    =>  ['Items' => [1,2,3]],
                            'RelevantKeywords'    =>  [
                                'BudgetPercent' =>  1,
                                'OptimizeGoalId' =>  2,
                            ],
                            'AttributionModel'  => 'AL',
                            'PriorityGoals' =>  [34234,2435567,23423]
                        ],
                    ]
                ]
            ]
        ]);

        $this->assertEquals(1, Campaigns::all()->count());

    }
}