subscriberResource = $objectManager->get(SubscriberResourceModel::class); } public function testAddEmailIntoNewsletterSubscription() { $query = $this->getQuery('guest@example.com'); $response = $this->graphQlMutation($query); self::assertArrayHasKey('subscribeEmailToNewsletter', $response); self::assertNotEmpty($response['subscribeEmailToNewsletter']); self::assertEquals('SUBSCRIBED', $response['subscribeEmailToNewsletter']['status']); } public function testNewsletterSubscriptionWithIncorrectEmailFormat() { $query = $this->getQuery('guest.example.com'); $this->expectException(Exception::class); $this->expectExceptionMessage('Enter a valid email address.' . "\n"); $this->graphQlMutation($query); } /** * @magentoConfigFixture default_store newsletter/subscription/allow_guest_subscribe 0 */ public function testNewsletterSubscriptionWithDisallowedGuestSubscription() { $query = $this->getQuery('guest@example.com'); $this->expectException(Exception::class); $this->expectExceptionMessage( 'Guests can not subscribe to the newsletter. You must create an account to subscribe.' . "\n" ); $this->graphQlMutation($query); } /** * @magentoApiDataFixture Magento/Newsletter/_files/guest_subscriber.php */ public function testNewsletterSubscriptionWithAlreadySubscribedEmail() { $query = $this->getQuery('guest@example.com'); $this->expectException(Exception::class); $this->expectExceptionMessage('This email address is already subscribed.' . "\n"); $this->graphQlMutation($query); } /** * Returns a mutation query * * @param string $email * @return string */ private function getQuery(string $email = ''): string { return <<subscriberResource ->getConnection() ->delete( $this->subscriberResource->getMainTable() ); parent::tearDown(); } }