49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
import json
|
|
from pytchat.processors.jsonfile_archiver import JsonfileArchiver
|
|
from unittest.mock import patch, mock_open
|
|
from tests.testdata.jsonfile_archiver.chat_component import chat_component
|
|
|
|
def _open_file(path):
|
|
with open(path,mode ='r',encoding = 'utf-8') as f:
|
|
return f.read()
|
|
|
|
def test_checkpath(mocker):
|
|
processor = JsonfileArchiver("path")
|
|
mocker.patch('os.path.exists').side_effect = exists_file
|
|
'''Test no duplicate file.'''
|
|
assert processor._checkpath("z:/other.txt") == "z:/other.txt"
|
|
|
|
'''Test duplicate filename.
|
|
The case the name first renamed ('test.txt -> test(0).txt')
|
|
is also duplicated.
|
|
'''
|
|
assert processor._checkpath("z:/test.txt") == "z:/test(1).txt"
|
|
|
|
'''Test no extention file (duplicate).'''
|
|
assert processor._checkpath("z:/test") == "z:/test(0)"
|
|
|
|
|
|
def test_read_write():
|
|
'''Test read and write chatdata'''
|
|
mock = mock_open(read_data = "")
|
|
with patch('builtins.open',mock):
|
|
processor = JsonfileArchiver("path")
|
|
save_path = processor.process([chat_component])
|
|
fh = mock()
|
|
actuals = [args[0] for (args, kwargs) in fh.writelines.call_args_list]
|
|
'''write format is json dump string with 0x0A'''
|
|
to_be_written = [json.dumps(action, ensure_ascii=False)+'\n'
|
|
for action in chat_component["chatdata"]]
|
|
for i in range(len(actuals)):
|
|
assert actuals[i] == to_be_written[i]
|
|
assert save_path == {'save_path': 'path', 'total_lines': 7}
|
|
|
|
|
|
def exists_file(path):
|
|
if path == "z:/test.txt":
|
|
return True
|
|
if path == "z:/test(0).txt":
|
|
return True
|
|
if path == "z:/test":
|
|
return True
|