createEntity(); $this->assertFalse($entity->isDeleted()); $this->assertNull($entity->getDeletedAt()); } public function testSetDeletedStampsTheTimestamp(): void { $entity = $this->createEntity(); $entity->setDeleted(); $this->assertTrue($entity->isDeleted()); $this->assertNotNull($entity->getDeletedAt()); } public function testSetRestoredClearsTheTimestamp(): void { $entity = $this->createEntity(); $entity->setDeleted(); $entity->setRestored(); $this->assertFalse($entity->isDeleted()); $this->assertNull($entity->getDeletedAt()); } public function testDeletedAtAcceptsNullSoDeletionsCanBeUndone(): void { $entity = $this->createEntity(); $entity->setDeletedAt(new \DateTimeImmutable()); $entity->setDeletedAt(null); $this->assertFalse($entity->isDeleted()); } private function createEntity(): SoftDeletableEntityInterface { return new class implements SoftDeletableEntityInterface { use SoftDeletableEntity; }; } }