Skip to content

Commit d9d601f

Browse files
committed
add model test
1 parent cb4428b commit d9d601f

File tree

3 files changed

+168
-105
lines changed

3 files changed

+168
-105
lines changed

README.md

-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ copy "chromedriver" binary file in env/bin/ path!
1313
python manage.py test
1414
1515
full test app
16-
full auto test for app
1716
good style for chats
1817
optimize css,js,html codes
1918
optimize scroll(just scroll in last message at the fetch_message)

chat/tests.py

-104
This file was deleted.

chat/tests_models.py

+168
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
"""chat test
2+
"""
3+
from datetime import datetime
4+
from django.db import IntegrityError
5+
from django.test import TestCase
6+
from .models import Message, Chat, User
7+
8+
9+
class MessageTestCase(TestCase):
10+
"""test Message model
11+
"""
12+
13+
def setUp(self):
14+
self.test_user1 = User.objects.create(username="john")
15+
self.test_user2 = User.objects.create(username="alice")
16+
chat: Chat = Chat.objects.create(name="chat_room1")
17+
chat.members.add(self.test_user1)
18+
self.test_room1 = chat
19+
chat: Chat = Chat.objects.create(name="chat_room2")
20+
chat.members.add(self.test_user1)
21+
chat.members.add(self.test_user2)
22+
self.test_room2 = chat
23+
24+
def test_message_user(self):
25+
message: Message = Message.objects.create(
26+
author=self.test_user2,
27+
content="test",
28+
room=self.test_room2)
29+
self.assertEqual(message.author.username, "alice")
30+
31+
def test_message_content(self):
32+
message: Message = Message.objects.create(
33+
author=self.test_user1,
34+
content="12345678",
35+
room=self.test_room2)
36+
self.assertEqual(message.content, "12345678")
37+
38+
def test_message_length(self):
39+
message: Message = Message.objects.create(
40+
author=self.test_user1,
41+
content="ali",
42+
room=self.test_room1)
43+
self.assertEqual(len(message.content), 3)
44+
45+
def test_message_no_user(self):
46+
with self.assertRaises(IntegrityError):
47+
Message.objects.create(
48+
author=None, content="test", room=self.test_room2)
49+
50+
def test_message_create_retrieve(self):
51+
message_id = Message.objects.create(
52+
author=self.test_user1,
53+
content="the content",
54+
room=self.test_room2).id
55+
message: Message = Message.objects.get(id=message_id)
56+
# Asserts
57+
self.assertEqual(message.content, "the content")
58+
self.assertEqual(message.author, self.test_user1)
59+
self.assertEqual(message.room, self.test_room2)
60+
self.assertEqual(message.room.name, "chat_room2")
61+
62+
def test_author_username(self):
63+
message: Message = Message.objects.create(
64+
author=self.test_user2,
65+
content="hello there",
66+
room=self.test_room2)
67+
self.assertEqual(message.author_username(), "alice")
68+
69+
def test_get_time(self):
70+
current_time = datetime.now()
71+
formated_time = datetime.strftime(
72+
current_time,
73+
"%I:%M %p")
74+
message: Message = Message.objects.create(
75+
author=self.test_user1,
76+
content="this is for test time :)",
77+
room=self.test_room1)
78+
self.assertEqual(message.get_time(), formated_time)
79+
80+
81+
class ChatTestCase(TestCase):
82+
"""test Chat model
83+
"""
84+
85+
def setUp(self):
86+
self.test_user1 = User.objects.create(username="John")
87+
self.test_user2 = User.objects.create(username="Alice")
88+
self.test_user3 = User.objects.create(username="Bill")
89+
self.test_user4 = User.objects.create(username="Rose")
90+
91+
def test_chat_member(self):
92+
chat: Chat = Chat.objects.create(name="greeting")
93+
chat.members.add(self.test_user1)
94+
self.assertEqual(chat.members.count(), 1)
95+
96+
def test_chat_members(self):
97+
chat: Chat = Chat.objects.create(name="greeting")
98+
chat.members.add(self.test_user1)
99+
chat.members.add(self.test_user2)
100+
self.assertEqual(chat.members.count(), 2)
101+
102+
def test_twice_chat_members(self):
103+
chat: Chat = Chat.objects.create(name="greeting")
104+
chat.members.add(self.test_user1)
105+
chat.members.add(self.test_user1)
106+
self.assertEqual(chat.members.count(), 1)
107+
108+
def test_chat_empty_member(self):
109+
chat: Chat = Chat.objects.create(name="greeting")
110+
self.assertEqual(chat.members.count(), 0)
111+
112+
def test_chat_name(self):
113+
chat: Chat = Chat.objects.create(name="Hi-There")
114+
self.assertEqual(chat.name, "Hi-There")
115+
116+
def test_chat_empty_name(self):
117+
chat: Chat = Chat.objects.create()
118+
self.assertEqual(chat.name, "welcome")
119+
120+
def test_all_group(self):
121+
Chat.objects.create(name="group-1")
122+
Chat.objects.create(name="listener")
123+
Chat.objects.create(name="group-3")
124+
Chat.objects.create(name="group-2")
125+
self.assertEqual(
126+
Chat.all_groups(), ["group-2", "group-3", "group-1"])
127+
self.assertEqual(len(Chat.all_groups()), 3)
128+
129+
def test_members_list(self):
130+
chat: Chat = Chat.objects.create(name="family")
131+
chat.members.add(self.test_user1)
132+
chat.members.add(self.test_user2)
133+
chat.members.add(self.test_user4)
134+
chat.members.add(self.test_user3)
135+
members = Chat.get_members_list(chat.room_id)
136+
self.assertEqual(len(members), 4)
137+
138+
def test_user_empty_group(self):
139+
me = self.test_user3
140+
chat1: Chat = Chat.objects.create(name="saved")
141+
chat1.members.add(me)
142+
chat2: Chat = Chat.objects.create(name="test")
143+
chat2.members.add(me)
144+
chat3: Chat = Chat.objects.create(name="hello")
145+
chat3.members.add(me)
146+
groups = Chat.your_group(me)
147+
self.assertEqual(groups, [])
148+
149+
def test_user_groups(self):
150+
me = self.test_user2
151+
chat1: Chat = Chat.objects.create(name="welcome")
152+
chat1.members.add(me)
153+
chat2: Chat = Chat.objects.create(name="nice")
154+
chat2.members.add(me)
155+
chat3: Chat = Chat.objects.create(name="hello")
156+
chat3.members.add(me)
157+
Message.objects.create(
158+
author=me,
159+
content="hello there",
160+
room=chat2
161+
)
162+
Message.objects.create(
163+
author=me,
164+
content="i am join you!!",
165+
room=chat1
166+
)
167+
groups = Chat.your_group(me)
168+
self.assertEqual(groups, ["welcome", "nice"])

0 commit comments

Comments
 (0)