Coverage for app / backend / src / tests / test_slack.py: 100%

19 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-02-11 01:51 +0000

1from unittest.mock import patch 

2 

3import pytest 

4 

5from couchers.config import config 

6from couchers.slack import send_slack_message 

7 

8 

9@pytest.fixture(autouse=True) 

10def _(testconfig): 

11 # testconfig saves/restores the global config dict, so any mutations 

12 # (e.g. setting SLACK_ENABLED=True) are automatically reverted after each test 

13 pass 

14 

15 

16def test_send_slack_message_disabled(): 

17 with patch("couchers.slack.requests.post") as mock_post: 

18 send_slack_message("test-channel", "Test message") 

19 mock_post.assert_not_called() 

20 

21 

22def test_send_slack_message_enabled(): 

23 config["SLACK_ENABLED"] = True 

24 config["SLACK_BOT_TOKEN"] = "xoxb-test-token" 

25 

26 with patch("couchers.slack.requests.post") as mock_post: 

27 mock_post.return_value.raise_for_status.return_value = None 

28 mock_post.return_value.json.return_value = {"ok": True} 

29 send_slack_message("test-channel", "Test message") 

30 mock_post.assert_called_once_with( 

31 "https://slack.com/api/chat.postMessage", 

32 headers={"Authorization": "Bearer xoxb-test-token"}, 

33 json={"channel": "test-channel", "markdown_text": "Test message"}, 

34 timeout=10, 

35 )