Commit Graph

52 Commits

Author SHA1 Message Date
Rostislav Wolny
bb7ab59ed5 Improve readability of scheduler code
[MAILPOET-6142]
2024-08-19 15:29:42 +02:00
Rostislav Wolny
07221d9c68 Get rid of unnecessary parameter in the Scheduler
The fromTimestamp parameter was used only in tests.
This commit replaces the parameter in tests by mocks and removes it.
 [MAILPOET-6142]
2024-08-19 15:29:42 +02:00
Rostislav Wolny
506652bdc4 Fix scheduling post notifications
The user picks time in a select box, and we expect they pick a time
in the site's timezone so the saved cron expression is in the site's timezone.
When we calculate the next run date, we do it in the site's timezone and
to get UTC time, we convert it.
[MAILPOET-6142]
2024-08-19 15:29:42 +02:00
Rostislav Wolny
5fdba0e170 Replace current_time usage in tests
[MAILPOET-6142]
2024-08-19 15:29:42 +02:00
Rostislav Wolny
e1f38f3b83 Address offset issue in time comparison in AutomationEmailScheduler
[MAILPOET-6155]
2024-08-07 16:01:48 +02:00
Rostislav Wolny
8a0bd75cb1 Limit scheduled tasks fetching by automation run createdAt
This is a performance optimization to avoid fetching too many scheduled task rows.
Run is always created before the scheduled task which is created in send action step.
[MAILPOET-6155]
2024-08-07 16:01:48 +02:00
Rostislav Wolny
e5ab65f28e Fix send action checkSendingStatus to support multiple emails per subscriber.
It is possible that one email (e.g., purchase in category) is sent multiple times
to the same subscriber.

AutomationEmailScheduler::getScheduledTaskSubscriber was selecting the task based on subscriber and newsletter.
In the case of multiple emails sent to one subscriber, the method failed to pick ScheduledTaskSubsrciberEntity because
the query was fetching multiple results, but getOneOrNullResult expects only one result.

This commit fixes it by adding additional filtering by $runId to get the ScheduledTaskSubsriberEntity associated
with the correct run.

I did the filtering in PHP because an alternative would be using LIKE %% in the query. The meta column is text.
[MAILPOET-6155]
2024-08-07 16:01:48 +02:00
Mike Jolley
0d6fe6e5eb Apply rules to tests and tasks 2024-03-21 16:57:59 +01:00
Rodrigo Primo
6f5e22c54c Refactor WelcomeTest to use Doctrine instead of Sending
[MAILPOET-5684]
2024-01-31 12:21:54 +01:00
Jan Lysý
f1ffc77bf3 Set SendingQueue default counts for welcome emails
After performance optimization in Sending::updateCount() there was a bug when the min function set processed count back to zero.
[MAILPOET-5719]
2023-12-04 16:04:11 +01:00
Jan Lysý
941abc328a Set SendingQueue default counts for automatic emails
After performance optimization in Sending::updateCount() there was a bug when the min function set processed count back to zero.
[MAILPOET-5719]
2023-12-04 16:04:11 +01:00
Jan Jakes
b42d579b67 Remove usages of MailPoet\Tasks\Sending from welcome scheduler
[MAILPOET-4375]
2023-11-02 12:53:36 +01:00
Jan Jakes
bb29f25c40 Remove simple usages of MailPoet\Tasks\Sending from integration tests
[MAILPOET-4375]
2023-11-02 12:53:36 +01:00
Rodrigo Primo
eb8351f964 Replace verify()->equals() with verify->equalsWithDelta()
The second parameter of expect()->equals() could be a integer and in
this case it would be used as a delta when comparing the values.
verify()->equals() does not accept that and verify()->equalsWithDelta()
should be used.

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00
Rodrigo Primo
a54e1f3c01 Replace expect()->greaterOrEquals() with verify()->greaterThanOrEqual()
codeception/verify 2.1 removed support for expect()->greaterOrEquals() so we need
to replace it with verify()->greaterThanOrEqual().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00
Rodrigo Primo
525495409c Replace expect()->notNull() with verify()->notNull()
codeception/verify 2.1 removed support for expect()->notNull() so we need
to replace it with verify()->notNull().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00
Rodrigo Primo
9b56fdc688 Replace expect()->count() with verify()->arrayCount()
codeception/verify 2.1 removed support for expect()->count() so we need
to replace it with verify()->arrayCount().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00
Rodrigo Primo
e4136fee8c Replace expect()->isEmpty() with verify()->empty()
codeception/verify 2.1 removed support for expect()->isEmpty() so we need
to replace it with verify()->empty().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00
Rodrigo Primo
709be1d541 Replace expect()->null() with verify()->null()
codeception/verify 2.1 removed support for expect()->null() so we need
to replace it with verify()->null().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00
Rodrigo Primo
997f635d4a Replace expect()->false() with verify()->false()
codeception/verify 2.1 removed support for expect()->false() so we need
to replace it with verify()->false().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00
Rodrigo Primo
afe378ba22 Replace expect()->equals() with verify()->equals()
codeception/verify 2.1 removed support for expect()->equals() so we need
to replace it with verify()->equals().

