Skip to content

Commit

Permalink
Merge pull request #12 from SenteraLLC/fa-987-alert-key
Browse files Browse the repository at this point in the history
[FA-987] add alert key
  • Loading branch information
jdalt authored Mar 26, 2020
2 parents 568a2bc + bef6c7f commit c891a12
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 4 deletions.
2 changes: 1 addition & 1 deletion sentera/_version.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""Defines package version. Parsed by setup.py and imported by __init__.py."""

__version__ = "1.2.1"
__version__ = "1.3.0"
14 changes: 11 additions & 3 deletions sentera/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,26 +101,29 @@ def get_weather(
return weather_df


def create_alert(field_sentera_id, name, message, token):
def create_alert(field_sentera_id, name, message, token, key=None):
"""
Create alert content and post alert mutation to https://api.sentera.com/graphql.
:param field_sentera_id: A field id (string)
:param name: name of the alert (string)
:param message: brief description of the alert being made (string)
:param token: an authorization token needed to post the alert to the specified field (string)
:param key: (optional) A client-defined key to help identify the alert.
:return: result of the request.post
"""
query = """mutation CreateAlert ($field_sentera_id: ID!, $name: String!, $message: String!) {
query = """mutation CreateAlert ($field_sentera_id: ID!, $name: String!, $message: String!, $key: String) {
create_alert (
field_sentera_id: $field_sentera_id
name: $name
message: $message
key: $key
)
{
sentera_id
name
message
key
created_by {
sentera_id
first_name
Expand All @@ -130,7 +133,12 @@ def create_alert(field_sentera_id, name, message, token):
created_at
}
}"""
variables = {"field_sentera_id": field_sentera_id, "name": name, "message": message}
variables = {
"field_sentera_id": field_sentera_id,
"name": name,
"message": message,
"key": key,
}
data = {"query": query, "variables": variables}
result = _run_sentera_query(data, token)

Expand Down
83 changes: 83 additions & 0 deletions sentera/tests/test_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import json

import httpretty
import pytest

from ..api import create_alert


@httpretty.httprettified
def test_create_alert_with_key_success():
def request_callback(request, uri, response_headers):
mutation = b"mutation CreateAlert ($field_sentera_id: ID!, $name: String!, $message: String!, $key: String) {\\n create_alert ("
variables = b'"variables": {"field_sentera_id": "gyq8ll6_AL_8brhbkSentera_CV_shar_e599fde_200326_182003", "name": "Southern Corn Rust Alert", "message": "Current weather conditions indicate things.", "key": "corn_rust"}'
assert variables in request.body
assert mutation in request.body
return [
200,
response_headers,
json.dumps(
{
"data": {
"create_alert": {
"sentera_id": "gyq8ll6_AL_8brhbkSentera_CV_shar_e599fde_200326_182003",
"key": "corn_rust",
"name": "Southern Corn Rust Alert",
"message": "Current weather conditions indicate things.",
"created_at": "2020-03-26T18:20:03Z",
}
}
}
),
]

httpretty.register_uri(
httpretty.POST, "https://apitest.sentera.com/graphql", body=request_callback
)
response = create_alert(
field_sentera_id="gyq8ll6_AL_8brhbkSentera_CV_shar_e599fde_200326_182003",
name="Southern Corn Rust Alert",
message="Current weather conditions indicate things.",
token="token123",
key="corn_rust",
)
assert response["data"]["create_alert"]["key"] == "corn_rust"
assert len(httpretty.latest_requests()) == 1


@httpretty.httprettified
def test_create_alert_without_key_success():
def request_callback(request, uri, response_headers):
mutation = b"mutation CreateAlert ($field_sentera_id: ID!, $name: String!, $message: String!, $key: String) {\\n create_alert ("
variables = b'"variables": {"field_sentera_id": "gyq8ll6_AL_8brhbkSentera_CV_shar_e599fde_200326_182003", "name": "Southern Corn Rust Alert", "message": "Current weather conditions indicate things.", "key": null}'
assert variables in request.body
assert mutation in request.body
return [
200,
response_headers,
json.dumps(
{
"data": {
"create_alert": {
"sentera_id": "gyq8ll6_AL_8brhbkSentera_CV_shar_e599fde_200326_182003",
"key": None,
"name": "Southern Corn Rust Alert",
"message": "Current weather conditions indicate things.",
"created_at": "2020-03-26T18:20:03Z",
}
}
}
),
]

httpretty.register_uri(
httpretty.POST, "https://apitest.sentera.com/graphql", body=request_callback
)
response = create_alert(
"gyq8ll6_AL_8brhbkSentera_CV_shar_e599fde_200326_182003",
"Southern Corn Rust Alert",
"Current weather conditions indicate things.",
"token123",
)
assert response["data"]["create_alert"]["key"] is None
assert len(httpretty.latest_requests()) == 1

0 comments on commit c891a12

Please sign in to comment.