Beispiel #1
0
def test_sentry_stats__single_issue(mocker, service):
    sentry_api_response = generate_sentry_api_response()
    m_response = mocker.patch(
        "zoo.services.tasks.fetch_sentry_project_issues",
        return_value=sentry_api_response,
    )

    service.sentry_project = fake.word()
    service.full_clean()
    service.save()

    get_sentry_stats(service.id)
    assert m_response.call_count == 1

    assert SentryIssue.objects.all().count() == 1

    sentry_issue = SentryIssue.objects.get(service=service)
    api_data = sentry_api_response[0]

    assert sentry_issue.issue_id == int(api_data["id"])
    assert sentry_issue.short_id == api_data["shortId"]
    assert sentry_issue.title == api_data["title"]
    assert sentry_issue.culprit == api_data["culprit"]
    assert sentry_issue.assignee == api_data["assignedTo"]["name"]
    assert sentry_issue.permalink == api_data["permalink"]
    assert sentry_issue.events == int(api_data["count"])
    assert sentry_issue.users == int(api_data["userCount"])
    assert sentry_issue.first_seen == arrow.get(api_data["firstSeen"]).datetime
    assert sentry_issue.last_seen == arrow.get(api_data["lastSeen"]).datetime

    issue_stat = sentry_issue.stats.order_by("-timestamp").first()
    initial_value = issue_stat.count

    issue_stat.count += 1
    issue_stat.full_clean()
    issue_stat.save()

    assert issue_stat.count != initial_value

    service.sentry_project = fake.word()
    service.full_clean()
    service.save()

    get_sentry_stats(service.id)
    assert m_response.call_count == 2

    assert SentryIssue.objects.all().count() == 1
    sentry_issue = SentryIssue.objects.get(service=service)
    issue_stat = sentry_issue.stats.order_by("-timestamp").first()
    assert issue_stat.count == initial_value
Beispiel #2
0
def test_sentry_stats__no_issues(mocker, service):
    sentry_api_response = []
    m_response = mocker.patch(
        "zoo.services.tasks.fetch_sentry_project_issues",
        return_value=sentry_api_response,
    )

    service.sentry_project = fake.word()
    service.full_clean()
    service.save()

    get_sentry_stats(service.id)
    m_response.assert_called_once()

    assert not SentryIssue.objects.filter(service=service).exists()
Beispiel #3
0
def test_sentry_stats__issue_stats(stats, category, mocker, service):
    sentry_api_response = generate_sentry_api_response(iid=None, stats=stats)
    m_response = mocker.patch(
        "zoo.services.tasks.fetch_sentry_project_issues",
        return_value=sentry_api_response,
    )

    service.sentry_project = fake.word()
    service.full_clean()
    service.save()

    get_sentry_stats(service.id)
    m_response.assert_called_once()

    assert SentryIssue.objects.filter(service=service).count() == 1

    sentry_issue = SentryIssue.objects.get(service=service)
    assert SentryIssueStats.objects.filter(issue=sentry_issue).count() == 14
    assert sentry_issue.events == sum(stats)
    assert sentry_issue.category == category.value
Beispiel #4
0
def test_sentry_stats__not_configured(service):
    get_sentry_stats(service.id)
    assert not SentryIssue.objects.filter(service=service).exists()