Skip to content

Commit f772142

Browse files
committed
Support forceDeleted event
1 parent 5574786 commit f772142

File tree

6 files changed

+63
-0
lines changed

6 files changed

+63
-0
lines changed

config/audit.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
'created',
6161
'updated',
6262
'deleted',
63+
'forceDeleted',
6364
'restored',
6465
],
6566

src/Auditable.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,16 @@ protected function getDeletedEventAttributes(): array
185185
];
186186
}
187187

188+
/**
189+
* Get the old/new attributes of a forceDeleted event.
190+
*
191+
* @return array
192+
*/
193+
protected function getforceDeletedEventAttributes(): array
194+
{
195+
return $this->getDeletedEventAttributes();
196+
}
197+
188198
/**
189199
* Get the old/new attributes of a restored event.
190200
*

src/AuditableObserver.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,18 @@ public function deleted(Auditable $model)
6565
Auditor::execute($model->setAuditEvent('deleted'));
6666
}
6767

68+
/**
69+
* Handle the forceDeleted event.
70+
*
71+
* @param \OwenIt\Auditing\Contracts\Auditable $model
72+
*
73+
* @return void
74+
*/
75+
public function forceDeleted(Auditable $model)
76+
{
77+
Auditor::execute($model->setAuditEvent('forceDeleted'));
78+
}
79+
6880
/**
6981
* Handle the restoring event.
7082
*

tests/Functional/AuditingTest.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,37 @@ public function itWillAuditTheDeletedEvent()
221221
$this->assertEmpty($audit->new_values);
222222
}
223223

224+
/**
225+
* @test
226+
*/
227+
public function itWillAuditTheForceDeletedEvent()
228+
{
229+
$this->app['config']->set('audit.events', [
230+
'forceDeleted',
231+
]);
232+
233+
$article = factory(Article::class)->create([
234+
'title' => 'How To Audit Eloquent Models',
235+
'content' => 'N/A',
236+
'published_at' => null,
237+
'reviewed' => 0,
238+
]);
239+
240+
$article->forceDelete();
241+
242+
$audit = Audit::first();
243+
244+
$this->assertArraySubset([
245+
'title' => 'How To Audit Eloquent Models',
246+
'content' => 'N/A',
247+
'published_at' => null,
248+
'reviewed' => 0,
249+
'id' => 1,
250+
], $audit->old_values, true);
251+
252+
$this->assertEmpty($audit->new_values);
253+
}
254+
224255
/**
225256
* @test
226257
*/

tests/Unit/AuditableObserverTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ public function auditableObserverTestProvider(): array
6060
false,
6161
false,
6262
],
63+
[
64+
'forceDeleted',
65+
false,
66+
false,
67+
],
6368
[
6469
'restoring',
6570
false,

tests/Unit/AuditableTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ public function itReturnsTheDefaultAuditEvents()
119119
'created',
120120
'updated',
121121
'deleted',
122+
'forceDeleted',
122123
'restored',
123124
], $model->getAuditEvents(), true);
124125
}
@@ -217,6 +218,9 @@ public function itIsReadyForAuditingWithRegularEvents()
217218
$model->setAuditEvent('deleted');
218219
$this->assertTrue($model->readyForAuditing());
219220

221+
$model->setAuditEvent('forceDeleted');
222+
$this->assertTrue($model->readyForAuditing());
223+
220224
$model->setAuditEvent('restored');
221225
$this->assertTrue($model->readyForAuditing());
222226
}

0 commit comments

Comments
 (0)