Skip to content

Instantly share code, notes, and snippets.

@PrinceDavis
Created December 7, 2017 13:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PrinceDavis/8e860c7557ba8c9e955194970b4f0e52 to your computer and use it in GitHub Desktop.
Save PrinceDavis/8e860c7557ba8c9e955194970b4f0e52 to your computer and use it in GitHub Desktop.
//prevous CreateAcountJob
<?php
namespace App\Jobs;
use App\Domain\Repositories\CompanyRepository;
use AppDomain\Repositories\UserRepository;
use App\Domains\Company;
use App\Domains\User;
class CreateAccountJob extends Job
{
public $request;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Array $request)
{
$this->request = $request;
}
/**
* Execute the job.
*
* @return void
*/
public function handle( )
{
$user = new User();
$user_repo = UserRepository($user);
$company_repo = CompanyRepository($company);
$user = $user->create($this->request);
$company->create(array_merge($this->request, ['user_id' => $user->id]));
return $user;
}
}
// in other to be tested
<?php
namespace App\Jobs;
use App\Contracts\CompanyRepository;
use App\Contracts\UserRepository;
class CreateAccountJob extends Job
{
public $request;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Array $request)
{
$this->request = $request;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(UserRepository $user, CompanyRepository $company )
{
$user = $user->create($this->request);
$company->create(array_merge($this->request, ['user_id' => $user->id]));
return $user;
}
}
// Test
<?php
use App\Domains\Repositories\CompanyRepository;
use App\Domains\Repositories\UserRepository;
use App\Jobs\CreateAccountJob;
class CreateAccountJobTest extends TestCase
{
/** @test */
public function userAccountShouldBeCreated()
{
$user = make('App\Domains\User');
$company = make('App\Domains\Company');
$request = array_merge($user->toArray(), [
"password" => "secret",
"companyName" => "TG and Sons LTD",
"companyAddress" => "18, pius eze obi ago palace Isolo lagos",
'user_id' => $user->id
]);
$job = new CreateAccountJob($request);
$userRepository = Mockery::mock(UserRepository::class);
$companyRepository = Mockery::mock(CompanyRepository::class);
$userRepository->shouldReceive('create')->with($request)->andReturn($user);
$companyRepository->shouldReceive('create')->with($request);
$myUser = $job->handle($userRepository, $companyRepository);
$this->assertEquals($myUser->fullname, $user->fullname);
$this->assertEquals($myUser->email, $user->email);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment