test_datacollector.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # -*- coding: utf-8 -*-
  2. import os
  3. from django.core.files import File
  4. from misago.conf import settings
  5. from misago.users.datacollector import DataCollector
  6. from misago.users.testutils import AuthenticatedUserTestCase
  7. TESTFILES_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'testfiles')
  8. TEST_AVATAR_PATH = os.path.join(TESTFILES_DIR, 'avatar.png')
  9. DATA_DOWNLOADS_WORKING_DIR = settings.MISAGO_USER_DATA_DOWNLOADS_WORKING_DIR
  10. class DataCollectorTests(AuthenticatedUserTestCase):
  11. def test_init_with_dirs(self):
  12. """data collector initializes with valid tmp directories"""
  13. data_collector = DataCollector(self.user, DATA_DOWNLOADS_WORKING_DIR)
  14. self.assertTrue(os.path.exists(data_collector.tmp_dir_path))
  15. self.assertTrue(os.path.exists(data_collector.data_dir_path))
  16. data_downloads_working_dir = str(DATA_DOWNLOADS_WORKING_DIR)
  17. tmp_dir_path = str(data_collector.tmp_dir_path)
  18. data_dir_path = str(data_collector.data_dir_path)
  19. self.assertTrue(tmp_dir_path.startswith(data_downloads_working_dir))
  20. self.assertTrue(data_dir_path.startswith(data_downloads_working_dir))
  21. self.assertTrue(data_dir_path.startswith(data_downloads_working_dir))
  22. self.assertTrue(data_dir_path.startswith(tmp_dir_path))
  23. def test_write_data_file(self):
  24. """write_data_file creates new data file in data_dir_path"""
  25. data_collector = DataCollector(self.user, DATA_DOWNLOADS_WORKING_DIR)
  26. data_to_write = {'hello': "I am test!", 'nice': u"łał!"}
  27. data_file_path = data_collector.write_data_file("testfile", data_to_write)
  28. self.assertTrue(os.path.isfile(data_file_path))
  29. valid_output_path = os.path.join(data_collector.data_dir_path, 'testfile.txt')
  30. self.assertEqual(data_file_path, valid_output_path)
  31. with open(data_file_path, 'r') as fp:
  32. saved_data = fp.read().strip().splitlines()
  33. self.assertEqual(saved_data, ["hello: I am test!", u"nice: łał!"])
  34. def test_write_model_file(self):
  35. """write_model_file includes model file in data_dir_path"""
  36. with open(TEST_AVATAR_PATH, 'rb') as avatar:
  37. self.user.avatar_tmp = File(avatar)
  38. self.user.save()
  39. data_collector = DataCollector(self.user, DATA_DOWNLOADS_WORKING_DIR)
  40. file_path = data_collector.write_model_file(self.user.avatar_tmp)
  41. self.assertTrue(os.path.isfile(file_path))
  42. data_dir_path = str(data_collector.data_dir_path)
  43. self.assertTrue(str(file_path).startswith(data_dir_path))
  44. def test_write_model_file_empty(self):
  45. """write_model_file is noop if model file field is none"""
  46. data_collector = DataCollector(self.user, DATA_DOWNLOADS_WORKING_DIR)
  47. file_path = data_collector.write_model_file(self.user.avatar_tmp)
  48. self.assertIsNone(file_path)
  49. self.assertFalse(os.listdir(data_collector.data_dir_path))