def setUp(self): self.dummy_user = self.create_dummy_user() self.add_user_cookie_to_browser(self.dummy_user) self.add_dummy_permission(self.dummy_user, codename='change_report', model='report') self.get_data_links_number() parent = DummyFolder().create_dummy_folder(id=1) DummyFolder().create_dummy_report(parent=parent, id=1)
def setUp(self): self.dummy_user = self.create_dummy_user() self.add_user_cookie_to_browser(self.dummy_user) self.add_dummy_permission(self.dummy_user, codename='change_report', model='report') parent = DummyFolder().create_dummy_folder(id=1) file = SimpleUploadedFile("file.txt", b"file_content") DummyFolder().create_dummy_report(parent=parent, id=1, file=file)
def test_visitor_can_download_report(self): parent = DummyFolder().create_dummy_folder(id=1) file = SimpleUploadedFile("file.txt", b"file_content") report = DummyFolder().create_dummy_report(parent=parent, id=1, file=file) download_directory = "D:\Downloads" download_file_full_path = os.path.join(download_directory, report.filename) # Користувач перебуває на якійсь сторінці current_url = self.browser.current_url # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Завантаження має початися автоматично os.remove(report.file.path) if os.path.exists(download_file_full_path): print('file was successfully downloaded') self.assertTrue(os.path.exists(download_file_full_path)) os.remove(download_file_full_path) else: print("file wasn't downloaded") # Сторінка має залишитись та сама self.check_passed_link(expected_regex=current_url) print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def test_get_recursive_path(self): root = DummyFolder().create_dummy_root_folder() f2 = DummyFolder().create_dummy_folder(parent=root) f3 = DummyFolder().create_dummy_folder(parent=f2) report = DummyFolder().create_dummy_report(parent=f3) patt = os.path.join('%s', '%s', '%s', '') expected = patt % (root.id, f2.id, f3.id) self.assertEqual(get_recursive_path(report), expected)
def test_get_subfolders(self): root = DummyFolder().create_dummy_root_folder() f2 = DummyFolder().create_dummy_folder(parent=root) f3 = DummyFolder().create_dummy_folder(parent=f2) f4 = DummyFolder().create_dummy_folder(parent=f2, name='f4') self.assertEqual(list(get_subfolders(root)), [f2]) self.assertEqual(list(get_subfolders(f2)), [f3, f4]) self.assertEqual(list(get_subfolders(f3)), [])
def setUp(self): self.dummy_user = self.create_dummy_user() self.add_user_cookie_to_browser(self.dummy_user) self.add_dummy_permission(self.dummy_user, codename='view_report', model='report') self.get_data_links_number() parent = DummyFolder().create_dummy_folder() # Для прикладу беремо цей файл: full_path = os.path.join(os.getcwd(), 'example.jpg') # повний шлях self.report = DummyFolder().create_dummy_report(parent=parent, id=1, path=full_path)
def test_error_message_if_parent_name_not_unique_together(self): parent = Folder.objects.get(id=1) DummyFolder().create_dummy_folder(parent=parent, name="double_name") # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Вибирає значення inputbox = self.browser.find_element_by_id('id_parent') all_options = inputbox.find_elements_by_tag_name("option") for option in all_options: if option.get_attribute('value') == "1": option.click() # Вводить у полі дані inputbox = self.browser.find_element_by_id('id_name') inputbox.send_keys('double_name') # Натискає ENTER inputbox.send_keys(Keys.ENTER) error = self.get_error_element(".errorlist") self.assertEqual(error.text, "Тека з таким Материнська тека та Тека вже існує.") print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def setUp(self): self.dummy_user = self.create_dummy_user() self.add_user_cookie_to_browser(self.dummy_user) self.add_dummy_permission(self.dummy_user, codename='add_folder', model='folder') DummyFolder().create_dummy_catalogue()
def test_form_validation_for_duplicate_fields_with_empty_parent(self): f1 = DummyFolder().create_dummy_folder(name='dummy-1') # Передаємо у форму такі ж значення parent і name: data = {'name': "dummy-1"} form = self.cls_form(data=data) self.assertFalse(form.is_valid()) self.assertEqual(form.errors['__all__'], ['Тека з таким Материнська тека та Тека вже існує.'])
def test_get_folders_tree_HTML(self): expected = '''<ul> <li id="1">dum_f_0 <ul> <li id="2">dum_f_0_0_0 <ul> <li id="3">dum_f_0_0_0_1_0 </li> <li id="4">dum_f_0_0_0_1_1 </li> </ul> </li> <li id="5">dum_f_0_0_1 <ul> <li id="6">dum_f_0_0_1_1_0 </li> <li id="7">dum_f_0_0_1_1_1 </li> </ul> </li> </ul> </li> </ul> ''' DummyFolder().create_dummy_catalogue() html = get_folders_tree_HTML(tab='') self.assertEqual(html, expected)
def test_wrap_ul(self): self.root = DummyFolder().create_dummy_root_folder() qs = Folder.objects.all() ul = wrap_ul(qs, tab='') soup = BeautifulSoup(ul, 'html.parser') self.assertEqual(soup.li['id'], "1") self.assertEqual(soup.li.string.strip(), "dummy_root_folder")
def setUp(self): # self.browser.implicitly_wait(20) self.dummy_user = self.create_dummy_user() DummyFolder().create_dummy_catalogue() DummyFlat().create_dummy_building() self.add_user_cookie_to_browser(self.dummy_user) self.data_links_number = 0 # кількість лінків, які приходять в шаблон з даними
def setUp(self): self.dummy_user = self.create_dummy_user() self.add_user_cookie_to_browser(self.dummy_user) DummyFolder().create_dummy_catalogue() DummyFlat().create_dummy_building() profile = self.create_dummy_profile(user=self.dummy_user) flat = DummyFlat().create_dummy_flat() profile.flat = flat profile.save()
def setUp(self): # Параметри, при яких декоратор пропускає до функції: user = DummyUser().create_dummy_user(username='******') user.has_perms = Mock() user.has_perms.return_value = True user2 = DummyUser().create_dummy_user(username='******') user2.has_perms = Mock() user2.has_perms.return_value = True root = DummyFolder().create_dummy_root_folder() object = DummyFolder().create_dummy_report(root, id=1, filename='report1', user=user) object2 = DummyFolder().create_dummy_report(root, id=2, filename='report2') model = Report request = RequestFactory() request.build_absolute_uri = Mock() request.build_absolute_uri.return_value = "" # path request.get_full_path = Mock() request.get_full_path.return_value = "" # path request.user = user view_func = Mock() view_func.return_value = 'passed' test_func = Mock() test_func.return_value = True self.user = user self.user2 = user2 self.object = object self.model = model self.request = request self.view_func = view_func self.test_func = test_func self.perm = 'can'
def test_visitor_can_update_report_file(self): parent = DummyFolder().create_dummy_folder(id=1) report = Report.objects.get(id=1) old_full_path = report.file.path # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Бачить у полі очікувану інформацію inputbox = self.browser.find_element_by_id('id_filename') self.assertEqual(inputbox.get_attribute('value'), report.filename) # Вводить нове значення # Для прикладу беремо цей файл: cwd = os.getcwd() # поточний каталог (в ньому є manage.py) full_path = os.path.join(cwd, 'example.txt') # повний шлях # Натискає кнопку Browse - емулюється шляхом посилання в цей елемент шляху до файла. inputbox = self.browser.find_element_by_css_selector('input[type=file]') inputbox.send_keys(full_path) # Натискає кнопку submit button = self.browser.find_element_by_css_selector('input[type=submit]') button.click() # Все збережено вірно? report = Report.objects.get(id=1) expected_parent = parent expected_filename = 'example.txt' with open(full_path, 'rb') as f: expected_file_content = f.read() self.assertEqual(report.parent, expected_parent) self.assertEqual(report.filename, expected_filename) self.assertEqual(report.file.read(), expected_file_content) # Час створення (до хвилини) співпадає з поточним? self.assertAlmostEqual(report.uploaded_on, now(), delta=timedelta(minutes=1)) report.file.close() # Втидаляємо старий файл, оскільки файлова система # записує новий файл під новим іменем: os.remove(old_full_path) # Має бути перехід на потрібну сторінку self.check_passed_link(expected_regex=report.get_absolute_url()) print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def test_get_subreports(self): root = DummyFolder().create_dummy_root_folder() f2 = DummyFolder().create_dummy_folder(parent=root) f3 = DummyFolder().create_dummy_folder(parent=f2) r2 = DummyFolder().create_dummy_report(parent=f2) r3 = DummyFolder().create_dummy_report(parent=f3) r4 = DummyFolder().create_dummy_report(parent=f3) self.assertEqual(list(get_subreports(root)), []) self.assertEqual(list(get_subreports(f2)), [r2]) self.assertEqual(list(get_subreports(f3)), [r3, r4])
def visit_page(self, file_name, expected_text=""): fileExt = os.path.splitext(file_name)[1] # Чи розширення цього файла входить до списку "previewable"? if expected_text: self.assertNotIn(fileExt, get_viewable_extension_list()) else: self.assertIn(fileExt, get_viewable_extension_list()) # Створюємо запис з цим файлом: full_path = os.path.join(os.getcwd(), file_name) # повний шлях self.report = DummyFolder().create_dummy_report(parent=self.parent, id=1, path=full_path) # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Бачить у полі очікувану інформацію div_box = self.browser.find_element_by_id('preview-box') self.assertEqual(div_box.text, expected_text)
def test_get_parents(self): root = DummyFolder().create_dummy_root_folder() f2 = DummyFolder().create_dummy_folder(parent=root) f3 = DummyFolder().create_dummy_folder(parent=f2) r1 = DummyFolder().create_dummy_report(parent=root) r2 = DummyFolder().create_dummy_report(parent=f2) r3 = DummyFolder().create_dummy_report(parent=f3) self.assertEqual(get_parents(root), []) self.assertEqual(get_parents(f2), [root]) self.assertEqual(get_parents(f3), [root, f2]) self.assertEqual(get_parents(r1), [root]) self.assertEqual(get_parents(r2), [root, f2]) self.assertEqual(get_parents(r3), [root, f2, f3])
def test_visitor_can_update_report_filename(self): parent = DummyFolder().create_dummy_folder(id=1) report = Report.objects.get(id=1) expected_parent = parent expected_filename = "new_file_name" expected_file = report.file expected_file_content = report.file.read() expected_upload_on = report.uploaded_on report.file.close() # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Бачить у полі очікувану інформацію inputbox = self.browser.find_element_by_id('id_filename') self.assertEqual(inputbox.get_attribute('value'), report.filename) # Видаляє з поля дані inputbox = self.browser.find_element_by_id('id_filename') inputbox.clear() # Вводить нове значення inputbox.send_keys(expected_filename) # Натискає кнопку submit button = self.browser.find_element_by_css_selector('input[type=submit]') button.click() # Все збережено вірно? report = Report.objects.get(id=1) self.assertEqual(report.parent, expected_parent) self.assertEqual(report.filename, expected_filename) self.assertEqual(report.file, expected_file) self.assertEqual(report.file.read(), expected_file_content) self.assertEqual(report.uploaded_on, expected_upload_on) report.file.close() # Має бути перехід на потрібну сторінку self.check_passed_link(expected_regex=report.get_absolute_url()) print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def test_error_message_if_parent_name_not_unique_together(self): parent = Folder.objects.get(id=1) DummyFolder().create_dummy_folder(parent=parent, name="double_name") # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Вводить у полі дані inputbox = self.browser.find_element_by_id('id_name') inputbox.send_keys('double_name') # Натискає кнопку submit button = self.browser.find_element_by_css_selector('input[type=submit]') button.click() error = self.get_error_element(".errorlist") self.assertEqual(error.text, "Тека з таким Материнська тека та Тека вже існує.") print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def test_response_for_download_zip_gives_proper_value_3(self): file2 = SimpleUploadedFile("file2.txt", b"file_content") report2 = DummyFolder().create_dummy_report(self.root, file=file2) zipFilename = "%s.zip" % self.root.name fn = ' filename="%s";' % transliterate(zipFilename) fns = " filename*=utf-8''%s;" % urlquote(zipFilename) expected_content_disposition = 'attachment' + fn + fns resp, zipFilename, msg = response_for_download_zip(self.root, 15) self.assertEqual(zipFilename, 'Тека файлів.zip') self.assertEqual(msg, 'Завеликий zip. Решту файлів відкинуто') self.assertEqual(resp.get('Content-Disposition'), expected_content_disposition) self.assertEqual(resp.get('Content-Length'), '232') self.assertEqual(resp.get('Content-Type'), 'application/zip') # self.assertEqual(resp.content, b'file_content') report2.file.delete()
def test_visitor_can_update_report_parent(self): new_parent = DummyFolder().create_dummy_folder(id=2) report = Report.objects.get(id=1) expected_parent = new_parent expected_filename = report.filename expected_file = report.file expected_file_content = report.file.read() expected_upload_on = report.uploaded_on report.file.close() # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Бачить у полі очікувану інформацію inputbox = self.browser.find_element_by_id('id_parent') all_options = inputbox.find_elements_by_tag_name("option") for option in all_options: if option.is_selected(): self.assertEqual(option.get_attribute('value'), '1') # Вибирає значення inputbox = self.browser.find_element_by_id('id_parent') self.choose_option_in_select(inputbox, val='2') # Натискає кнопку submit button = self.browser.find_element_by_css_selector('input[type=submit]') button.click() # Все збережено вірно? report = Report.objects.get(id=1) self.assertEqual(report.parent, expected_parent) self.assertEqual(report.filename, expected_filename) self.assertEqual(report.file, expected_file) self.assertEqual(report.file.read(), expected_file_content) self.assertEqual(report.uploaded_on, expected_upload_on) report.file.close() # Має бути перехід на потрібну сторінку self.check_passed_link(expected_regex=report.get_absolute_url()) print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def test_get_full_named_path(self): root = DummyFolder().create_dummy_root_folder() f2 = DummyFolder().create_dummy_folder(parent=root) f3 = DummyFolder().create_dummy_folder(parent=f2) r0 = DummyFolder().create_dummy_report(parent=root) r1 = DummyFolder().create_dummy_report(parent=root, filename="r1") r2 = DummyFolder().create_dummy_report(parent=f2, filename="r2") r3 = DummyFolder().create_dummy_report(parent=f3, filename="r3") self.assertEqual(get_full_named_path(root), "dummy_root_folder") self.assertEqual(get_full_named_path(f2), "dummy_root_folder/dummy_folder") self.assertEqual(get_full_named_path(f3), "dummy_root_folder/dummy_folder/dummy_folder") self.assertEqual(get_full_named_path(r0), "dummy_root_folder/--no-name--") self.assertEqual(get_full_named_path(r1), "dummy_root_folder/r1") self.assertEqual(get_full_named_path(r2), "dummy_root_folder/dummy_folder/r2") self.assertEqual(get_full_named_path(r3), "dummy_root_folder/dummy_folder/dummy_folder/r3")
def setUp(self): self.root = DummyFolder().create_dummy_root_folder() self.file = SimpleUploadedFile("file.txt", b"file_content") self.report = DummyFolder().create_dummy_report(self.root, file=self.file)
def test_full_named_path(self): r0 = DummyFolder().create_dummy_report(self.root) self.assertEqual(full_named_path(self.root), get_full_named_path(self.root)) self.assertEqual(full_named_path(r0), get_full_named_path(r0))
def test_iconpath(self): r0 = DummyFolder().create_dummy_report(self.root) self.assertEqual(iconpath(self.root), get_iconPathForFolder()) self.assertEqual(iconpath(self.report), get_iconPathByFileExt('.txt')) self.assertEqual(iconpath(r0), "") self.assertEqual(fileext(''), '')
def setUp(self): self.dummy_user = AnonymousUser() DummyFolder().create_dummy_catalogue() DummyFlat().create_dummy_building()
def setUp(self): self.dummy_user = self.create_dummy_user() self.add_user_cookie_to_browser(self.dummy_user) self.get_data_links_number() parent = DummyFolder().create_dummy_folder(id=1) DummyFolder().create_dummy_report(parent=parent, id=1, user=self.dummy_user)
def setUp(self): self.dummy_user = self.create_dummy_user() self.add_user_cookie_to_browser(self.dummy_user) parent = DummyFolder().create_dummy_folder(id=1) report = DummyFolder().create_dummy_report(parent=parent, id=1)
def test_saving_and_retrieving_files(self): root = DummyFolder().create_dummy_root_folder() file = SimpleUploadedFile("file.txt", b"file_content") expected = file.read() DummyFolder().create_dummy_report(root, file=file) saved_report = Report.objects.first() # Перевіряємо, чи збереглася первинна назва файла self.assertEqual(saved_report.filename, "file.txt") # Чи правильний фактичний шлях до файла basename = os.path.basename(saved_report.file.path) self.assertEqual(basename, "1.data") # Час створення (до секунди) співпадає з поточним? self.assertAlmostEqual(saved_report.uploaded_on, now(), delta=timedelta(minutes=1)) # Вмісти збереженого файда і первинного співпадають? self.assertEqual(saved_report.file.read(), expected) # Видляємо з диска (бо файл по-чесному записався в /uploads/folders/0/1.data) saved_report.file.delete()