diff --git a/openedx/core/djangoapps/programs/tests/test_utils.py b/openedx/core/djangoapps/programs/tests/test_utils.py index d4c968e255..0b5fbe2019 100644 --- a/openedx/core/djangoapps/programs/tests/test_utils.py +++ b/openedx/core/djangoapps/programs/tests/test_utils.py @@ -445,6 +445,14 @@ class TestProgramProgressMeter(TestCase): ) self.assertEqual(meter.completed_programs, [program_uuid]) + def test_empty_programs(self, mock_get_programs): + """Verify that programs with no courses do not count as completed.""" + program = ProgramFactory() + program['courses'] = [] + meter = ProgramProgressMeter(self.user) + program_complete = meter._is_program_complete(program) + self.assertFalse(program_complete) + @mock.patch(UTILS_MODULE + '.ProgramProgressMeter.completed_course_runs', new_callable=mock.PropertyMock) def test_completed_programs(self, mock_completed_course_runs, mock_get_programs): """Verify that completed programs are correctly identified.""" diff --git a/openedx/core/djangoapps/programs/utils.py b/openedx/core/djangoapps/programs/utils.py index 205ce16aac..c663ac3bbc 100644 --- a/openedx/core/djangoapps/programs/utils.py +++ b/openedx/core/djangoapps/programs/utils.py @@ -244,7 +244,8 @@ class ProgramProgressMeter(object): Returns: bool, indicating whether the program is complete. """ - return all(self._is_course_complete(course) for course in program['courses']) + return all(self._is_course_complete(course) for course in program['courses']) \ + and len(program['courses']) > 0 def _is_course_complete(self, course): """Check if a user has completed a course.