|
| 1 | +from collections import Counter |
1 | 2 | from unittest.mock import Mock, patch |
2 | 3 |
|
3 | 4 | import pytest |
@@ -34,19 +35,52 @@ def test_app_view_retrieve_panic(cache: Mock, client): |
34 | 35 |
|
35 | 36 |
|
36 | 37 | @pytest.mark.django_db |
37 | | -@pytest.mark.parametrize("metric", MetricType) |
38 | | -def test_app_view_metrics(client, metric: MetricType): |
| 38 | +@pytest.mark.parametrize("metric,default_name", [(MetricType.WSGI, "path"), (MetricType.CELERY, "task")]) |
| 39 | +def test_app_view_metrics(client, metric: MetricType, default_name: str): |
39 | 40 | reference = "test" |
40 | 41 | data = {"type": metric.value, "data": {"test": 1, "test1": 5}} |
41 | 42 | url = reverse("sentry:apps-metrics", kwargs={"pk": reference, "metric_name": metric.value}) |
42 | 43 |
|
| 44 | + response = client.post(url, data, content_type="application/json") |
| 45 | + assert response.status_code == 200, response.data |
| 46 | + app = App.objects.get(reference=reference) |
| 47 | + _, metric_data = app.get_metric(metric) |
| 48 | + assert metric_data == {default_name: data["data"]} |
| 49 | + |
| 50 | + |
| 51 | +@pytest.mark.django_db |
| 52 | +@pytest.mark.parametrize("metric,default_name", [(MetricType.WSGI, "path"), (MetricType.CELERY, "task")]) |
| 53 | +def test_app_view_metrics_new(client, metric: MetricType, default_name: str): |
| 54 | + reference = "test" |
| 55 | + data = {"type": metric.value, "data": {default_name: {"test": 1, "test1": 5}}} |
| 56 | + url = reverse("sentry:apps-metrics", kwargs={"pk": reference, "metric_name": metric.value}) |
| 57 | + |
43 | 58 | response = client.post(url, data, content_type="application/json") |
44 | 59 | assert response.status_code == 200, response.data |
45 | 60 | app = App.objects.get(reference=reference) |
46 | 61 | _, metric_data = app.get_metric(metric) |
47 | 62 | assert metric_data == data["data"] |
48 | 63 |
|
49 | 64 |
|
| 65 | +@pytest.mark.django_db |
| 66 | +@pytest.mark.parametrize("metric,default_name", [(MetricType.WSGI, "path"), (MetricType.CELERY, "task")]) |
| 67 | +def test_app_view_metrics_with_old_value(client, metric: MetricType, default_name: str): |
| 68 | + reference = "test" |
| 69 | + metrics = {"test1": 5, "test": 5} |
| 70 | + app = App(reference=reference) |
| 71 | + app.celery_metrics = metrics |
| 72 | + app.wsgi_metrics = metrics |
| 73 | + app.save() |
| 74 | + data = {"type": metric.value, "data": {default_name: metrics}} |
| 75 | + url = reverse("sentry:apps-metrics", kwargs={"pk": reference, "metric_name": metric.value}) |
| 76 | + |
| 77 | + response = client.post(url, data, content_type="application/json") |
| 78 | + assert response.status_code == 200, response.data |
| 79 | + app = App.objects.get(reference=reference) |
| 80 | + _, metric_data = app.get_metric(metric) |
| 81 | + assert metric_data == {default_name: Counter(metrics) + Counter(metrics)} |
| 82 | + |
| 83 | + |
50 | 84 | @pytest.mark.django_db |
51 | 85 | def test_app_view_list(client): |
52 | 86 | response = client.get("/sentry/apps/") |
|
0 commit comments