diff --git a/lib/Models/Segment.php b/lib/Models/Segment.php index a8fd71a781..1b160be8b0 100644 --- a/lib/Models/Segment.php +++ b/lib/Models/Segment.php @@ -258,9 +258,15 @@ class Segment extends Model { static function bulkDelete($orm) { $count = parent::bulkAction($orm, function($ids) { // delete segments (only default) - Segment::whereIn('id', $ids) + $segments = Segment::whereIn('id', $ids) ->where('type', Segment::TYPE_DEFAULT) + ->findMany(); + $ids = array_map(function($segment) { + return $segment->id; + }, $segments); + SubscriberSegment::whereIn('segment_id', $ids) ->deleteMany(); + Segment::whereIn('id', $ids)->deleteMany(); }); return array('count' => $count); diff --git a/tests/unit/API/JSON/v1/NewslettersTest.php b/tests/unit/API/JSON/v1/NewslettersTest.php index 5048671eb2..65882590bf 100644 --- a/tests/unit/API/JSON/v1/NewslettersTest.php +++ b/tests/unit/API/JSON/v1/NewslettersTest.php @@ -13,6 +13,7 @@ use MailPoet\Models\NewsletterOption; use MailPoet\Models\NewsletterOptionField; use MailPoet\Models\NewsletterSegment; use MailPoet\Models\Segment; +use MailPoet\Models\SubscriberSegment; use MailPoet\Models\SendingQueue; use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Newsletter\Url; @@ -816,6 +817,7 @@ class NewslettersTest extends \MailPoetTest { \ORM::raw_execute('TRUNCATE ' . NewsletterSegment::$_table); \ORM::raw_execute('TRUNCATE ' . NewsletterOptionField::$_table); \ORM::raw_execute('TRUNCATE ' . Segment::$_table); + \ORM::raw_execute('TRUNCATE ' . SubscriberSegment::$_table); \ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table); } } diff --git a/tests/unit/API/JSON/v1/SegmentsTest.php b/tests/unit/API/JSON/v1/SegmentsTest.php index 5fea1fd474..85d7d5f968 100644 --- a/tests/unit/API/JSON/v1/SegmentsTest.php +++ b/tests/unit/API/JSON/v1/SegmentsTest.php @@ -4,6 +4,8 @@ namespace MailPoet\Test\API\JSON\v1; use MailPoet\API\JSON\v1\Segments; use MailPoet\API\JSON\Response as APIResponse; use MailPoet\Models\Segment; +use MailPoet\Models\Subscriber; +use MailPoet\Models\SubscriberSegment; class SegmentsTest extends \MailPoetTest { function _before() { @@ -122,6 +124,12 @@ class SegmentsTest extends \MailPoetTest { } function testItCanBulkDeleteSegments() { + $subscriber_segment = SubscriberSegment::create(array( + 'subscriber_id' => 1, + 'segment_id' => $this->segment_1->id, + 'status' => Subscriber::STATUS_SUBSCRIBED + )); + $router = new Segments(); $response = $router->bulkAction(array( 'action' => 'trash', @@ -145,6 +153,8 @@ class SegmentsTest extends \MailPoetTest { )); expect($response->status)->equals(APIResponse::STATUS_OK); expect($response->meta['count'])->equals(0); + + expect(SubscriberSegment::findOne($subscriber_segment->id))->equals(false); } function _after() {