From 39264f63dc16f6365fb0edc39e54d598a4982ae2 Mon Sep 17 00:00:00 2001 From: Kentaro Ohkouchi Date: Wed, 25 Dec 2024 15:28:42 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AE=9A=E4=BC=91=E6=97=A5=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E3=81=A7=E6=9C=AA=E5=85=A5=E5=8A=9B=E3=81=A7=E7=99=BB?= =?UTF-8?q?=E9=8C=B2=E3=81=97=E3=81=9F=E5=A0=B4=E5=90=88=E3=81=AE=E3=82=B7?= =?UTF-8?q?=E3=82=B9=E3=83=86=E3=83=A0=E3=82=A8=E3=83=A9=E3=83=BC=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #828 --- .../class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php b/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php index aba3c8424a..537e4ba9f2 100644 --- a/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php +++ b/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php @@ -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'] = '※ 妥当な日付ではありません。
'; From 0217e6a434b95c6d0bdcd5db396b98a837f91291 Mon Sep 17 00:00:00 2001 From: Kentaro Ohkouchi Date: Wed, 25 Dec 2024 16:52:32 +0900 Subject: [PATCH 2/3] Fix warning --- data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php b/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php index 537e4ba9f2..73307836ed 100644 --- a/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php +++ b/data/class/pages/admin/basis/LC_Page_Admin_Basis_Holiday.php @@ -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; From 702c856953468a54071ff08d4af698dadf9a6284 Mon Sep 17 00:00:00 2001 From: Kentaro Ohkouchi Date: Wed, 25 Dec 2024 16:52:52 +0900 Subject: [PATCH 3/3] Add e2e test --- e2e-tests/test/admin/basis/holiday.test.ts | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 e2e-tests/test/admin/basis/holiday.test.ts diff --git a/e2e-tests/test/admin/basis/holiday.test.ts b/e2e-tests/test/admin/basis/holiday.test.ts new file mode 100644 index 0000000000..6ff211f35a --- /dev/null +++ b/e2e-tests/test/admin/basis/holiday.test.ts @@ -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); + }); + 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}を編集`); + }); + + 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}を編集`); + }); + }); +});