Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #6314 Pass the error code instead of the retries count in the RUCSS strategy #6317

Merged
merged 2 commits into from
Dec 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public function execute( object $row_details, array $job_details ): void {
return;
}

$this->used_css_query->increment_retries( $row_details->id, (int) $row_details->retries, $job_details['message'] );
$this->used_css_query->increment_retries( $row_details->id, (int) $job_details['code'], $job_details['message'] );

$rucss_retry_duration = $this->time_table_retry[ $row_details->retries ] ?? $this->default_waiting_retry; // Default to 30 minutes.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,26 @@
<?php

use WP_Rocket\Tests\Unit\TestCase;
use Brain\Monkey\Functions;
use Brain\Monkey\Filters;
use Brain\Monkey\Actions;
use Brain\Monkey\{Actions, Filters};
use WP_Rocket\Engine\Common\Clock\WPRClock;
use WP_Rocket\Engine\Optimization\RUCSS\Database\Queries\UsedCSS as UsedCSS_Query;
use WP_Rocket\Engine\Optimization\RUCSS\Strategy\Strategies\DefaultProcess;
use WP_Rocket\Engine\Common\Clock\WPRClock;

use WP_Rocket\Tests\Unit\TestCase;

/**
* @covers \WP_Rocket\Engine\Optimization\RUCSS\Strategy\Strategies\DefaultProcess::execute
*
* @group RUCSS
* @group RUCSS
*/
class Test_DefaultProcess_Execute extends TestCase {
class Test_Execute extends TestCase {
protected $used_css_query;
protected $wpr_clock;

protected $strategy;

public function setUp():void {
public function setUp(): void {
parent::setUp();
$this->used_css_query = $this->createMock( UsedCSS_Query::class );
$this->wpr_clock = Mockery::mock(WPRClock::class);

$this->strategy = new DefaultProcess($this->used_css_query, $this->wpr_clock);


$this->wpr_clock = Mockery::mock( WPRClock::class );
$this->strategy = new DefaultProcess( $this->used_css_query, $this->wpr_clock );
}

public function tearDown(): void {
Expand All @@ -37,28 +30,34 @@ public function tearDown(): void {
/**
* @dataProvider configTestData
*/
public function testShouldBehaveAsExpected( $config, $expected )
{
public function testShouldBehaveAsExpected( $config, $expected ) {
if ( $config['row_details']->retries >= count( $config['time_table'] ) ) {
Actions\expectDone('rocket_preload_unlock_url')->with($config['row_details']->url);
Actions\expectDone( 'rocket_preload_unlock_url' )->with( $config['row_details']->url );

$this->used_css_query->expects( self::once() )
->method( 'make_status_failed' )
->with( $config['row_details']->id, strval( $config['job_details']['code'] ), $config['job_details']['message'] );
$this->strategy->execute( $config['row_details'], $config['job_details'] );

$this->used_css_query->expects(self::once())->method('make_status_failed')->with($config['row_details']->id, strval($config['job_details']['code']), $config['job_details']['message']);
$this->strategy->execute($config['row_details'], $config['job_details']);
return;
}

$this->used_css_query->expects(self::once())->method('increment_retries')->with( $config['row_details']->id, (int) $config['row_details']->retries);
$this->used_css_query->expects( self::once() )
->method( 'increment_retries' )
->with( $config['row_details']->id, (int) $config['job_details']['code'] );

Filters\expectApplied('rocket_rucss_retry_duration')->andReturn($config['duration_retry']);
Filters\expectApplied( 'rocket_rucss_retry_duration' )->andReturn( $config['duration_retry'] );

$this->wpr_clock->expects('current_time')->with('timestamp', true)->andReturn(0);
$this->wpr_clock->expects( 'current_time' )->with( 'timestamp', true )->andReturn( 0 );
// update the `next_retry_time` column.

$this->used_css_query->expects(self::once())->method('update_message')->with($config['row_details']->id, $config['job_details']['code'], $config['job_details']['message'], $config['row_details']->error_message);
$this->used_css_query->expects(self::once())->method('update_next_retry_time')->with($config['job_id'], $config['duration_retry']);
$this->used_css_query->expects( self::once() )
->method( 'update_message' )
->with( $config['row_details']->id, $config['job_details']['code'], $config['job_details']['message'], $config['row_details']->error_message );
$this->used_css_query->expects( self::once() )
->method( 'update_next_retry_time' )
->with( $config['job_id'], $config['duration_retry'] );

$this->strategy->execute($config['row_details'], $config['job_details']);
return;
$this->strategy->execute( $config['row_details'], $config['job_details'] );
}
}