[MAILPOET-5664]
2023-10-24 08:58:22 +03:00
John Oleksowicz
c09409e1de Replace manual option field creation with factory
MAILPOET-5161
2023-10-23 17:40:54 +02:00
David Remer
47a604d2c5 Take into account that the newsletter is scheduled at 5:45 and not 5:00
[MAILPOET-5528]
2023-08-15 11:47:31 +02:00
Jan Lysý
f5a2088000 Add test cases for minute scheduling
[MAILPOET-5244]
2023-04-19 15:32:28 +02:00
Jan Jakes
b296e40077 Extract Carbon datetime reset to test bootstrap
MAILPOET-5145
2023-04-07 12:11:12 -05:00
John Oleksowicz
cd0b795ac8 Extract customer creation/cleanup
This also ensures that cleanup always runs after all integration tests

MAILPOET-5145
2023-04-07 12:11:12 -05:00
John Oleksowicz
c75bc388c9 Remove unnecessary cleanup code
MAILPOET-5145
2023-04-07 12:11:12 -05:00
Jan Jakes
82aeb89854 Use strict types in tests
[MAILPOET-2688]
2022-11-29 15:04:09 +01:00
David Remer
7db40b27b5 Fix errors automatically with phpcbf
[MAILPOET-4850]
2022-11-28 22:54:13 +03:00
Rostislav Wolny
11faf925cc Refactor time assertions in AutomaticEmailTest to use assert with delta
Carbon:setTestNow was not working because we are instantiating the new Carbon instance with value.
This commit updates all DateTime assertions to use the new assertEqualDateTimes method
[MAILPOET-4867]
2022-11-28 14:19:30 +01:00
David Remer
d2ec7bba42 Replace instance_of asserts in integration tests
[MAILPOET-4258]
2022-11-25 14:32:34 +01:00
Rostislav Wolny
cd3652eaa6 Fix canceling multiple automatic emails
When we deleted sending queue using SQL it remained in the entity manager
and subsequent flush (not the first one) triggered the error, because it didn't know the ScheduledTask entity attached
to the orphaned SendingQueue entity.

This commit fixes this by refactoring deletion of sending queue using standard repository method.
After fixing the issue for sending queue there was another issue with SchedulesTaskSubscriberEntity that remained in memory.
I fixed that by detaching those. Theoretically there might be many SchedulesTaskSubscriberEntities for an Automatic email so
I consider still safer to delete using SQL and if there are some loaded (in this case there is one) detach them.
[MAILPOET-4741]
2022-10-24 14:03:54 +02:00
Jan Lysý
d2247a1c76 Refactor parameter from int to entity
[MAILPOET-4372]
2022-10-12 11:44:37 +02:00
Jan Lysý
c93c42518a Add return value for backward compatibility in tests
[MAILPOET-4372]
2022-10-12 11:44:37 +02:00
Jan Lysý
09a54fdcd1 Fix dependencies in tests
[MAILPOET-4372]
2022-10-12 11:44:37 +02:00
Jan Lysý
745ff6af2a Remove SendingTask usages from AutomaticEmailTest
[MAILPOET-4372]
2022-10-12 11:44:37 +02:00
Jan Lysý
d141f23bb4 Remove old model from AutomaticEmailTest
[MAILPOET-4372]
2022-10-12 11:44:37 +02:00
Sam Najian
b7cccdae95 Adjust tests, remove models and Tasks\Sending
[MAILPOET-4371]
2022-08-22 13:06:43 +02:00
Sam Najian
873c295e99 Remove Paris models and Tasks\Sending from PostNotificationScheduler
[MAILPOET-4371]
2022-08-22 13:06:43 +02:00
Rodrigo Primo
3684530056 Replace NewsletterOption and NewsletterOptionField models
This commit repleaces the old NewsletterOption and NewsletterOptionField
models with Doctrine code in several test classes.

[MAILPOET-4150]
2022-07-27 08:48:44 +02:00
Rodrigo Primo
81051e8295 Replace all Paris models with Doctrine code in SchedulerTest
[MAILPOET-4150]
2022-07-27 08:48:44 +02:00
Jan Lysý
586a5b8b8e Fix typo in const name
[MAILPOET-4440]
2022-07-12 13:35:00 +02:00
Jan Lysý
d340909187 Replace repeating code with using factory
[MAILPOET-4141]
2022-06-20 12:00:47 +02:00
Jan Lysý
4ba5c6ce0c Remove old model from Scheduler
[MAILPOET-4141]
2022-06-20 12:00:47 +02:00
David Remer
fce14358bf Revert "Replace NewsletterOption and NewsletterOptionField models"
This reverts commit 9b087f719f.
2022-05-17 12:27:46 +02:00
David Remer
46ebe847be Revert "Replace all Paris models with Doctrine code in SchedulerTest"
This reverts commit 54e2d173c1.
2022-05-17 12:27:46 +02:00
Rodrigo Primo
d89067854c Replace NewsletterOption and NewsletterOptionField models
This commit repleaces the old NewsletterOption and NewsletterOptionField
models with Doctrine code in several test classes.

[MAILPOET-4150]
2022-05-16 13:18:21 +02:00
Rodrigo Primo
f48bb5758c Replace all Paris models with Doctrine code in SchedulerTest
[MAILPOET-4150]
2022-05-16 13:18:21 +02:00
David Remer
c34356b99c Remove optional $wp parameter in getScheduledTimeWithDelay method
[MAILPOET-4252]
2022-04-25 12:08:18 +02:00
David Remer
ca3f8bdc43 Make Scheduler non-static
[MAILPOET-4252]
2022-04-25 12:08:18 +02:00