72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
"""test app"""
|
|
|
|
import os
|
|
import sys
|
|
import unittest
|
|
from unittest import mock
|
|
|
|
import module.app
|
|
from module.app import Application, ChatDownloadConfig, DownloadStatus
|
|
|
|
sys.path.append("..") # Adds higher directory to python modules path.
|
|
|
|
|
|
class AppTestCase(unittest.TestCase):
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
config_test = os.path.join(os.path.abspath("."), "config_test.yaml")
|
|
data_test = os.path.join(os.path.abspath("."), "data_test.yaml")
|
|
if os.path.exists(config_test):
|
|
os.remove(config_test)
|
|
if os.path.exists(data_test):
|
|
os.remove(data_test)
|
|
|
|
def test_app(self):
|
|
app = Application("", "")
|
|
self.assertEqual(app.save_path, os.path.join(os.path.abspath("."), "downloads"))
|
|
self.assertEqual(app.proxy, {})
|
|
self.assertEqual(app.restart_program, False)
|
|
|
|
app.chat_download_config[123] = ChatDownloadConfig()
|
|
app.chat_download_config[123].last_read_message_id = 13
|
|
app.chat_download_config[123].node.download_status[
|
|
6
|
|
] = DownloadStatus.Downloading
|
|
app.chat_download_config[123].ids_to_retry.append(7)
|
|
# download success
|
|
app.chat_download_config[123].node.download_status[
|
|
8
|
|
] = DownloadStatus.SuccessDownload
|
|
app.chat_download_config[123].finish_task += 1
|
|
# download success
|
|
app.chat_download_config[123].node.download_status[
|
|
10
|
|
] = DownloadStatus.SuccessDownload
|
|
app.chat_download_config[123].finish_task += 1
|
|
# not exist message
|
|
app.chat_download_config[123].node.download_status[
|
|
13
|
|
] = DownloadStatus.SuccessDownload
|
|
app.config["chat"] = [{"chat_id": 123, "last_read_message_id": 5}]
|
|
|
|
app.update_config(False)
|
|
|
|
self.assertEqual(
|
|
app.chat_download_config[123].last_read_message_id + 1,
|
|
app.config["chat"][0]["last_read_message_id"],
|
|
)
|
|
self.assertEqual(
|
|
[6, 7],
|
|
app.app_data["chat"][0]["ids_to_retry"],
|
|
)
|
|
|
|
@mock.patch("__main__.__builtins__.open", new_callable=mock.mock_open)
|
|
@mock.patch("module.app.yaml", autospec=True)
|
|
def test_update_config(self, mock_yaml, mock_open):
|
|
app = Application("", "")
|
|
app.config_file = "config_test.yaml"
|
|
app.app_data_file = "data_test.yaml"
|
|
app.config["chat"] = [{"chat_id": 123, "last_read_message_id": 0}]
|
|
app.update_config()
|
|
mock_open.assert_called_with("data_test.yaml", "w", encoding="utf-8")
|