def test_maybe_notify_project_status(self, send_status_notification): build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) send_status_notification.assert_called_with(status)
def test_maybe_notify_project_status_notify_patch_build_finished(self, notify_patch_build_finished): build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) notify_patch_build_finished.delay.assert_called_with(build.id)
def test_maybe_notify_project_status_schedule_timeout_not_requested(self, apply_async): build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) apply_async.assert_not_called()
def test_maybe_notify_project_status_notify_patch_build_finished(self, notify_patch_build_finished): build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) notify_patch_build_finished.delay.assert_called_with(build.id)
def test_maybe_notify_project_status(self, send_status_notification): build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) send_status_notification.assert_called_with(status)
def test_maybe_notify_project_status_schedule_timeout_not_requested(self, apply_async): build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) apply_async.assert_not_called()
def test_maybe_notify_project_status_schedule_timeout(self, apply_async): self.project1.notification_timeout = 3600 # 1 hour self.project1.save() build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) apply_async.assert_called_with(args=[status.id], countdown=3600)
def test_maybe_notify_project_status_schedule_timeout(self, apply_async): self.project1.notification_timeout = 3600 # 1 hour self.project1.save() build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) apply_async.assert_called_with(args=[status.id], countdown=3600)
def test_notification_timeout_only_one_task(self, notification_timeout_apply_async): self.project1.notification_timeout = 3600 # 1 hour self.project1.save() build = self.project1.builds.create(datetime=timezone.now()) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) maybe_notify_project_status(status.id) self.assertEqual(1, len(notification_timeout_apply_async.call_args_list))
def test_maybe_notify_project_status_wait_before_notification(self, apply_async, send_status_notification, now): self.project1.wait_before_notification = 3600 # 1 hour self.project1.save() # build was created half an hour ago now.return_value = timezone.make_aware(datetime.datetime(2017, 10, 20, 10, 30, 0)) build = self.project1.builds.create(datetime=timezone.make_aware(datetime.datetime(2017, 10, 20, 10, 0, 0))) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) send_status_notification.assert_not_called() apply_async.assert_called_with(args=[status.id], countdown=1801)
def test_maybe_notify_project_status_notifies_after_wait_before_notification(self, apply_async, send_status_notification, now): self.project1.wait_before_notification = 3600 # 1 hour self.project1.save() # build was created more than one hour ago now.return_value = timezone.make_aware(datetime.datetime(2017, 10, 20, 10, 30, 0)) build = self.project1.builds.create(datetime=timezone.make_aware(datetime.datetime(2017, 10, 20, 9, 0, 0))) environment = self.project1.environments.create(slug='env') build.test_runs.create(environment=environment) status = ProjectStatus.create_or_update(build) maybe_notify_project_status(status.id) send_status_notification.assert_called_with(status) apply_async.assert_not_called()
def thread(status_id): maybe_notify_project_status(status_id) connection.close()