Skip to content

Commit

Permalink
ユニットテストを調整
Browse files Browse the repository at this point in the history
  • Loading branch information
dovanhung committed Nov 2, 2023
1 parent ff00224 commit 07ffa38
Show file tree
Hide file tree
Showing 4 changed files with 118 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public function testView()
{
//データを生成
$this->loadFixtureScenario(MailFieldsScenario::class);
$this->loadFixtureScenario(MailContentsScenario::class);
//APIを呼ぶ
$this->get("/baser/api/admin/bc-mail/mail_contents/view/1.json?token=" . $this->accessToken);
// レスポンスコードを確認する
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use BcMail\Service\MailMessagesServiceInterface;
use BcMail\Service\MailFieldsServiceInterface;
use BcMail\Test\Factory\MailFieldsFactory;
use BcMail\Test\Scenario\MailContentsScenario;
use BcMail\Test\Scenario\MailFieldsScenario;
use Cake\TestSuite\IntegrationTestTrait;
use CakephpFixtureFactories\Scenario\ScenarioAwareTrait;
Expand Down Expand Up @@ -63,6 +64,7 @@ public function testList()
{
//データを生成
$this->loadFixtureScenario(MailFieldsScenario::class);
$this->loadFixtureScenario(MailContentsScenario::class);
//APIを呼ぶ
$this->get("/baser/api/admin/bc-mail/mail_fields/list/1.json?token=" . $this->accessToken);
// レスポンスコードを確認する
Expand Down Expand Up @@ -126,6 +128,7 @@ public function testAdd()
public function testEdit()
{
$MailMessagesService = $this->getService(MailMessagesServiceInterface::class);
$this->loadFixtureScenario(MailContentsScenario::class);
//テストデータベースを生成
$MailMessagesService->createTable(1);
//データを生成
Expand Down Expand Up @@ -163,6 +166,7 @@ public function testDelete()
//データを生成
//メールメッセージサービスをコル
$MailMessagesService = $this->getService(MailMessagesServiceInterface::class);
$this->loadFixtureScenario(MailContentsScenario::class);
//メールメッセージフィルドを追加
$MailMessagesService->addMessageField(1, 'name_1');
//メールフィルドのデータを生成
Expand All @@ -185,6 +189,7 @@ public function testCopy()
//データを生成
//メールメッセージサービスをコル
$MailFieldsService = $this->getService(MailFieldsServiceInterface::class);
$this->loadFixtureScenario(MailContentsScenario::class);
//メールフィルドのデータを生成
$this->loadFixtureScenario(MailFieldsScenario::class);
//APIを呼ぶ
Expand All @@ -207,6 +212,7 @@ public function testBatch()
{
//データを生成
$this->loadFixtureScenario(MailFieldsScenario::class);
$this->loadFixtureScenario(MailContentsScenario::class);
$data = [
'batch' => 'delete',
'batch_targets' => [1],
Expand Down Expand Up @@ -239,6 +245,7 @@ public function testUpdateSort()
{
//データを生成
$this->loadFixtureScenario(MailFieldsScenario::class);
$this->loadFixtureScenario(MailContentsScenario::class);
//APIを呼ぶ
$this->post("/baser/api/admin/bc-mail/mail_fields/update_sort/1.json?token=" . $this->accessToken, ['id' => 1, 'offset' => 3]);
// レスポンスコードを確認する
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,12 @@ public function tearDown(): void
public function testIndex()
{
// メールメッセージのデータを作成する
$MailMessagesService = $this->getService(MailMessagesServiceInterface::class);
//テストデータベースを生成
$MailMessagesService->createTable(1);
$mailMessageTable = TableRegistry::getTableLocator()->get('BcMail.MailMessages');
$mailContentId = 1;
$mailMessageTable->setup($mailContentId);
// mail_message_1テーブルに1件のレコードを追加する
$mailMessageTable->save(new Entity(['id' => 2]));

// 受信メール一覧のAPIを叩く
Expand All @@ -75,6 +77,8 @@ public function testIndex()
// レスポンスのメールメッセージデータを確認する
$result = json_decode((string)$this->_response->getBody());
$this->assertNotEmpty($result->mailMessages);

$MailMessagesService->dropTable(1);
}

/**
Expand All @@ -83,10 +87,12 @@ public function testIndex()
public function testView()
{
// メールメッセージのデータを作成する
$MailMessagesService = $this->getService(MailMessagesServiceInterface::class);
//テストデータベースを生成
$MailMessagesService->createTable(1);
$mailMessageTable = TableRegistry::getTableLocator()->get('BcMail.MailMessages');
$mailContentId = 1;
$mailMessageTable->setup($mailContentId);
// mail_message_1テーブルに1件のレコードを追加する
$mailMessageTable->save(new Entity(['id' => 2]));

// 受信メール詳細のAPIを叩く
Expand All @@ -96,13 +102,25 @@ public function testView()
// レスポンスのメールメッセージデータを確認する
$result = json_decode((string)$this->_response->getBody());
$this->assertEquals(2, $result->mailMessage->id);

//不要なテーブルを削除
$MailMessagesService->dropTable(1);
}

/**
* [API] 受信メール追加
*/
public function testAdd()
{
// メールメッセージのデータを作成する
$MailMessagesService = $this->getService(MailMessagesServiceInterface::class);
//テストデータベースを生成
$MailMessagesService->createTable(1);
$mailMessageTable = TableRegistry::getTableLocator()->get('BcMail.MailMessages');
$mailContentId = 1;
$mailMessageTable->setup($mailContentId);
$mailMessageTable->save(new Entity(['id' => 2]));

// テストデータを作成する
ContentFactory::make([
'id' => 9,
Expand All @@ -116,17 +134,27 @@ public function testAdd()
'status' => true,
])->persist();
MailContentFactory::make(['id' => 1, 'save_info' => 1])->persist();
$data = ['id' => 1, 'message' => 'test message'];
$data = [
'description' => 'description test',
'sender_name' => 'baserCMSサンプル',
'subject_user' => '【baserCMS】お問い合わせ頂きありがとうございます。',
'subject_admin' => '【baserCMS】お問い合わせを受け付けました',
'form_template' => 'default',
'mail_template' => 'mail_default',
'redirect_url' => '/',
'ssl_on' => 0,
'save_info' => 1
];

// 受信メール追加のAPIを叩く
$this->post("/baser/api/admin/bc-mail/mail_messages/add.json?mail_content_id=1&token=$this->accessToken", $data);
$result = json_decode((string)$this->_response->getBody());
// レスポンスのコードを確認する
$this->assertResponseOk();
// レスポンスのメッセージ内容を確認する
$this->assertEquals('お問い合わせ(※関連Fixture未完了) への受信データ NO「1」を追加しました。', $result->message);
$this->assertEquals('お問い合わせ(※関連Fixture未完了) への受信データ NO「3」を追加しました。', $result->message);
// 追加したメールメッセージ内容を確認する
$this->assertEquals('test message', $result->mailMessage->message);
$this->assertEquals('description test', $result->mailMessage->description);

// 無効なメールメッセージデータの場合、エラーになる
$data = ['id' => 'text'];
Expand All @@ -139,65 +167,85 @@ public function testAdd()

//404エラーテスト
$data = ['id' => 2, 'message' => 'test message'];
$this->post("/baser/api/admin/bc-mail/mail_messages/add.json?mail_content_id=1&token=$this->accessToken", $data);
$this->post("/baser/api/admin/bc-mail/mail_messages/add.json?mail_content_id=111&token=$this->accessToken", $data);
$result = json_decode((string)$this->_response->getBody());
// レスポンスのコードを確認する
$this->assertResponseCode(404);
// レスポンスのメッセージ内容を確認する
$this->assertEquals('データが見つかりません。', $result->message);

//不要なテーブルを削除
$MailMessagesService->dropTable(1);
}

/**
* [API] 受信メール編集
*/
public function testEdit()
{
{
// テストデータを作成する
ContentFactory::make([
'id' => 9,
'name' => 'contact',
'plugin' => 'BcMail',
'type' => 'MailContent',
'entity_id' => 1,
'url' => '/contact/',
'site_id' => 1,
'title' => 'お問い合わせ(※関連Fixture未完了)',
'status' => true,
])->persist();
MailContentFactory::make(['id' => 1, 'save_info' => 1])->persist();
$mailMessageTable = TableRegistry::getTableLocator()->get('BcMail.MailMessages');
$mailMessageTable->setup(1);
// mail_message_1テーブルに1件のレコードを追加する
$mailMessageTable->save(new Entity(['id' => 1, 'message' => 'message before']));

// 受信メール追加のAPIを叩く
$data = ['id' => 1, 'message' => 'message after'];
$this->post("/baser/api/admin/bc-mail/mail_messages/edit/1.json?mail_content_id=1&token=$this->accessToken", $data);
$result = json_decode((string)$this->_response->getBody());
// レスポンスのコードを確認する
$this->assertResponseOk();
// レスポンスのメッセージ内容を確認する
$this->assertEquals('お問い合わせ(※関連Fixture未完了) への受信データ NO「1」を更新しました。', $result->message);
// 追加したメールメッセージ内容を確認する
$this->assertEquals('message after', $result->mailMessage->message);

// 無効なメールメッセージデータの場合、エラーになる
$data = ['id' => 'text'];
$this->post("/baser/api/admin/bc-mail/mail_messages/edit/1.json?mail_content_id=1&token=$this->accessToken", $data);
$result = json_decode((string)$this->_response->getBody());
// レスポンスのコードを確認する
$this->assertResponseCode(500);
// レスポンスのメッセージ内容を確認する
$this->assertEquals('データベース処理中にエラーが発生しました。Cannot convert value of type `string` to integer', $result->message);
}
$MailMessagesService = $this->getService(MailMessagesServiceInterface::class);
//テストデータベースを生成
$MailMessagesService->createTable(1);
$mailMessageTable = TableRegistry::getTableLocator()->get('BcMail.MailMessages');
$mailContentId = 1;
$mailMessageTable->setup($mailContentId);
$mailMessageTable->save(new Entity(['id' => 2]));

// テストデータを作成する
ContentFactory::make([
'id' => 9,
'name' => 'contact',
'plugin' => 'BcMail',
'type' => 'MailContent',
'entity_id' => 1,
'url' => '/contact/',
'site_id' => 1,
'title' => 'お問い合わせ(※関連Fixture未完了)',
'status' => true,
])->persist();
MailContentFactory::make(['id' => 1, 'save_info' => 1])->persist();
$mailMessageTable = TableRegistry::getTableLocator()->get('BcMail.MailMessages');
$mailMessageTable->setup(1);
// mail_message_1テーブルに1件のレコードを追加する
$mailMessageTable->save(new Entity(['id' => 1, 'message' => 'message before']));

// 受信メール追加のAPIを叩く
$data = ['id' => 1, 'message' => 'message after'];
$this->post("/baser/api/admin/bc-mail/mail_messages/edit/1.json?mail_content_id=1&token=$this->accessToken", $data);
$result = json_decode((string)$this->_response->getBody());
// レスポンスのコードを確認する
$this->assertResponseOk();
// レスポンスのメッセージ内容を確認する
$this->assertEquals('お問い合わせ(※関連Fixture未完了) への受信データ NO「1」を更新しました。', $result->message);
// 追加したメールメッセージ内容を確認する
$this->assertEquals('message after', $result->mailMessage->message);

// 無効なメールメッセージデータの場合、エラーになる
$data = ['id' => 'text'];
$this->post("/baser/api/admin/bc-mail/mail_messages/edit/1.json?mail_content_id=1&token=$this->accessToken", $data);
$result = json_decode((string)$this->_response->getBody());
// レスポンスのコードを確認する
$this->assertResponseCode(500);
// レスポンスのメッセージ内容を確認する
$this->assertEquals('データベース処理中にエラーが発生しました。Cannot convert value of type `string` to integer', $result->message);

//不要なテーブルを削除
$MailMessagesService->dropTable(1);
}

/**
* [API] 受信メール削除
*/
public function testDelete()
{
$MailMessagesService = $this->getService(MailMessagesServiceInterface::class);
//テストデータベースを生成
$MailMessagesService->createTable(1);
$mailMessageTable = TableRegistry::getTableLocator()->get('BcMail.MailMessages');
$mailContentId = 1;
$mailMessageTable->setup($mailContentId);
$mailMessageTable->save(new Entity(['id' => 2]));

// テストデータを作成する
ContentFactory::make([
'id' => 9,
Expand Down Expand Up @@ -226,13 +274,23 @@ public function testDelete()
$this->assertEquals('お問い合わせ(※関連Fixture未完了) への受信データ NO「1」を削除しました。', $result->message);
// 削除の結果を確認する
$this->assertTrue($result->mailMessage);
//不要なテーブルを削除
$MailMessagesService->dropTable(1);
}

/**
* [API] 受信メール一括削除
*/
public function testBatch()
{
$MailMessagesService = $this->getService(MailMessagesServiceInterface::class);
//テストデータベースを生成
$MailMessagesService->createTable(1);
$mailMessageTable = TableRegistry::getTableLocator()->get('BcMail.MailMessages');
$mailContentId = 1;
$mailMessageTable->setup($mailContentId);
$mailMessageTable->save(new Entity(['id' => 2]));

// テストデータを作成する
ContentFactory::make([
'id' => 9,
Expand Down Expand Up @@ -275,10 +333,13 @@ public function testBatch()
// 受信メール一括削除のAPIを叩く
$this->post("/baser/api/admin/bc-mail/mail_messages/batch/1.json?token=$this->accessToken", $data);
// レスポンスのコードを確認する
$this->assertResponseCode(400);
$this->assertResponseCode(500);
// レスポンスのメッセージ内容を確認する
$result = json_decode((string)$this->_response->getBody());
$this->assertStringContainsString('($id) must be of type int, string given', $result->message);

//不要なテーブルを削除
$MailMessagesService->dropTable(1);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use BaserCore\TestSuite\BcTestCase;
use BaserCore\Utility\BcContainerTrait;
use BcMail\Test\Factory\MailFieldsFactory;
use BcMail\Test\Scenario\MailContentsScenario;
use BcMail\Test\Scenario\MailFieldsScenario;
use Cake\TestSuite\IntegrationTestTrait;
use CakephpFixtureFactories\Scenario\ScenarioAwareTrait;
Expand Down Expand Up @@ -59,6 +60,7 @@ public function tearDown(): void
public function testIndex()
{
$this->loadFixtureScenario(MailFieldsScenario::class);
$this->loadFixtureScenario(MailContentsScenario::class);
$this->get("/baser/api/bc-mail/mail_fields/index.json?mail_content_id=1&token=" . $this->accessToken);
// レスポンスコードを確認する
$this->assertResponseOk();
Expand All @@ -74,6 +76,7 @@ public function testView()
{
//データを生成
$this->loadFixtureScenario(MailFieldsScenario::class);
$this->loadFixtureScenario(MailContentsScenario::class);
//APIを呼ぶ
$this->get("/baser/api/bc-mail/mail_fields/view/1.json?token=" . $this->accessToken);
// レスポンスコードを確認する
Expand Down

0 comments on commit 07ffa38

Please sign in to comment.