Skip to content

Commit 8bf4aad

Browse files
committed
Add more tests
1 parent dcea08e commit 8bf4aad

16 files changed

Lines changed: 240 additions & 2 deletions

File tree

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ install:
1212
- pip install "pytest>=5,<6" "pytest-cov>=2,<3"
1313
script:
1414
# testing without aiohttp
15+
- travis_retry pytest tests/slack_bolt/
1516
- travis_retry pytest tests/scenario_tests/
1617
# testing with aiohttp
1718
- pip install -e ".[async]"
1819
- pip install "pytest-asyncio<1"
20+
- travis_retry pytest tests/slack_bolt_async/
1921
- travis_retry pytest tests/async_scenario_tests/
2022
# testing for adapters
2123
- pip install -e ".[adapter]"

slack_bolt/context/async_context.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
class AsyncBoltContext(BaseContext):
1212
@property
1313
def client(self) -> Optional[AsyncWebClient]:
14-
return self.get("client", None)
14+
if "client" not in self:
15+
self["client"] = AsyncWebClient(token=None)
16+
return self["client"]
1517

1618
@property
1719
def ack(self) -> AsyncAck:

slack_bolt/context/context.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
class BoltContext(BaseContext):
1313
@property
1414
def client(self) -> Optional[WebClient]:
15-
return self.get("client", None)
15+
if "client" not in self:
16+
self["client"] = WebClient(token=None)
17+
return self["client"]
1618

1719
@property
1820
def ack(self) -> Ack:

tests/slack_bolt/__init__.py

Whitespace-only changes.

tests/slack_bolt/context/__init__.py

Whitespace-only changes.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from slack_bolt.context.respond import Respond
2+
from tests.mock_web_api_server import (
3+
setup_mock_web_api_server,
4+
cleanup_mock_web_api_server,
5+
)
6+
7+
8+
class TestRespond:
9+
def setup_method(self):
10+
setup_mock_web_api_server(self)
11+
12+
def teardown_method(self):
13+
cleanup_mock_web_api_server(self)
14+
15+
def test_respond(self):
16+
response_url = "http://localhost:8888"
17+
respond = Respond(response_url=response_url)
18+
response = respond(text="Hi there!")
19+
assert response.status_code == 200
20+
21+
def test_respond2(self):
22+
response_url = "http://localhost:8888"
23+
respond = Respond(response_url=response_url)
24+
response = respond({"text": "Hi there!"})
25+
assert response.status_code == 200
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from slack_sdk.models.blocks import DividerBlock
2+
3+
from slack_bolt.context.respond.internals import _build_message
4+
5+
6+
class TestRespondInternals:
7+
def setup_method(self):
8+
pass
9+
10+
def teardown_method(self):
11+
pass
12+
13+
def test_build_message_empty(self):
14+
message = _build_message()
15+
assert message is not None
16+
17+
def test_build_message_text(self):
18+
message = _build_message(text="Hello!")
19+
assert message is not None
20+
21+
def test_build_message_blocks(self):
22+
message = _build_message(blocks=[{"type": "divider"}])
23+
assert message is not None
24+
25+
def test_build_message_blocks2(self):
26+
message = _build_message(blocks=[DividerBlock(block_id="foo")])
27+
assert message is not None
28+
assert isinstance(message["blocks"][0], dict)
29+
assert message["blocks"][0]["block_id"] == "foo"
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from slack_sdk import WebClient
2+
from slack_sdk.web import SlackResponse
3+
4+
from slack_bolt import Say
5+
from tests.mock_web_api_server import (
6+
setup_mock_web_api_server,
7+
cleanup_mock_web_api_server,
8+
)
9+
10+
11+
class TestSay:
12+
def setup_method(self):
13+
setup_mock_web_api_server(self)
14+
valid_token = "xoxb-valid"
15+
mock_api_server_base_url = "http://localhost:8888"
16+
self.web_client = WebClient(
17+
token=valid_token, base_url=mock_api_server_base_url
18+
)
19+
20+
def teardown_method(self):
21+
cleanup_mock_web_api_server(self)
22+
23+
def test_say(self):
24+
say = Say(client=self.web_client, channel="C111")
25+
response: SlackResponse = say(text="Hi there!")
26+
assert response.status_code == 200

tests/slack_bolt/kwargs_injection/__init__.py

Whitespace-only changes.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import logging
2+
3+
from slack_bolt import Args, BoltRequest, BoltResponse
4+
from slack_bolt.kwargs_injection import build_required_kwargs
5+
6+
7+
class TestArgs:
8+
def setup_method(self):
9+
pass
10+
11+
def teardown_method(self):
12+
pass
13+
14+
def next(self):
15+
pass
16+
17+
def test_build(self):
18+
required_args = [
19+
"logger",
20+
"client",
21+
"req",
22+
"resp",
23+
"context",
24+
"body",
25+
"payload",
26+
"ack",
27+
"say",
28+
"respond",
29+
"next",
30+
]
31+
arg_params: dict = build_required_kwargs(
32+
logger=logging.getLogger(__name__),
33+
required_arg_names=required_args,
34+
request=BoltRequest(body="", headers={}),
35+
response=BoltResponse(status=200),
36+
next_func=next,
37+
)
38+
args = Args(**arg_params)
39+
assert args.logger is not None
40+
assert args.request is not None
41+
assert args.response is not None
42+
assert args.client is not None

0 commit comments

Comments
 (0)