Browse Source

Add job creation activity log

pull/72/head
Nafies Luthfi 5 years ago
parent
commit
02352cb07d
  1. 9
      app/Entities/Projects/Job.php
  2. 15
      app/Events/Jobs/Created.php
  3. 25
      app/Listeners/Jobs/LogJobCreationActivity.php
  4. 3
      app/Providers/EventServiceProvider.php
  5. 20
      tests/Unit/Models/ActivityTest.php

9
app/Entities/Projects/Job.php

@ -17,6 +17,15 @@ class Job extends Model
use PresentableTrait;
/**
* The event map for the model.
*
* @var array
*/
protected $dispatchesEvents = [
'created' => 'App\Events\Jobs\Created',
];
/**
* @var \App\Entities\Projects\JobPresenter
*/
protected $presenter = JobPresenter::class;

15
app/Events/Jobs/Created.php

@ -0,0 +1,15 @@
<?php
namespace App\Events\Jobs;
use App\Entities\Projects\Job;
class Created
{
public $job;
public function __construct(Job $job)
{
$this->job = $job;
}
}

25
app/Listeners/Jobs/LogJobCreationActivity.php

@ -0,0 +1,25 @@
<?php
namespace App\Listeners\Jobs;
use App\Entities\Users\Activity;
use App\Events\Jobs\Created;
class LogJobCreationActivity
{
public function handle(Created $event)
{
$job = $event->job;
$activityEntry = [
'type' => 'job_created',
'parent_id' => null,
'user_id' => auth()->id(),
'object_id' => $job->id,
'object_type' => 'jobs',
'data' => null,
];
Activity::create($activityEntry);
}
}

3
app/Providers/EventServiceProvider.php

@ -19,6 +19,9 @@ class EventServiceProvider extends ServiceProvider
'App\Events\Projects\Updated' => [
'App\Listeners\Projects\LogProjectUpdateActivity',
],
'App\Events\Jobs\Created' => [
'App\Listeners\Jobs\LogJobCreationActivity',
],
];
/**

20
tests/Unit/Models/ActivityTest.php

@ -2,6 +2,7 @@
namespace Tests\Unit\Models;
use App\Entities\Projects\Job;
use App\Entities\Projects\Project;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
@ -14,7 +15,7 @@ class ActivityTest extends TestCase
public function it_creates_project_creation_activities()
{
$admin = $this->adminUserSigningIn();
$project = factory(Project::class)->create(['name' => 'New Project']);
$project = factory(Project::class)->create();
$this->seeInDatabase('user_activities', [
'type' => 'project_created',
@ -48,4 +49,21 @@ class ActivityTest extends TestCase
]),
]);
}
/** @test */
public function it_records_job_creation_activities()
{
$admin = $this->adminUserSigningIn();
$project = factory(Project::class)->create();
$job = factory(Job::class)->create(['project_id' => $project->id]);
$this->seeInDatabase('user_activities', [
'type' => 'job_created',
'parent_id' => null,
'user_id' => $admin->id,
'object_id' => $job->id,
'object_type' => 'jobs',
'data' => null,
]);
}
}
Loading…
Cancel
Save