def create_model(self, form): logging.error("Creating model") report_saver = ReportFormSaver(form) form_submitted = report_saver.extract_report_data_into_airflow( report_exists=False) if form_submitted: return self
def setup_class(cls): """ Extract report_form_sample into airflow variable. """ with patch("rb_status_plugin.core.report_form_saver.flash"): print("Creating airflow variable...") report_saver = ReportFormSaver(cls.report_form_sample) report_saver.extract_report_data_into_airflow(report_exists=False)
def test_invalid_email(self): """ Test that errors are thrown with an invalid email. """ invalid_email = "not an email" with pytest.raises(Exception) as context: ReportFormSaver.validate_email(ReportFormSaver, invalid_email) assert (f"Email ({invalid_email}) is not valid." "Please enter a valid email address.") in str( context.exception)
def form_post(self, report_title): form = self.form.refresh() report_saver = ReportFormSaver(form) form_submitted = report_saver.extract_report_data_into_airflow( report_exists=True) # post process form if form_submitted: flash(self.message, "info") return redirect(url_for("ReportsView.list", filename="reports")) else: return self.this_form_get(report_title)
def test_duplicate_report(self): """ Test that two reports can't be created with same name. """ duplicate_report = copy.deepcopy(self.report_form_sample_duplicate) with pytest.raises(Exception) as context: report_saver = ReportFormSaver(duplicate_report) report_saver.extract_report_data_into_airflow(report_exists=False) assert ( "Error: report_id (rb_status_test report title) already taken." in str(context.exception))
def form_post(self): form = self.form.refresh() report_saver = ReportFormSaver(form) form_submitted = report_saver.extract_report_data_into_airflow( report_exists=False) # post process form if form_submitted: flash(self.message, "info") if request.args.get("next"): return redirect(url_for(request.args.get("next"))) return redirect(url_for("ReportsView.list")) else: return self.this_form_get()
def test_editing_report(self): """ Test that report can be edited. """ updated_report = copy.deepcopy(self.report_form_sample_duplicate) report_airflow_variable = Variable.get( "rb_status_" + self.report_form_sample_duplicate.report_title.data, deserialize_json=True, ) report_saver = ReportFormSaver(updated_report) report_saver.extract_report_data_into_airflow(report_exists=True) assert (updated_report.schedule_custom.data == report_airflow_variable["schedule"])
def test_valid_email(self): """ Test that no errors are thrown with a correct email. """ valid_email = "*****@*****.**" assert ReportFormSaver.validate_email(ReportFormSaver, valid_email) is None
def form_get(self, form, report_title): # !get report by report_title and prefill form with its values requested_report = {} for report in VariablesReportRepo.list(): if str(report.report_title_id) == report_title: requested_report = report if requested_report: form = ReportFormSaver.load_form(form, requested_report) return form return None
def test_daily_schedule_conversion(self): """ Test that daily schedule is converted properly into cron expression. """ Variable.delete("rb_status_" + self.report_form_sample_daily.report_title.data) report_saver = ReportFormSaver(self.report_form_sample_daily) report_saver.extract_report_data_into_airflow(report_exists=False) report_airflow_variable = Variable.get( "rb_status_" + self.report_form_sample_daily.report_title.data, deserialize_json=True, ) time = self.report_form_sample_daily.schedule_time.data tz = self.report_form_sample_daily.schedule_timezone.data before_dt = pendulum.now().in_tz(tz).at(time.hour, time.minute, 0) after_dt = before_dt.in_tz("UTC") Variable.delete("rb_status_" + self.report_form_sample_daily.report_title.data) assert (f"{after_dt.minute} {after_dt.hour} * * *" == report_airflow_variable["schedule"])
def update_model(self, form, model): report_saver = ReportFormSaver(form) form_submitted = report_saver.extract_report_data_into_airflow( report_exists=True) if form_submitted: return self