Skip to content

Commit ed5d91d

Browse files
committed
version 0.2
1 parent d61c9ea commit ed5d91d

File tree

7 files changed

+88
-34
lines changed

7 files changed

+88
-34
lines changed

echobot/fixtures.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,26 @@
22
import pytest
33
from echobot.echobot import setup_bot
44
from telegram_bot_unittest.routes import TELEGRAM_URL
5-
from telegram_bot_unittest.user import BOT_TOKEN
5+
from telegram_bot_unittest.user import BOT_TOKEN, CHAT_ID
66

77

88
@pytest.fixture(scope='session')
99
def bot(telegram_server):
1010
updater = setup_bot(BOT_TOKEN, TELEGRAM_URL)
1111
yield updater.bot
1212
updater.stop()
13+
14+
15+
from telegram_bot_unittest.user import Tester, UserBase, ChatBase
16+
from telegram_bot_unittest.core import core
17+
18+
user2_id = CHAT_ID+1
19+
20+
u2 = UserBase(user2_id)
21+
chat2 = ChatBase(user2_id)
22+
23+
24+
@pytest.fixture(scope='session')
25+
def user2() -> Tester:
26+
user2 = Tester(core, u2, chat2)
27+
return user2

echobot/pytest_echobot.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ def test_echobot_start(bot, user):
66

77
message = user.get_message()
88

9+
assert message
910
assert message['text'] == 'Hi [FN LN](tg://user?id=1)\!'
1011

1112

@@ -15,13 +16,22 @@ def test_echobot_help(bot, user):
1516

1617
message = user.get_message()
1718

19+
assert message
1820
assert message['text'] == 'Help!'
1921

2022

21-
def test_echobot_message(bot, user):
23+
def test_echobot_message(bot, user, user2):
2224

2325
user.send_message('testing message')
2426

2527
message = user.get_message()
2628

29+
assert message
30+
assert message['text'] == 'testing message'
31+
32+
user2.send_message('testing message')
33+
34+
message = user2.get_message()
35+
36+
assert message
2737
assert message['text'] == 'testing message'

setup.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22
from setuptools import setup
33

44
VERSION_MAJOR = 0
5-
VERSION_MINOR = 1
5+
VERSION_MINOR = 2
66

77
ver = '%d.%d' % (VERSION_MAJOR, VERSION_MINOR)
88

9+
backlog = """
10+
11+
0.2 - 22.04.13 - add multiple users
12+
13+
0.1 - 22.04.12 - init version
14+
"""
15+
916
if __name__ == '__main__':
1017
"""
1118
Create Packet:

telegram_bot_unittest/core.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def user_send_command(self, bot_id: int, user_from, chat, command) -> None:
6262
}]
6363
}
6464

65+
self.init_queue(bot_id)
6566
self.income[bot_id].put(message)
6667

6768
def bot_send(self, bot_from, chat, text) -> Dict:
@@ -81,12 +82,16 @@ def get_updates(self, chat_id: int, timeout: float = 2.0) -> List[Dict]:
8182

8283
ret = []
8384
try:
85+
if chat_id not in self.income:
86+
self.init_queue(chat_id)
87+
8488
message = self.income[chat_id].get(timeout=timeout)
8589

8690
self._update_counter += 1
8791
ret = [{'update_id': self._update_counter,
8892
'message': message
8993
}]
94+
9095
except Empty:
9196
pass
9297

telegram_bot_unittest/fixtures.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11

22
import pytest
33
from .routes import start_server, shutdown_server
4-
from .user import Client
4+
from .user import Tester, UserBase, ChatBase
55
from .core import core
66

77

8+
u = UserBase()
9+
chat = ChatBase()
10+
11+
812
@pytest.fixture(scope='session')
9-
def user() -> Client:
10-
user = Client(core)
13+
def user() -> Tester:
14+
user = Tester(core, u, chat)
1115
return user
1216

1317

telegram_bot_unittest/routes.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from flask import json
88
from .core import result_ok, core
9-
from .user import virtual_bot, chat
9+
from .user import virtual_bot
1010

1111
logger = logging.getLogger(__name__)
1212

@@ -66,8 +66,10 @@ def sendMessage(token: str):
6666
chat_id = int(data['chat_id'])
6767
text = data['text']
6868

69+
chat = {'id': chat_id, 'type': 'private'} # simple chat structure
70+
6971
ret = core.bot_send(bot_from=virtual_bot.to_dict(),
70-
chat=chat.to_dict(),
72+
chat=chat,
7173
text=text
7274
)
7375

telegram_bot_unittest/user.py

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,38 @@
11
from typing import Dict
22
from telegram import User, Chat
33

4-
CHAT_ID = 1
54
BOT_ID = 5000000000
5+
66
BOT_TOKEN = f'5000000000:BBFJVn-zqLnqQGv_Vrg75aJ5rqppy410rm0'
77

8+
CHAT_ID = 1
9+
10+
11+
class UserBase(User):
12+
13+
def __init__(self, id: int = CHAT_ID):
14+
super().__init__(
15+
id, # id
16+
'FN', # first_name
17+
False, # is_bot
18+
'LN', # last_name
19+
'user1', # username
20+
'ru' # language_code
21+
)
22+
23+
24+
class ChatBase(Chat):
25+
26+
def __init__(self, id: int = CHAT_ID):
27+
super().__init__(
28+
id,
29+
'private', # type
30+
None, # title
31+
'user1', # username
32+
'FN', # first_name
33+
'LN', # last_name
34+
)
835

9-
user = User(
10-
CHAT_ID, # id
11-
'FN', # first_name
12-
False, # is_bot
13-
'LN', # last_name
14-
'user1', # username
15-
'ru') # language_code
1636

1737
virtual_bot = User(
1838
BOT_ID,
@@ -26,40 +46,31 @@
2646
False # supports_inline_queries
2747
)
2848

29-
chat = Chat(
30-
CHAT_ID,
31-
'private', # type
32-
None, # title
33-
'user1', # username
34-
'FN', # first_name
35-
'LN', # last_name
36-
)
37-
3849

39-
class Client:
50+
class Tester:
4051

41-
def __init__(self, core):
42-
self.chat_id = CHAT_ID
52+
def __init__(self, core, user, chat):
4353
self.core = core
44-
self.core.init_queue(self.chat_id)
54+
self.user = user
55+
self.chat = chat
4556

4657
def send_message(self, text: str) -> None:
4758

4859
self.core.user_send(virtual_bot.id,
49-
user_from=user.to_dict(),
50-
chat=chat.to_dict(),
60+
user_from=self.user.to_dict(),
61+
chat=self.chat.to_dict(),
5162
text=text
5263
)
5364

5465
def send_command(self, command: str) -> None:
5566

5667
self.core.user_send_command(virtual_bot.id,
57-
user_from=user.to_dict(),
58-
chat=chat.to_dict(),
68+
user_from=self.user.to_dict(),
69+
chat=self.chat.to_dict(),
5970
command=command
6071
)
6172

6273
def get_message(self, timeout=2.0) -> Dict:
63-
messages = self.core.get_updates(self.chat_id, timeout)
74+
messages = self.core.get_updates(self.user.id, timeout)
6475
if messages:
6576
return messages[0]['message']

0 commit comments

Comments
 (0)