Compare commits
2 Commits
2548ae5a52
...
065038b1c4
| Author | SHA1 | Date | |
|---|---|---|---|
| 065038b1c4 | |||
| 2c054aa8db |
@ -229,8 +229,8 @@ class ChatDB(Chat):
|
|||||||
def read_db(self) -> None:
|
def read_db(self) -> None:
|
||||||
"""
|
"""
|
||||||
Reads new messages from the DB directory. New ones are added to the internal list,
|
Reads new messages from the DB directory. New ones are added to the internal list,
|
||||||
existing ones are kept or replaced. A message is determined as 'existing' if a
|
existing ones are replaced. A message is determined as 'existing' if a message with
|
||||||
message with the same base filename (i. e. 'file_path.name') is already in the list.
|
the same base filename (i. e. 'file_path.name') is already in the list.
|
||||||
"""
|
"""
|
||||||
new_messages = read_dir(self.db_path, self.glob, self.mfilter)
|
new_messages = read_dir(self.db_path, self.glob, self.mfilter)
|
||||||
# remove all messages from self.messages that are in the new list
|
# remove all messages from self.messages that are in the new list
|
||||||
@ -242,10 +242,10 @@ class ChatDB(Chat):
|
|||||||
def read_cache(self) -> None:
|
def read_cache(self) -> None:
|
||||||
"""
|
"""
|
||||||
Reads new messages from the cache directory. New ones are added to the internal list,
|
Reads new messages from the cache directory. New ones are added to the internal list,
|
||||||
existing ones are kept or replaced. A message is determined as 'existing' if a
|
existing ones are replaced. A message is determined as 'existing' if a message with
|
||||||
message with the same base filename (i. e. 'file_path.name') is already in the list.
|
the same base filename (i. e. 'file_path.name') is already in the list.
|
||||||
"""
|
"""
|
||||||
new_messages = read_dir(self.db_path, self.glob, self.mfilter)
|
new_messages = read_dir(self.cache_path, self.glob, self.mfilter)
|
||||||
# remove all messages from self.messages that are in the new list
|
# remove all messages from self.messages that are in the new list
|
||||||
self.messages = [m for m in self.messages if not message_in(m, new_messages)]
|
self.messages = [m for m in self.messages if not message_in(m, new_messages)]
|
||||||
# copy the messages from the temporary list to self.messages and sort them
|
# copy the messages from the temporary list to self.messages and sort them
|
||||||
|
|||||||
@ -232,3 +232,66 @@ class TestChatDB(CmmTestCase):
|
|||||||
self.assertEqual(chat_db.messages[1].file_path, pathlib.Path(self.db_path.name, '0002.yaml'))
|
self.assertEqual(chat_db.messages[1].file_path, pathlib.Path(self.db_path.name, '0002.yaml'))
|
||||||
self.assertEqual(chat_db.messages[2].file_path, pathlib.Path(self.db_path.name, '0003.txt'))
|
self.assertEqual(chat_db.messages[2].file_path, pathlib.Path(self.db_path.name, '0003.txt'))
|
||||||
self.assertEqual(chat_db.messages[3].file_path, pathlib.Path(self.db_path.name, '0004.yaml'))
|
self.assertEqual(chat_db.messages[3].file_path, pathlib.Path(self.db_path.name, '0004.yaml'))
|
||||||
|
|
||||||
|
def test_chat_db_read(self) -> None:
|
||||||
|
# create a new ChatDB instance
|
||||||
|
chat_db = ChatDB.from_dir(pathlib.Path(self.cache_path.name),
|
||||||
|
pathlib.Path(self.db_path.name))
|
||||||
|
self.assertEqual(len(chat_db.messages), 4)
|
||||||
|
|
||||||
|
# create 2 new files in the DB directory
|
||||||
|
new_message1 = Message(Question('Question 5'),
|
||||||
|
Answer('Answer 5'),
|
||||||
|
{Tag('tag5')})
|
||||||
|
new_message2 = Message(Question('Question 6'),
|
||||||
|
Answer('Answer 6'),
|
||||||
|
{Tag('tag6')})
|
||||||
|
new_message1.to_file(pathlib.Path(self.db_path.name, '0005.txt'))
|
||||||
|
new_message2.to_file(pathlib.Path(self.db_path.name, '0006.yaml'))
|
||||||
|
# read and check them
|
||||||
|
chat_db.read_db()
|
||||||
|
self.assertEqual(len(chat_db.messages), 6)
|
||||||
|
self.assertEqual(chat_db.messages[4].file_path, pathlib.Path(self.db_path.name, '0005.txt'))
|
||||||
|
self.assertEqual(chat_db.messages[5].file_path, pathlib.Path(self.db_path.name, '0006.yaml'))
|
||||||
|
|
||||||
|
# create 2 new files in the cache directory
|
||||||
|
new_message3 = Message(Question('Question 7'),
|
||||||
|
Answer('Answer 5'),
|
||||||
|
{Tag('tag7')})
|
||||||
|
new_message4 = Message(Question('Question 8'),
|
||||||
|
Answer('Answer 6'),
|
||||||
|
{Tag('tag8')})
|
||||||
|
new_message3.to_file(pathlib.Path(self.cache_path.name, '0007.txt'))
|
||||||
|
new_message4.to_file(pathlib.Path(self.cache_path.name, '0008.yaml'))
|
||||||
|
# read and check them
|
||||||
|
chat_db.read_cache()
|
||||||
|
self.assertEqual(len(chat_db.messages), 8)
|
||||||
|
# check that the new message have the cache dir path
|
||||||
|
self.assertEqual(chat_db.messages[6].file_path, pathlib.Path(self.cache_path.name, '0007.txt'))
|
||||||
|
self.assertEqual(chat_db.messages[7].file_path, pathlib.Path(self.cache_path.name, '0008.yaml'))
|
||||||
|
# an the old ones keep their path (since they have not been replaced)
|
||||||
|
self.assertEqual(chat_db.messages[4].file_path, pathlib.Path(self.db_path.name, '0005.txt'))
|
||||||
|
self.assertEqual(chat_db.messages[5].file_path, pathlib.Path(self.db_path.name, '0006.yaml'))
|
||||||
|
|
||||||
|
# now overwrite two messages in the DB directory
|
||||||
|
new_message1.question = Question('New Question 1')
|
||||||
|
new_message2.question = Question('New Question 2')
|
||||||
|
new_message1.to_file(pathlib.Path(self.db_path.name, '0005.txt'))
|
||||||
|
new_message2.to_file(pathlib.Path(self.db_path.name, '0006.yaml'))
|
||||||
|
# read from the DB dir and check if the modified messages have been updated
|
||||||
|
chat_db.read_db()
|
||||||
|
self.assertEqual(len(chat_db.messages), 8)
|
||||||
|
self.assertEqual(chat_db.messages[4].question, 'New Question 1')
|
||||||
|
self.assertEqual(chat_db.messages[5].question, 'New Question 2')
|
||||||
|
self.assertEqual(chat_db.messages[4].file_path, pathlib.Path(self.db_path.name, '0005.txt'))
|
||||||
|
self.assertEqual(chat_db.messages[5].file_path, pathlib.Path(self.db_path.name, '0006.yaml'))
|
||||||
|
|
||||||
|
# now write the messages from the cache to the DB directory
|
||||||
|
new_message3.to_file(pathlib.Path(self.db_path.name, '0007.txt'))
|
||||||
|
new_message4.to_file(pathlib.Path(self.db_path.name, '0008.yaml'))
|
||||||
|
# read and check them
|
||||||
|
chat_db.read_db()
|
||||||
|
self.assertEqual(len(chat_db.messages), 8)
|
||||||
|
# check that they now have the DB path
|
||||||
|
self.assertEqual(chat_db.messages[6].file_path, pathlib.Path(self.db_path.name, '0007.txt'))
|
||||||
|
self.assertEqual(chat_db.messages[7].file_path, pathlib.Path(self.db_path.name, '0008.yaml'))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user