|
| 1 | +import logging |
| 2 | +from unittest.mock import Mock |
| 3 | + |
| 4 | +from slack_bolt import Ack |
| 5 | +from slack_sdk import WebClient |
| 6 | + |
| 7 | +from listeners.actions.sample_action import sample_action_callback |
| 8 | + |
| 9 | +test_logger = logging.getLogger(__name__) |
| 10 | + |
| 11 | + |
| 12 | +class TestSampleAction: |
| 13 | + def setup_method(self): |
| 14 | + self.fake_ack = Mock(Ack) |
| 15 | + self.fake_body = {"view": {"id": "test_id", "hash": "156772938.1827394"}} |
| 16 | + |
| 17 | + self.fake_client = Mock(WebClient) |
| 18 | + self.fake_client.views_update = Mock(WebClient.views_update) |
| 19 | + |
| 20 | + def test_sample_action_callback(self): |
| 21 | + sample_action_callback( |
| 22 | + ack=self.fake_ack, |
| 23 | + body=self.fake_body, |
| 24 | + client=self.fake_client, |
| 25 | + logger=test_logger, |
| 26 | + ) |
| 27 | + |
| 28 | + self.fake_ack.assert_called_once() |
| 29 | + |
| 30 | + self.fake_client.views_update.assert_called_once() |
| 31 | + kwargs = self.fake_client.views_update.call_args.kwargs |
| 32 | + assert kwargs["view_id"] == self.fake_body["view"]["id"] |
| 33 | + assert kwargs["hash"] == self.fake_body["view"]["hash"] |
| 34 | + assert kwargs["view"] is not None |
| 35 | + |
| 36 | + def test_ack_exception(self, caplog): |
| 37 | + self.fake_ack.side_effect = Exception("test exception") |
| 38 | + sample_action_callback( |
| 39 | + ack=self.fake_ack, |
| 40 | + body=self.fake_body, |
| 41 | + client=self.fake_client, |
| 42 | + logger=test_logger, |
| 43 | + ) |
| 44 | + |
| 45 | + self.fake_ack.assert_called_once() |
| 46 | + assert str(self.fake_ack.side_effect) in caplog.text |
0 commit comments