I try to write the unit test for this simple function. Basically, it receives a payload from Slack then builds a message and then send this message to the user using API.
@slack_messages.on_pattern('(?i)^help$')
def handle_help_message(event, body, match):
message = build_help_message()
Slack(event['team_id']).send_message(body['user'], **message)
def build_help_message():
text = "Hello"
return {
'text': text,
'attachments': [
build_basics(),
build_controls()
]
}
I wrote this test, but it looks too complex for such a simple function. How can I make my test simpler?
class TestMesssageHandlers(TestCase):
@mock.patch('slango.slack.Slack.send_message')
@mock.patch('slango.slack.Slack.__init__')
@mock.patch('apps.slackapp.help.handlers.build_help_message')
def test_handle_help_message(self, build_message_mock, init_mock,
send_message_mock):
init_mock.return_value = None
build_message_mock.return_value = {
'text': mock.sentinel.text,
'attachments': mock.sentinel.attachments
}
event = {
'team_id': 'TEAMID',
'event': {
'text': 'help',
'user': 'U111111'
}
}
handle_help_message(event, event['event'])
init_mock.assert_called_with(event['team_id'])
send_message_mock.assert_called_with(
event['event']['user'], **build_message_mock.return_value)