Skip to content

Commit

Permalink
Merge pull request #175 from pepabo/catch-ApiException
Browse files Browse the repository at this point in the history
Page クラスのショートコードの例外処理で、 \ColorMeShop\Swagger\ApiExceptionがcatchされるようにする
  • Loading branch information
ShioriPeace authored Aug 19, 2024
2 parents 5ff393b + df0190d commit 6abddf8
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/shortcodes/product/class-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ public static function show( $container, $atts, $content, $tag ) {

try {
$product = $container['api.product_api']->fetch( $filtered_atts['product_id'] )['product'];
} catch ( \ColorMeShop\Swagger\ApiException $e ) {
if ( $container['WP_DEBUG_LOG'] ) {
error_log( '存在しない商品IDが指定された可能性があります。' . $e );
}
return '';
} catch ( \RuntimeException $e ) {
if ( $container['WP_DEBUG_LOG'] ) {
error_log( $e );
Expand Down
50 changes: 50 additions & 0 deletions tests/src/shortcodes/product/class-page-test.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,30 @@
namespace ColorMeShop\Shortcodes\Product;

class Page_Test extends \WP_UnitTestCase {

/** @var \Pimple\Container */
private $container;

/** @var string */
private $error_log;

/** @var string */
private $original_error_log;

public function setUp() {
parent::setUp();

$this->container = _get_container();
// ログ出力先
$this->error_log = tempnam( sys_get_temp_dir(), 'TEST' );
$this->original_error_log = ini_set( 'error_log', $this->error_log );
}

public function tearDown() {
parent::tearDown();
ini_set( 'error_log', $this->original_error_log );
}

/**
* @test
*/
Expand All @@ -25,4 +49,30 @@ public function show_テンプレート名が不正な場合は空文字を返
)
);
}

/**
* @test
*/
public function show_存在しない商品IDが指定された場合、デバッグが有効であればエラーメッセージを出力し、空文字を返す() {
$this->container['WP_DEBUG_LOG'] = function ( $c ) {
return true;
};

$pageShow = Page::show(
$this->container,
[
'template' => 'default',
'product_id' => '00000000',
],
null,
null
);

$this->assertSame(
'',
$pageShow
);

$this->assertStringContainsString( '存在しない商品IDが指定された可能性があります。', file_get_contents( $this->error_log ) );
}
}

0 comments on commit 6abddf8

Please sign in to comment.