diff --git a/app/assets/javascripts/activityChart.js b/app/assets/javascripts/activityChart.js index e2add6117..4fa8922ec 100644 --- a/app/assets/javascripts/activityChart.js +++ b/app/assets/javascripts/activityChart.js @@ -316,9 +316,18 @@ return rowSender === currentUserName; }); - userRows.slice(0, 5).forEach(row => { - row.style.display = ''; - }); + if (userRows.length > 0) { + userRows.slice(0, 5).forEach(row => { + row.style.display = ''; + }); + } else { + const emptyMessageRow = Array.from(allRows).find(row => { + return row.querySelector('.table-empty-message'); + }); + if (emptyMessageRow) { + emptyMessageRow.style.display = ''; + } + } } else { tableHeading.textContent = 'Service activity'; diff --git a/tests/javascripts/activityChart.test.js b/tests/javascripts/activityChart.test.js index 3d0087ec1..89e924dc1 100644 --- a/tests/javascripts/activityChart.test.js +++ b/tests/javascripts/activityChart.test.js @@ -283,3 +283,58 @@ test('handleDropdownChange updates DOM for individual selection', () => { window.fetchData.mockRestore(); }); + +test('handleDropdownChange shows empty message when user has no jobs', () => { + document.body.innerHTML = ` +
+
+
+
+
+
+

+ + + + + + + + + + +
Other User
Another User
Different User
No batched job messages found (messages are kept for 7 days).
+
+ + `; + + window.currentUserName = "Test User"; + + jest.spyOn(window, 'fetchData').mockImplementation(() => {}); + + const selectElement = document.getElementById('options'); + selectElement.value = 'individual'; + const event = { target: selectElement }; + + window.handleDropdownChange(event); + + expect(document.getElementById('table-heading').textContent).toBe('My activity'); + expect(document.getElementById('caption').textContent).toContain('Test User'); + + document.querySelectorAll('.sender-column').forEach(col => { + expect(col.style.display).toBe('none'); + }); + + const emptyMessageRow = document.querySelector('.table-empty-message').closest('tr'); + expect(emptyMessageRow.style.display).toBe(''); + + const allRows = Array.from(document.querySelectorAll('#activity-table tbody tr')); + const visibleRows = allRows.filter(row => row.style.display !== 'none'); + expect(visibleRows.length).toBe(1); + expect(visibleRows[0].querySelector('.table-empty-message')).not.toBeNull(); + + window.fetchData.mockRestore(); +});