mirror of
https://github.com/apache/superset.git
synced 2026-05-12 19:35:17 +00:00
feat: Allow users to bust cache in report dashboard + alerts charts + alert dashboards (#18795)
* wip
* add force cahce bypass option to alerts
* remove default for alerts to bypass cache
* save for now
* save for now
* fix
* commenting out for now
* fix linting
* remove link
* add back force id test
* add frontend test
* address
(cherry picked from commit 8c52fe3476)
This commit is contained in:
committed by
Ville Brofeldt
parent
6178f0515a
commit
fb5d77e404
@@ -290,6 +290,18 @@ def create_report_email_dashboard():
|
||||
cleanup_report_schedule(report_schedule)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def create_report_email_dashboard_force_screenshot():
|
||||
with app.app_context():
|
||||
dashboard = db.session.query(Dashboard).first()
|
||||
report_schedule = create_report_notification(
|
||||
email_target="target@email.com", dashboard=dashboard, force_screenshot=True
|
||||
)
|
||||
yield report_schedule
|
||||
|
||||
cleanup_report_schedule(report_schedule)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def create_report_email_tabbed_dashboard(tabbed_dashboard):
|
||||
with app.app_context():
|
||||
@@ -1002,6 +1014,41 @@ def test_email_dashboard_report_schedule(
|
||||
assert_log(ReportState.SUCCESS)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures(
|
||||
"load_birth_names_dashboard_with_slices",
|
||||
"create_report_email_dashboard_force_screenshot",
|
||||
)
|
||||
@patch("superset.reports.notifications.email.send_email_smtp")
|
||||
@patch("superset.utils.screenshots.DashboardScreenshot.get_screenshot")
|
||||
def test_email_dashboard_report_schedule_force_screenshot(
|
||||
screenshot_mock, email_mock, create_report_email_dashboard_force_screenshot
|
||||
):
|
||||
"""
|
||||
ExecuteReport Command: Test dashboard email report schedule
|
||||
"""
|
||||
# setup screenshot mock
|
||||
screenshot_mock.return_value = SCREENSHOT_FILE
|
||||
|
||||
with freeze_time("2020-01-01T00:00:00Z"):
|
||||
AsyncExecuteReportScheduleCommand(
|
||||
TEST_ID,
|
||||
create_report_email_dashboard_force_screenshot.id,
|
||||
datetime.utcnow(),
|
||||
).run()
|
||||
|
||||
notification_targets = get_target_from_report_schedule(
|
||||
create_report_email_dashboard_force_screenshot
|
||||
)
|
||||
|
||||
# Assert the email smtp address
|
||||
assert email_mock.call_args[0][0] == notification_targets[0]
|
||||
# Assert the email inline screenshot
|
||||
smtp_images = email_mock.call_args[1]["images"]
|
||||
assert smtp_images[list(smtp_images.keys())[0]] == SCREENSHOT_FILE
|
||||
# Assert logs are correct
|
||||
assert_log(ReportState.SUCCESS)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures(
|
||||
"load_birth_names_dashboard_with_slices", "create_report_slack_chart"
|
||||
)
|
||||
@@ -1772,7 +1819,7 @@ def test_when_tabs_are_selected_it_takes_screenshots_for_every_tabs(
|
||||
assert dashboard_screenshot_mock.call_count == 2
|
||||
for index, tab in enumerate(tabs):
|
||||
assert dashboard_screenshot_mock.call_args_list[index].args == (
|
||||
f"http://0.0.0.0:8080/superset/dashboard/{dashboard.id}/?standalone=3#{tab}",
|
||||
f"http://0.0.0.0:8080/superset/dashboard/{dashboard.id}/?standalone=3&force=false#{tab}",
|
||||
f"{dashboard.digest}",
|
||||
)
|
||||
assert send_email_smtp_mock.called is True
|
||||
|
||||
Reference in New Issue
Block a user