def setUp(self): self.initialize_ids() fake_param = luigi.DateIntervalParameter() self.task = CourseEnrollmentTask( interval=fake_param.parse('2013-12-17'), output_root='/fake/output') self.task.init_local() self.user_id = 21 self.timestamp = "2013-12-17T15:38:32.805444"
def create_task(self, interval='2013-01-01'): """Create a task for testing purposes.""" fake_param = luigi.DateIntervalParameter() self.task = CourseEnrollmentTask( interval=fake_param.parse(interval), output_root="/fake/output", )
def setUp(self): self.initialize_ids() fake_param = luigi.DateIntervalParameter() self.task = CourseEnrollmentTask( interval=fake_param.parse('2013-12-17'), output_root='/fake/output' ) self.task.init_local() self.user_id = 21 self.timestamp = "2013-12-17T15:38:32.805444"
class CourseEnrollmentTaskMapTest(InitializeOpaqueKeysMixin, unittest.TestCase): """ Tests to verify that event log parsing by mapper works correctly. """ def setUp(self): self.initialize_ids() fake_param = luigi.DateIntervalParameter() self.task = CourseEnrollmentTask( interval=fake_param.parse('2013-12-17'), output_root='/fake/output') self.task.init_local() self.user_id = 21 self.timestamp = "2013-12-17T15:38:32.805444" def _create_event_log_line(self, **kwargs): """Create an event log with test values, as a JSON string.""" return json.dumps(self._create_event_dict(**kwargs)) def _create_event_dict(self, **kwargs): """Create an event log with test values, as a dict.""" # Define default values for event log entry. event_dict = { "username": "******", "host": "test_host", "event_source": "server", "event_type": "edx.course.enrollment.activated", "context": { "course_id": self.course_id, "org_id": self.org_id, "user_id": self.user_id, }, "time": "{0}+00:00".format(self.timestamp), "ip": "127.0.0.1", "event": { "course_id": self.course_id, "user_id": self.user_id, "mode": "honor", }, "agent": "blah, blah, blah", "page": None } event_dict.update(**kwargs) return event_dict def assert_no_output_for(self, line): """Assert that an input line generates no output.""" self.assertEquals(tuple(self.task.mapper(line)), tuple()) def test_non_enrollment_event(self): line = 'this is garbage' self.assert_no_output_for(line) def test_unparseable_enrollment_event(self): line = 'this is garbage but contains edx.course.enrollment' self.assert_no_output_for(line) def test_missing_event_type(self): event_dict = self._create_event_dict() event_dict['old_event_type'] = event_dict['event_type'] del event_dict['event_type'] line = json.dumps(event_dict) self.assert_no_output_for(line) def test_nonenroll_event_type(self): line = self._create_event_log_line( event_type='edx.course.enrollment.unknown') self.assert_no_output_for(line) def test_bad_datetime(self): line = self._create_event_log_line(time='this is a bogus time') self.assert_no_output_for(line) def test_bad_event_data(self): line = self._create_event_log_line(event=["not an event"]) self.assert_no_output_for(line) def test_illegal_course_id(self): line = self._create_event_log_line(event={ "course_id": ";;;;bad/id/val", "user_id": self.user_id }) self.assert_no_output_for(line) def test_missing_user_id(self): line = self._create_event_log_line(event={"course_id": self.course_id}) self.assert_no_output_for(line) def test_good_enroll_event(self): line = self._create_event_log_line() event = tuple(self.task.mapper(line)) expected = (((self.course_id, self.user_id), (self.timestamp, ACTIVATED, 'honor')), ) self.assertEquals(event, expected) def test_good_unenroll_event(self): line = self._create_event_log_line(event_type=DEACTIVATED) event = tuple(self.task.mapper(line)) expected = (((self.course_id, self.user_id), (self.timestamp, DEACTIVATED, 'honor')), ) self.assertEquals(event, expected)
class CourseEnrollmentTaskMapTest(InitializeOpaqueKeysMixin, unittest.TestCase): """ Tests to verify that event log parsing by mapper works correctly. """ def setUp(self): self.initialize_ids() fake_param = luigi.DateIntervalParameter() self.task = CourseEnrollmentTask( interval=fake_param.parse('2013-12-17'), output_root='/fake/output' ) self.task.init_local() self.user_id = 21 self.timestamp = "2013-12-17T15:38:32.805444" def _create_event_log_line(self, **kwargs): """Create an event log with test values, as a JSON string.""" return json.dumps(self._create_event_dict(**kwargs)) def _create_event_dict(self, **kwargs): """Create an event log with test values, as a dict.""" # Define default values for event log entry. event_dict = { "username": "******", "host": "test_host", "event_source": "server", "event_type": "edx.course.enrollment.activated", "context": { "course_id": self.course_id, "org_id": self.org_id, "user_id": self.user_id, }, "time": "{0}+00:00".format(self.timestamp), "ip": "127.0.0.1", "event": { "course_id": self.course_id, "user_id": self.user_id, "mode": "honor", }, "agent": "blah, blah, blah", "page": None } event_dict.update(**kwargs) return event_dict def assert_no_output_for(self, line): """Assert that an input line generates no output.""" self.assertEquals(tuple(self.task.mapper(line)), tuple()) def test_non_enrollment_event(self): line = 'this is garbage' self.assert_no_output_for(line) def test_unparseable_enrollment_event(self): line = 'this is garbage but contains edx.course.enrollment' self.assert_no_output_for(line) def test_missing_event_type(self): event_dict = self._create_event_dict() event_dict['old_event_type'] = event_dict['event_type'] del event_dict['event_type'] line = json.dumps(event_dict) self.assert_no_output_for(line) def test_nonenroll_event_type(self): line = self._create_event_log_line(event_type='edx.course.enrollment.unknown') self.assert_no_output_for(line) def test_bad_datetime(self): line = self._create_event_log_line(time='this is a bogus time') self.assert_no_output_for(line) def test_bad_event_data(self): line = self._create_event_log_line(event=["not an event"]) self.assert_no_output_for(line) def test_illegal_course_id(self): line = self._create_event_log_line(event={"course_id": ";;;;bad/id/val", "user_id": self.user_id}) self.assert_no_output_for(line) def test_missing_user_id(self): line = self._create_event_log_line(event={"course_id": self.course_id}) self.assert_no_output_for(line) def test_good_enroll_event(self): line = self._create_event_log_line() event = tuple(self.task.mapper(line)) expected = (((self.course_id, self.user_id), (self.timestamp, ACTIVATED, 'honor')),) self.assertEquals(event, expected) def test_good_unenroll_event(self): line = self._create_event_log_line(event_type=DEACTIVATED) event = tuple(self.task.mapper(line)) expected = (((self.course_id, self.user_id), (self.timestamp, DEACTIVATED, 'honor')),) self.assertEquals(event, expected)