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

定休日を未入力で登録した場合のシステムエラーを修正 #1108

Merged
merged 4 commits into from
Dec 26, 2024
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
8 changes: 6 additions & 2 deletions data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public function action()
// 編集処理
case 'edit':
$this->arrErr = $this->lfCheckError($objFormParam, $objHoliday);
if (!SC_Utils_Ex::isBlank($this->arrErr['holiday_id'])) {
if (!SC_Utils_Ex::isBlank($this->arrErr['holiday_id'] ?? '')) {
trigger_error('', E_USER_ERROR);

return;
Expand Down Expand Up @@ -201,7 +201,11 @@ public function lfCheckError(&$objFormParam, SC_Helper_Holiday_Ex &$objHoliday)
if ($arrForm['month'] == 2 && $arrForm['day'] == 29) {
$valid_date = true;
} else {
$valid_date = checkdate($arrForm['month'], $arrForm['day'], date('Y'));
if (SC_Utils_Ex::isBlank($arrForm['month']) || SC_Utils_Ex::isBlank($arrForm['day'])) {
$valid_date = false;
} else {
$valid_date = checkdate($arrForm['month'], $arrForm['day'], date('Y'));
}
}
if (!$valid_date) {
$arrErr['date'] = '※ 妥当な日付ではありません。<br />';
Expand Down
62 changes: 62 additions & 0 deletions e2e-tests/test/admin/basis/holiday.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import { test, expect } from '../../../fixtures/admin_login.fixture';
import { ADMIN_DIR } from '../../../config/default.config';
import { faker } from '@faker-js/faker/locale/ja';

const url = `/${ ADMIN_DIR }/basis/holiday.php`;
test.describe('定休日管理画面のテストをします', () => {

test('定休日管理画面のテストをします', async ( { adminLoginPage, page }) => {
await page.goto(url);
await expect(page.locator('h1')).toContainText(//);
});

test('エラーハンドリングのテストをします', async ( { adminLoginPage, page }) => {
await page.goto(url);
expect(page.getByRole('row', { name: 'タイトル' }).getByRole('textbox')).toBeEmpty();
await expect(page.getByRole('row', { name: '日付' }).locator('select[name=month]')).toHaveValue('');
await expect(page.getByRole('row', { name: '日付' }).locator('select[name=day]')).toHaveValue('');
await page.getByRole('link', { name: 'この内容で登録する' }).click();
await expect(page.getByText('タイトルが入力されていません。')).toBeVisible();
await expect(page.getByText('妥当な日付ではありません。')).toBeVisible();
});

test('定休日の登録をします', async ( { adminLoginPage, page }) => {
page.on('dialog', dialog => dialog.accept());
await page.goto(url);

const title = faker.lorem.sentence();
await test.step('登録処理をします', async () => {
await page.getByRole('row', { name: 'タイトル' }).getByRole('textbox').fill(title);
await page.getByRole('row', { name: '日付' }).locator('select[name=month]').selectOption({ value: String(faker.number.int({ min: 1, max: 12 })) });
await page.getByRole('row', { name: '日付' }).locator('select[name=day]').selectOption({ value: String(faker.number.int({ min: 1, max: 28 })) });

await page.getByRole('link', { name: 'この内容で登録する' }).click();
await expect(page.locator('table.list')).toContainText(title);

Check failure on line 34 in e2e-tests/test/admin/basis/holiday.test.ts

View workflow job for this annotation

GitHub Actions / e2e-tests / Run on Linux (test:e2e, test/admin, 8.1, pgsql)

[chromium] › test/admin/basis/holiday.test.ts:23:7 › 定休日管理画面のテストをします › 定休日の登録をします

1) [chromium] › test/admin/basis/holiday.test.ts:23:7 › 定休日管理画面のテストをします › 定休日の登録をします › 登録処理をします ── Error: Timed out 5000ms waiting for expect(locator).toContainText(expected) Locator: locator('table.list') - Expected string - 1 + Received string + 222 - 閉じる 都合 縮小 ねんがじょう 栄誉 対応 豪華 勝手 とちょう 貨物船. + + + + + + + + タイトル + 日付 + 編集 + 削除 + 移動 + + + 元日(1月1日) + 1月1日 + + 編集 + + + 削除 + + + 下へ + + + + 成人の日(1月第2月曜日) + 1月14日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 建国記念の日(2月11日) + 2月11日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 春分の日(3月21日) + 3月21日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 昭和の日(4月29日) + 4月29日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 憲法記念日(5月3日) + 5月3日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + みどりの日(5月4日) + 5月4日 + + 編集 + + + 削除 +
});
await test.step('登録処理をします', async () => {
await page.getByRole('row', { name: 'タイトル' }).getByRole('textbox').fill(title);
await page.getByRole('row', { name: '日付' }).locator('select[name=month]').selectOption({ value: String(faker.number.int({ min: 1, max: 12 })) });
await page.getByRole('row', { name: '日付' }).locator('select[name=day]').selectOption({ value: String(faker.number.int({ min: 1, max: 28 })) });

await page.getByRole('link', { name: 'この内容で登録する' }).click();
await expect(page.locator('table.list')).toContainText(title);
});

await test.step('編集をします', async () => {
await page.goto(url);
await page.getByRole('row', { name: title }).getByRole('link', { name: '編集' }).click();
await page.getByRole('row', { name: 'タイトル' }).getByRole('textbox').fill(`${title}を編集`);
await page.getByRole('row', { name: '日付' }).locator('select[name=month]').selectOption({ value: String(faker.number.int({ min: 1, max: 12 })) });
await page.getByRole('row', { name: '日付' }).locator('select[name=day]').selectOption({ value: String(faker.number.int({ min: 1, max: 28 })) });

await page.getByRole('link', { name: 'この内容で登録する' }).click();
await expect(page.locator('table.list')).toContainText(`${title}を編集`);

Check failure on line 53 in e2e-tests/test/admin/basis/holiday.test.ts

View workflow job for this annotation

GitHub Actions / e2e-tests / Run on Linux (test:e2e, test/admin, 8.2, pgsql)

[chromium] › test/admin/basis/holiday.test.ts:23:7 › 定休日管理画面のテストをします › 定休日の登録をします

1) [chromium] › test/admin/basis/holiday.test.ts:23:7 › 定休日管理画面のテストをします › 定休日の登録をします › 編集をします ──── Error: Timed out 5000ms waiting for expect(locator).toContainText(expected) Locator: locator('table.list') - Expected string - 1 + Received string + 236 - かいせい 殺人者 遺失 おくれる 前.を編集 + + + + + + + + タイトル + 日付 + 編集 + 削除 + 移動 + + + かいせい 殺人者 遺失 おくれる 前. + 2月26日 + + 編集中 + + + 削除 + + + 下へ + + + + 元日(1月1日) + 1月1日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 成人の日(1月第2月曜日) + 1月14日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 建国記念の日(2月11日) + 2月11日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 春分の日(3月21日) + 3月21日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 昭和の日(4月29日) + 4月29日 + + 編集 + + + 削除 + + + 上へ + 下へ + + + + 憲法記念日(5月3日) + 5月3日 + + 編集 + + + 削除 +
});

await test.step('削除をします', async () => {
await page.goto(url);
await page.getByRole('row', { name: `${title}を編集` }).getByRole('link', { name: '削除' }).click();
await expect(page.locator('table.list')).not.toContainText(`${title}を編集`);
});
});
});
Loading