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(); +});