From 966d6f36ffa5492d0aa344bed5948e434d7b5436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lys=C3=BD?= Date: Thu, 8 Apr 2021 19:11:21 +0200 Subject: [PATCH] Add integration test for SegmentDependencyValidator [MAILPOET-3477] --- .../SegmentDependencyValidatorTest.php | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 tests/integration/Segments/SegmentDependencyValidatorTest.php diff --git a/tests/integration/Segments/SegmentDependencyValidatorTest.php b/tests/integration/Segments/SegmentDependencyValidatorTest.php new file mode 100644 index 0000000000..70e1e51ecb --- /dev/null +++ b/tests/integration/Segments/SegmentDependencyValidatorTest.php @@ -0,0 +1,54 @@ +cleanup(); + } + + public function testItMissingPluginsForWooCommerceDynamicSegment(): void { + $dynamicSegment = $this->createSegment([ + 'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE, + 'action' => 'purchasedCategory', + 'category_id' => 1, + ]); + // Plugin is not active + $validator = $this->createValidator(false); + $missingPlugins = $validator->getMissingPluginsBySegment($dynamicSegment); + expect($missingPlugins)->equals(['WooCommerce']); + + // Plugin is active + $validator = $this->createValidator(true); + $missingPlugins = $validator->getMissingPluginsBySegment($dynamicSegment); + expect($missingPlugins)->equals([]); + } + + private function createSegment(array $filterData): SegmentEntity { + $segment = new SegmentEntity('Dynamic Segment', SegmentEntity::TYPE_DYNAMIC, 'description'); + $this->entityManager->persist($segment); + $filterData = new DynamicSegmentFilterData($filterData); + $dynamicSegmentFilter = new DynamicSegmentFilterEntity($segment, $filterData); + $this->entityManager->persist($dynamicSegmentFilter); + $segment->addDynamicFilter($dynamicSegmentFilter); + return $segment; + } + + private function createValidator(bool $isPluginActive): SegmentDependencyValidator { + $wp = $this->make(WPFunctions::class, [ + 'isPluginActive' => $isPluginActive, + ]); + return new SegmentDependencyValidator($wp); + } + + private function cleanup(): void { + $this->truncateEntity(SegmentEntity::class); + $this->truncateEntity(DynamicSegmentFilterEntity::class); + } +}