create(); $user = User::factory()->create(); $this->actingAs($user); $reportTemplateWithActingUser = ReportTemplate::factory()->create(); $this->assertDatabaseHas('action_logs', [ 'created_by' => null, 'action_type' => 'created', 'target_id' => null, 'target_type' => null, 'item_type' => ReportTemplate::class, 'item_id' => $reportTemplate->id, ]); $this->assertDatabaseHas('action_logs', [ 'created_by' => $user->id, 'action_type' => 'created', 'target_id' => null, 'target_type' => null, 'item_type' => ReportTemplate::class, 'item_id' => $reportTemplateWithActingUser->id, ]); } public function testUpdatingReportTemplateIsLogged() { $reportTemplate = ReportTemplate::factory()->create([ 'name' => 'Name A', 'options' => [ 'company' => '1', 'location' => '1', 'by_company_id' => ['1'], 'by_location_id' => ['17'], ], ]); $reportTemplate->update([ 'name' => 'Another Name', 'options' => [ 'company' => '1', 'by_company_id' => ['1'], ], ]); $user = User::factory()->create(); $this->actingAs($user); $reportTemplateWithActingUser = ReportTemplate::factory()->create([ 'name' => 'Name B', 'options' => [ 'company' => '1', 'location' => '1', 'by_company_id' => ['1'], 'by_location_id' => ['17'], ], ]); $reportTemplateWithActingUser->update([ 'name' => 'Something Else', 'options' => [ 'company' => '1', 'by_company_id' => ['1'], ], ]); $this->assertDatabaseHas('action_logs', [ 'created_by' => null, 'action_type' => 'update', 'target_id' => null, 'target_type' => null, 'item_type' => ReportTemplate::class, 'item_id' => $reportTemplate->id, 'log_meta' => json_encode([ 'name' => [ 'old' => 'Name A', 'new' => 'Another Name' ], 'options' => [ 'old' => [ 'company' => '1', 'location' => '1', 'by_company_id' => ['1'], 'by_location_id' => ['17'], ], 'new' => [ 'company' => '1', 'by_company_id' => ['1'], ], ], ]), ]); $this->assertDatabaseHas('action_logs', [ 'created_by' => $user->id, 'action_type' => 'update', 'target_id' => null, 'target_type' => null, 'item_type' => ReportTemplate::class, 'item_id' => $reportTemplateWithActingUser->id, 'log_meta' => json_encode([ 'name' => [ 'old' => 'Name B', 'new' => 'Something Else' ], 'options' => [ 'old' => [ 'company' => '1', 'location' => '1', 'by_company_id' => ['1'], 'by_location_id' => ['17'], ], 'new' => [ 'company' => '1', 'by_company_id' => ['1'], ], ], ]), ]); } public function testDeletingReportTemplateIsLogged() { $user = User::factory()->create(); [$reportTemplateA, $reportTemplateB] = ReportTemplate::factory()->count(2)->create(); $reportTemplateA->delete(); $this->actingAs($user); $reportTemplateB->delete(); $this->assertDatabaseHas('action_logs', [ 'created_by' => null, 'action_type' => 'delete', 'target_id' => null, 'target_type' => null, 'item_type' => ReportTemplate::class, 'item_id' => $reportTemplateA->id, ]); $this->assertDatabaseHas('action_logs', [ 'created_by' => $user->id, 'action_type' => 'delete', 'target_id' => null, 'target_type' => null, 'item_type' => ReportTemplate::class, 'item_id' => $reportTemplateB->id, ]); } }