diff --git a/app/Entities/Projects/Job.php b/app/Entities/Projects/Job.php index cb87fb5..57086e3 100755 --- a/app/Entities/Projects/Job.php +++ b/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; diff --git a/app/Events/Jobs/Created.php b/app/Events/Jobs/Created.php new file mode 100644 index 0000000..624967a --- /dev/null +++ b/app/Events/Jobs/Created.php @@ -0,0 +1,15 @@ +job = $job; + } +} diff --git a/app/Listeners/Jobs/LogJobCreationActivity.php b/app/Listeners/Jobs/LogJobCreationActivity.php new file mode 100644 index 0000000..1741e8b --- /dev/null +++ b/app/Listeners/Jobs/LogJobCreationActivity.php @@ -0,0 +1,25 @@ +job; + + $activityEntry = [ + 'type' => 'job_created', + 'parent_id' => null, + 'user_id' => auth()->id(), + 'object_id' => $job->id, + 'object_type' => 'jobs', + 'data' => null, + ]; + + Activity::create($activityEntry); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 3d3a65a..d6d3121 100644 --- a/app/Providers/EventServiceProvider.php +++ b/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', + ], ]; /** diff --git a/tests/Unit/Models/ActivityTest.php b/tests/Unit/Models/ActivityTest.php index a2254a4..8f51c88 100644 --- a/tests/Unit/Models/ActivityTest.php +++ b/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, + ]); + } }