Skip to content
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
19 changes: 18 additions & 1 deletion js/modules/specialShifts.js
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,16 @@ async function loadSpecialShifts() {
}
}

/**
* お知らせ欄に表示する特別シフトの日時文字列を組み立てる
* 日付と時間帯は半角スペース 1 つで区切る(全角だと間が空きすぎて見える)
* @param {{date: string, start_time: string, end_time: string}} shift
* @returns {string} 例: "2026-10-08 12:30-15:30"
*/
function formatSpecialShiftSchedule(shift) {
return `${shift.date} ${shift.start_time}-${shift.end_time}`;
}

/**
* 特別シフト募集お知らせを表示する関数(一般ユーザー向け)
*/
Expand Down Expand Up @@ -263,7 +273,7 @@ function displaySpecialShiftAnnouncement() {
list.innerHTML = futureShifts.map(shift => {
const name = shift.name || '名称未設定';
const dateKey = normalizeShiftDate(shift.date);
return `<li><a href="#" class="announcement-link" data-date="${escapeHtml(dateKey)}">「${escapeHtml(name)}」の特別シフトを募集中(${escapeHtml(shift.date)} ${escapeHtml(shift.start_time)}-${escapeHtml(shift.end_time)})</a></li>`;
return `<li><a href="#" class="announcement-link" data-date="${escapeHtml(dateKey)}">「${escapeHtml(name)}」の特別シフトを募集中(${escapeHtml(formatSpecialShiftSchedule(shift))})</a></li>`;
}).join('');

list.querySelectorAll('.announcement-link').forEach(link => {
Expand Down Expand Up @@ -578,3 +588,10 @@ async function handleDeleteSpecialShiftFromList(event) {
button.textContent = originalText;
}
}

// テストから実コードを検証できるようにするエクスポートガード
// (ブラウザでは module が未定義のため no-op になる)
// 方針: docs/refactoring/phase-1-test-foundation.md
if (typeof module !== 'undefined' && module.exports) {
module.exports = { formatSpecialShiftSchedule };
}
24 changes: 24 additions & 0 deletions test/special-shift-announcement-spacing.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* お知らせ欄の特別シフト表示: 日付と時間帯の間隔
*
* 回帰防止: 日付と時間帯を全角スペースで区切っていたため、
* 「2026-10-08 12:30-15:30」のように間が空きすぎて見えていた。
* 半角スペース 1 つで区切る。
*
* このテストは実コード(js/modules/specialShifts.js)を直接 import して検証する。
* 方針: docs/refactoring/phase-1-test-foundation.md
*/

const { formatSpecialShiftSchedule } = require('../js/modules/specialShifts.js');

describe('お知らせ欄の特別シフトの日時表示', () => {
const shift = { date: '2026-10-08', start_time: '12:30', end_time: '15:30' };

test('日付と時間帯を半角スペース 1 つで区切る', () => {
expect(formatSpecialShiftSchedule(shift)).toBe('2026-10-08 12:30-15:30');
});

test('全角スペースを含まない', () => {
expect(formatSpecialShiftSchedule(shift)).not.toContain(' ');
});
});
Loading