Add tests for the new modules
This commit is contained in:
parent
80ce8453f5
commit
32beeca480
2 changed files with 250 additions and 0 deletions
124
test/test_ui/test_render.py
Normal file
124
test/test_ui/test_render.py
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
import pytest
|
||||||
|
from contextlib import contextmanager
|
||||||
|
from datetime import datetime
|
||||||
|
from poezio.theming import get_theme
|
||||||
|
from poezio.ui.render import build_lines, Line, write_pre
|
||||||
|
from poezio.ui.consts import SHORT_FORMAT
|
||||||
|
from poezio.ui.types import BaseMessage, Message, XMLLog
|
||||||
|
|
||||||
|
def test_simple_build_basemsg():
|
||||||
|
msg = BaseMessage(txt='coucou')
|
||||||
|
line = build_lines(msg, 100, True, 10)[0]
|
||||||
|
assert (line.start_pos, line.end_pos) == (0, 6)
|
||||||
|
|
||||||
|
|
||||||
|
def test_simple_render_message():
|
||||||
|
msg = Message(txt='coucou', nickname='toto')
|
||||||
|
line = build_lines(msg, 100, True, 10)[0]
|
||||||
|
assert (line.start_pos, line.end_pos) == (0, 8)
|
||||||
|
|
||||||
|
|
||||||
|
def test_simple_render_xmllog():
|
||||||
|
msg = XMLLog(txt='coucou', incoming=True)
|
||||||
|
line = build_lines(msg, 100, True, 10)[0]
|
||||||
|
assert (line.start_pos, line.end_pos) == (0, 6)
|
||||||
|
|
||||||
|
|
||||||
|
def test_simple_render_separator():
|
||||||
|
line = build_lines(None, 100, True, 10)[0]
|
||||||
|
assert line is None
|
||||||
|
|
||||||
|
class FakeBuffer:
|
||||||
|
def __init__(self):
|
||||||
|
self.text = ''
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def colored_text(self, *args, **kwargs):
|
||||||
|
yield None
|
||||||
|
|
||||||
|
def addstr(self, txt):
|
||||||
|
self.text += txt
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def buffer():
|
||||||
|
return FakeBuffer()
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def time():
|
||||||
|
return datetime.strptime('2019-09-27 10:11:12', '%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
def test_write_pre_basemsg(buffer):
|
||||||
|
str_time = '10:11:12'
|
||||||
|
time = datetime.strptime(str_time, '%H:%M:%S')
|
||||||
|
msg = BaseMessage(txt='coucou', time=time)
|
||||||
|
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '10:11:12 '
|
||||||
|
|
||||||
|
def test_write_pre_message_simple(buffer, time):
|
||||||
|
msg = Message(txt='coucou', nickname='toto', time=time)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '10:11:12 toto> '
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_message_simple_history(buffer, time):
|
||||||
|
msg = Message(txt='coucou', nickname='toto', time=time, history=True)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '2019-09-27 10:11:12 toto> '
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_message_highlight(buffer, time):
|
||||||
|
msg = Message(txt='coucou', nickname='toto', time=time, highlight=True)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '10:11:12 toto> '
|
||||||
|
|
||||||
|
def test_write_pre_message_no_timestamp(buffer):
|
||||||
|
msg = Message(txt='coucou', nickname='toto')
|
||||||
|
write_pre(msg, buffer, False, 10)
|
||||||
|
assert buffer.text == 'toto> '
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_message_me(buffer, time):
|
||||||
|
msg = Message(txt='/me coucou', nickname='toto', time=time)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '10:11:12 * toto '
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_message_revisions(buffer, time):
|
||||||
|
msg = Message(txt='coucou', nickname='toto', time=time, revisions=5)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '10:11:12 toto5> '
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_message_revisions_me(buffer, time):
|
||||||
|
msg = Message(txt='/me coucou', nickname='toto', time=time, revisions=5)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '10:11:12 * toto5 '
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_message_ack(buffer, time):
|
||||||
|
ack = get_theme().CHAR_ACK_RECEIVED
|
||||||
|
expected = '10:11:12 %s toto> ' % ack
|
||||||
|
msg = Message(txt='coucou', nickname='toto', time=time, ack=1)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_message_nack(buffer, time):
|
||||||
|
nack = get_theme().CHAR_NACK
|
||||||
|
expected = '10:11:12 %s toto> ' % nack
|
||||||
|
msg = Message(txt='coucou', nickname='toto', time=time, ack=-1)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_xmllog_in(buffer):
|
||||||
|
msg = XMLLog(txt="coucou", incoming=True)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '%s IN ' % msg.time.strftime('%H:%M:%S')
|
||||||
|
|
||||||
|
|
||||||
|
def test_write_pre_xmllog_out(buffer):
|
||||||
|
msg = XMLLog(txt="coucou", incoming=False)
|
||||||
|
write_pre(msg, buffer, True, 10)
|
||||||
|
assert buffer.text == '%s OUT ' % msg.time.strftime('%H:%M:%S')
|
126
test/test_ui/test_types.py
Normal file
126
test/test_ui/test_types.py
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
import pytest
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from poezio.ui.types import BaseMessage, Message, XMLLog
|
||||||
|
|
||||||
|
|
||||||
|
def test_create_message():
|
||||||
|
now = datetime.now()
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
)
|
||||||
|
assert now < msg.time < datetime.now()
|
||||||
|
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
time=now,
|
||||||
|
)
|
||||||
|
assert msg.time == now
|
||||||
|
|
||||||
|
|
||||||
|
def test_message_offset_simple():
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
)
|
||||||
|
example = "10:10:10 toto> "
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
history=True,
|
||||||
|
)
|
||||||
|
example = "2019:09:01 10:10:10 toto> "
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
def test_message_offset_no_nick():
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="",
|
||||||
|
)
|
||||||
|
example = "10:10:10 "
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
def test_message_offset_ack():
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
ack=1,
|
||||||
|
)
|
||||||
|
example = "10:10:10 V toto> "
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
ack=-1,
|
||||||
|
)
|
||||||
|
example = "10:10:10 X toto> "
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
|
||||||
|
def test_message_offset_me():
|
||||||
|
msg = Message(
|
||||||
|
txt="/me coucou",
|
||||||
|
nickname="toto",
|
||||||
|
)
|
||||||
|
example = "10:10:10 * toto "
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
|
||||||
|
def test_message_offset_revisions():
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
revisions=3,
|
||||||
|
)
|
||||||
|
example = "10:10:10 toto3> "
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
msg = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
revisions=250,
|
||||||
|
)
|
||||||
|
example = "10:10:10 toto250> "
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
|
||||||
|
def test_message_repr_works():
|
||||||
|
msg1 = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
revisions=250,
|
||||||
|
)
|
||||||
|
msg2 = Message(
|
||||||
|
txt="coucou",
|
||||||
|
nickname="toto",
|
||||||
|
old_message=msg1
|
||||||
|
)
|
||||||
|
|
||||||
|
assert repr(msg2) is not None
|
||||||
|
|
||||||
|
def test_xmllog_offset():
|
||||||
|
msg = XMLLog(
|
||||||
|
txt='toto',
|
||||||
|
incoming=True,
|
||||||
|
)
|
||||||
|
example = '10:10:10 IN '
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
msg = XMLLog(
|
||||||
|
txt='toto',
|
||||||
|
incoming=False,
|
||||||
|
)
|
||||||
|
example = '10:10:10 OUT '
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
||||||
|
|
||||||
|
def test_basemessage_offset():
|
||||||
|
msg = BaseMessage(
|
||||||
|
txt='coucou',
|
||||||
|
)
|
||||||
|
example = '10:10:10 '
|
||||||
|
assert msg.compute_offset(True, 10) == len(example)
|
Loading…
Reference in a new issue