Skip to content

Commit fcfa7bc

Browse files
Ramadhan0MCFrank16
authored andcommitted
CON-328-story: allow HTTP call to the slack when a metting is ended
1 parent 6b5bb6e commit fcfa7bc

File tree

7 files changed

+42
-3
lines changed

7 files changed

+42
-3
lines changed

api/events/schema.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
calendar_dates_format,
3131
empty_string_checker
3232
)
33+
from helpers.event.slack_notifier import notify_slack
3334

3435
utc = pytz.utc
3536

@@ -229,7 +230,8 @@ def mutate(self, info, **kwargs):
229230
meeting_end_time=kwargs['meeting_end_time']
230231
)
231232
event.save()
232-
233+
event_id = kwargs['event_id']
234+
notify_slack.delay(event_id)
233235
return EndEvent(event=event)
234236

235237

config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ class Config:
2727
},
2828
}
2929

30+
# slack bot url
31+
NOTIFY_URL = os.getenv('SLACK_NOTIFICATION_URL')
32+
3033
@staticmethod
3134
def init_app(app):
3235
pass

helpers/event/__init__.py

Whitespace-only changes.

helpers/event/slack_notifier.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import requests
2+
import celery
3+
from config import Config
4+
5+
"""
6+
This function call slack bot url
7+
"""
8+
9+
10+
@celery.task(name="notify-slack")
11+
def notify_slack(event_id):
12+
responce = requests.get(url=Config.NOTIFY_URL + event_id)
13+
return(responce.status_code)

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,4 @@ typing==3.6.4
3838
flake8==3.5.0
3939
coveralls
4040
validators==0.12.4
41+
requests==2.22.0

tests/test_events/test_end_event.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from tests.base import BaseTestCase, CommonTestCases
2+
from unittest.mock import Mock, patch
23

34
from fixtures.events.end_event_fixtures import (
45
end_event_mutation,
@@ -16,10 +17,12 @@
1617

1718
class TestEndEvent(BaseTestCase):
1819

19-
def test_end_event(self):
20+
@patch('api.events.schema.notify_slack.delay')
21+
def test_end_event(self, mock_notify_slack):
2022
"""
2123
Test user can end an event
2224
"""
25+
mock_notify_slack.return_value = True
2326
CommonTestCases.user_token_assert_equal(
2427
self,
2528
event_checkin_mutation,
@@ -41,10 +44,12 @@ def test_end_unchecked_in_event(self):
4144
end_unchecked_in_event_mutation_response
4245
)
4346

44-
def test_end_event_twice(self):
47+
@patch('api.events.schema.notify_slack.delay')
48+
def test_end_event_twice(self, mock_notify_slack):
4549
"""
4650
Test user cannot end an event twice
4751
"""
52+
mock_notify_slack.return_value = True
4853
CommonTestCases.user_token_assert_equal(
4954
self,
5055
event_checkin_mutation,
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import unittest
2+
from unittest.mock import Mock, patch
3+
from helpers.event.slack_notifier import notify_slack
4+
5+
6+
class TestSlackNotifier(unittest.TestCase):
7+
8+
@patch('helpers.event.slack_notifier.requests.get')
9+
def test_slack_notifier(self, mock_get_request):
10+
"""
11+
Test to verify that a request is made when
12+
an event ends
13+
"""
14+
notify_slack('event_id')
15+
mock_get_request.assert_called_once()

0 commit comments

Comments
 (0)