. */ declare(strict_types=1); namespace Tests\Unit\Support\Cronjobs; use Carbon\Carbon; use FireflyConfig; use FireflyIII\Jobs\CreateRecurringTransactions; use FireflyIII\Models\Configuration; use FireflyIII\Support\Cronjobs\RecurringCronjob; use Log; use Mockery; use Tests\TestCase; /** * Class RecurringCronjobTest * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.TooManyPublicMethods) */ class RecurringCronjobTest extends TestCase { /** * */ public function setUp(): void { parent::setUp(); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @covers \FireflyIII\Support\Cronjobs\RecurringCronjob */ public function testBasic(): void { $class = $this->mock(CreateRecurringTransactions::class); $force = false; $date = new Carbon; $config = new Configuration; $config->data = 0; FireflyConfig::shouldReceive('get')->withArgs(['last_rt_job', 0])->atLeast()->once()->andReturn($config); $class->shouldReceive('setDate')->atleast()->once(); $class->shouldReceive('setForce')->atleast()->once()->withArgs([$force]); $class->shouldReceive('handle')->atleast()->once(); FireflyConfig::shouldReceive('set')->atLeast()->once()->withArgs(['last_rt_job', Mockery::any()]); $job = new RecurringCronjob; $job->setDate($date); $job->setForce($force); $job->fire(); } /** * @covers \FireflyIII\Support\Cronjobs\RecurringCronjob */ public function testShort(): void { $this->mock(CreateRecurringTransactions::class); $force = false; $date = new Carbon; $time = time() - 100; $config = new Configuration; $config->data = $time; FireflyConfig::shouldReceive('get')->withArgs(['last_rt_job', 0])->atLeast()->once()->andReturn($config); $job = new RecurringCronjob; $job->setDate($date); $job->setForce($force); $job->fire(); } /** * @covers \FireflyIII\Support\Cronjobs\RecurringCronjob */ public function testShortForced(): void { $class = $this->mock(CreateRecurringTransactions::class); $force = true; $date = new Carbon; $time = time() - 100; $config = new Configuration; $config->data = $time; FireflyConfig::shouldReceive('get')->withArgs(['last_rt_job', 0])->atLeast()->once()->andReturn($config); $class->shouldReceive('setDate')->atleast()->once(); $class->shouldReceive('setForce')->atleast()->once()->withArgs([$force]); $class->shouldReceive('handle')->atleast()->once(); FireflyConfig::shouldReceive('set')->atLeast()->once()->withArgs(['last_rt_job', Mockery::any()]); $job = new RecurringCronjob; $job->setDate($date); $job->setForce($force); $job->fire(); } /** * @covers \FireflyIII\Support\Cronjobs\RecurringCronjob */ public function testTwoDays(): void { $class = $this->mock(CreateRecurringTransactions::class); $force = false; $date = new Carbon; $time = time() - 43300; $config = new Configuration; $config->data = $time; FireflyConfig::shouldReceive('get')->withArgs(['last_rt_job', 0])->atLeast()->once()->andReturn($config); $class->shouldReceive('setDate')->atleast()->once(); $class->shouldReceive('setForce')->atleast()->once()->withArgs([$force]); $class->shouldReceive('handle')->atleast()->once(); FireflyConfig::shouldReceive('set')->atLeast()->once()->withArgs(['last_rt_job', Mockery::any()]); $job = new RecurringCronjob; $job->setDate($date); $job->setForce($force); $job->fire(); } }