Skip to content

Commit ec98774

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

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
@@ -29,6 +29,7 @@
2929
calendar_dates_format,
3030
empty_string_checker
3131
)
32+
from helpers.event.slack_notifier import notify_slack
3233

3334
utc = pytz.utc
3435

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

234236

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)