Refactor code that checks for list deletion with form
Move segment deletion to new function doTrash to avoid calling methods twice on individual segment deletion. Refactor acceptance test. [MAILPOET-3661]
This commit is contained in:
@ -209,7 +209,7 @@ class Segments extends APIEndpoint {
|
|||||||
$this->subscribersRepository->bulkTrash($subscriberIds);
|
$this->subscribersRepository->bulkTrash($subscriberIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->segmentsRepository->bulkTrash([$segment->getId()], $segment->getType());
|
$this->segmentsRepository->doTrash([$segment->getId()], $segment->getType());
|
||||||
$this->segmentsRepository->refresh($segment);
|
$this->segmentsRepository->refresh($segment);
|
||||||
return $this->successResponse(
|
return $this->successResponse(
|
||||||
$this->segmentsResponseBuilder->build($segment),
|
$this->segmentsResponseBuilder->build($segment),
|
||||||
|
@ -184,6 +184,10 @@ class SegmentsRepository extends Repository {
|
|||||||
return $this->updateDeletedAt($ids, new Carbon(), $type);
|
return $this->updateDeletedAt($ids, new Carbon(), $type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function doTrash(array $ids, string $type = SegmentEntity::TYPE_DEFAULT): int {
|
||||||
|
return $this->updateDeletedAt($ids, new Carbon(), $type);
|
||||||
|
}
|
||||||
|
|
||||||
public function bulkRestore(array $ids, string $type = SegmentEntity::TYPE_DEFAULT): int {
|
public function bulkRestore(array $ids, string $type = SegmentEntity::TYPE_DEFAULT): int {
|
||||||
return $this->updateDeletedAt($ids, null, $type);
|
return $this->updateDeletedAt($ids, null, $type);
|
||||||
}
|
}
|
||||||
|
@ -164,12 +164,8 @@ class SegmentsTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItReturnsErrorWhenTrashingSegmentWithActiveForm() {
|
public function testItReturnsErrorWhenTrashingSegmentWithActiveForm() {
|
||||||
$form = new FormEntity('My Form');
|
$settings = ['segments' => [(string)$this->segment3->getId()]];
|
||||||
$form->setSettings([
|
$this->createForm('My Form', $settings);
|
||||||
'segments' => [(string)$this->segment3->getId()],
|
|
||||||
]);
|
|
||||||
$this->entityManager->persist($form);
|
|
||||||
$this->entityManager->flush();
|
|
||||||
|
|
||||||
$response = $this->endpoint->trash(['id' => $this->segment3->getId()]);
|
$response = $this->endpoint->trash(['id' => $this->segment3->getId()]);
|
||||||
$this->entityManager->refresh($this->segment3);
|
$this->entityManager->refresh($this->segment3);
|
||||||
@ -178,19 +174,9 @@ class SegmentsTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItReturnsPluralErrorWhenTrashingSegmentWithActiveForms() {
|
public function testItReturnsPluralErrorWhenTrashingSegmentWithActiveForms() {
|
||||||
$form1 = new FormEntity('My Form');
|
$settings = ['segments' => [(string)$this->segment3->getId()]];
|
||||||
$form1->setSettings([
|
$this->createForm('My Form', $settings);
|
||||||
'segments' => [(string)$this->segment3->getId()],
|
$this->createForm('My other Form', $settings);
|
||||||
]);
|
|
||||||
$this->entityManager->persist($form1);
|
|
||||||
$this->entityManager->flush();
|
|
||||||
|
|
||||||
$form2 = new FormEntity('My other Form');
|
|
||||||
$form2->setSettings([
|
|
||||||
'segments' => [(string)$this->segment3->getId()],
|
|
||||||
]);
|
|
||||||
$this->entityManager->persist($form2);
|
|
||||||
$this->entityManager->flush();
|
|
||||||
|
|
||||||
$response = $this->endpoint->trash(['id' => $this->segment3->getId()]);
|
$response = $this->endpoint->trash(['id' => $this->segment3->getId()]);
|
||||||
$this->entityManager->refresh($this->segment3);
|
$this->entityManager->refresh($this->segment3);
|
||||||
@ -199,15 +185,11 @@ class SegmentsTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItCanTrashSegmentWithoutActiveForm() {
|
public function testItCanTrashSegmentWithoutActiveForm() {
|
||||||
$form1 = new FormEntity('My Form');
|
$settings = ['segments' => [(string)$this->segment3->getId()]];
|
||||||
$form1->setSettings([
|
$this->createForm('My Form', $settings);
|
||||||
'segments' => [(string)$this->segment3->getId()],
|
|
||||||
]);
|
|
||||||
$this->entityManager->persist($form1);
|
|
||||||
$this->entityManager->flush();
|
|
||||||
|
|
||||||
$response = $this->endpoint->trash(['id' => $this->segment2->getId()]);
|
$response = $this->endpoint->trash(['id' => $this->segment2->getId()]);
|
||||||
$this->entityManager->clear();
|
$this->entityManager->refresh($this->segment2);
|
||||||
$segment = $this->segmentRepository->findOneById($this->segment2->getId());
|
$segment = $this->segmentRepository->findOneById($this->segment2->getId());
|
||||||
assert($segment instanceof SegmentEntity);
|
assert($segment instanceof SegmentEntity);
|
||||||
|
|
||||||
@ -268,6 +250,14 @@ class SegmentsTest extends \MailPoetTest {
|
|||||||
expect($subsribers)->count(0);
|
expect($subsribers)->count(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function createForm(string $formName, array $settings ) {
|
||||||
|
$form = new FormEntity($formName);
|
||||||
|
$form->setSettings($settings);
|
||||||
|
$this->entityManager->persist($form);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
|
|
||||||
private function createSubscriberSegment(SubscriberEntity $subscriber, SegmentEntity $segment): SubscriberSegmentEntity {
|
private function createSubscriberSegment(SubscriberEntity $subscriber, SegmentEntity $segment): SubscriberSegmentEntity {
|
||||||
$subscriberSegment = new SubscriberSegmentEntity($segment, $subscriber, SubscriberEntity::STATUS_SUBSCRIBED);
|
$subscriberSegment = new SubscriberSegmentEntity($segment, $subscriber, SubscriberEntity::STATUS_SUBSCRIBED);
|
||||||
$this->entityManager->persist($subscriberSegment);
|
$this->entityManager->persist($subscriberSegment);
|
||||||
|
Reference in New Issue
Block a user