|
26 | 26 | use OwenIt\Auditing\Redactors\RightRedactor; |
27 | 27 | use OwenIt\Auditing\Tests\Models\Article; |
28 | 28 | use OwenIt\Auditing\Tests\Models\User; |
| 29 | +use ReflectionClass; |
29 | 30 |
|
30 | 31 | class AuditableTest extends AuditingTestCase |
31 | 32 | { |
@@ -951,6 +952,51 @@ public function itFailsToTransitionWhenTheAuditAuditableIdDoesNotMatchTheModelId |
951 | 952 | $secondModel->transitionTo($firstAudit); |
952 | 953 | } |
953 | 954 |
|
| 955 | + /** |
| 956 | + * @group Auditable::transitionTo |
| 957 | + * @test |
| 958 | + */ |
| 959 | + public function itFailsToTransitionWhenTheAuditAuditableIdTypeDoesNotMatchTheModelIdType() |
| 960 | + { |
| 961 | + $this->expectException(AuditableTransitionException::class); |
| 962 | + $this->expectExceptionMessage('Expected Auditable id 1, got 1 instead'); |
| 963 | + |
| 964 | + $model = factory(Article::class)->create(); |
| 965 | + |
| 966 | + $audit = factory(Audit::class)->create([ |
| 967 | + 'auditable_type' => Article::class, |
| 968 | + 'auditable_id' => (string) $model->id, |
| 969 | + ]); |
| 970 | + |
| 971 | + // Make sure the auditable_id isn't being cast |
| 972 | + $auditReflection = new ReflectionClass($audit); |
| 973 | + |
| 974 | + $auditCastsProperty = $auditReflection->getProperty('casts'); |
| 975 | + $auditCastsProperty->setAccessible(true); |
| 976 | + $auditCastsProperty->setValue($audit, [ |
| 977 | + 'old_values' => 'json', |
| 978 | + 'new_values' => 'json', |
| 979 | + ]); |
| 980 | + |
| 981 | + $model->transitionTo($audit); |
| 982 | + } |
| 983 | + |
| 984 | + /** |
| 985 | + * @group Auditable::transitionTo |
| 986 | + * @test |
| 987 | + */ |
| 988 | + public function itTransitionsWhenTheAuditAuditableIdTypeDoesNotMatchTheModelIdType() |
| 989 | + { |
| 990 | + $model = factory(Article::class)->create(); |
| 991 | + |
| 992 | + $audit = factory(Audit::class)->create([ |
| 993 | + 'auditable_type' => Article::class, |
| 994 | + 'auditable_id' => (string) $model->id, |
| 995 | + ]); |
| 996 | + |
| 997 | + $this->assertInstanceOf(Auditable::class, $model->transitionTo($audit)); |
| 998 | + } |
| 999 | + |
954 | 1000 | /** |
955 | 1001 | * @group Auditable::transitionTo |
956 | 1002 | * @test |
|
0 commit comments