parent
0ebfb7fcb7
commit
327925c7ba
14 changed files with 199 additions and 44 deletions
@ -1,3 +0,0 @@ |
|||||||
from django.test import TestCase |
|
||||||
|
|
||||||
# Create your tests here. |
|
||||||
@ -0,0 +1,129 @@ |
|||||||
|
import time |
||||||
|
|
||||||
|
from factory.faker import Faker |
||||||
|
from selenium.common.exceptions import TimeoutException |
||||||
|
from selenium.webdriver.common.by import By |
||||||
|
|
||||||
|
|
||||||
|
class TestContentMixin: |
||||||
|
content_data = [] |
||||||
|
autosave = True |
||||||
|
|
||||||
|
def check_auto_saving(self): |
||||||
|
if not self.autosave: |
||||||
|
return |
||||||
|
raise NotImplementedError() |
||||||
|
|
||||||
|
def check_content_auto_saving(self, object): |
||||||
|
if not self.autosave: |
||||||
|
return |
||||||
|
print('Check content autosaving',) |
||||||
|
self.assertEqual(object.content.all().count(), len(self.content_data)) |
||||||
|
for i, item in enumerate(object.content.all().order_by('position', '-created_at',)): |
||||||
|
item_data = self.content_data[i].get('data') |
||||||
|
for key, value in item_data.items(): |
||||||
|
print('real obj field value:', getattr(item, key, None)) |
||||||
|
print('expected value:', value) |
||||||
|
self.assertEqual(getattr(item, key), value) |
||||||
|
print('OK') |
||||||
|
|
||||||
|
def check_content(self, inside_el=None): |
||||||
|
print('Check content block') |
||||||
|
self.object_data['content'] = self.content_data |
||||||
|
block_add_el = self.wait_elem_name('block-add', inside_el) |
||||||
|
open_el = self.wait_elem_name('block-add-open', block_add_el) |
||||||
|
self.assertRaises(TimeoutException, lambda: self.wait_elem_name('block-add-close', block_add_el)) |
||||||
|
open_el.click() |
||||||
|
time.sleep(1) |
||||||
|
close_el = self.wait_elem_name('block-add-close', block_add_el) |
||||||
|
|
||||||
|
block_text_el = self.wait_elem_name('block-add-block-text', block_add_el) |
||||||
|
block_text_el.click() |
||||||
|
time.sleep(0.5) |
||||||
|
self.check_block_text(inside_el) |
||||||
|
|
||||||
|
block_image_el = self.wait_elem_name('block-add-block-image', block_add_el) |
||||||
|
block_image_el.click() |
||||||
|
time.sleep(0.5) |
||||||
|
self.check_block_image(inside_el) |
||||||
|
|
||||||
|
block_image_text_el = self.wait_elem_name('block-add-block-image-text', block_add_el) |
||||||
|
block_image_text_el.click() |
||||||
|
time.sleep(0.5) |
||||||
|
self.check_block_image_text(inside_el) |
||||||
|
|
||||||
|
block_images_el = self.wait_elem_name('block-add-block-images', block_add_el) |
||||||
|
block_images_el.click() |
||||||
|
time.sleep(0.5) |
||||||
|
self.check_block_images(inside_el) |
||||||
|
|
||||||
|
block_video_el = self.wait_elem_name('block-add-block-video', block_add_el) |
||||||
|
block_video_el.click() |
||||||
|
time.sleep(0.5) |
||||||
|
self.check_block_video(inside_el) |
||||||
|
|
||||||
|
def check_block_text(self, inside_el=None): |
||||||
|
print('Check block text') |
||||||
|
time.sleep(1) |
||||||
|
block_obj = {'type': 'text', 'data': {}} |
||||||
|
block_el = self.wait_elem_name('block-text', inside_el) |
||||||
|
title_el = self.wait_elem_name('block-text-title', block_el) |
||||||
|
text_el = self.wait_elem_name('block-text-text-wrap', block_el) |
||||||
|
text_el.find_element( |
||||||
|
By.XPATH, './/div[contains(@class, "redactor-layer")][@contenteditable]') |
||||||
|
self.content_data.append(block_obj) |
||||||
|
|
||||||
|
title = Faker('sentence', nb_words=6).generate({}) |
||||||
|
title_el.send_keys(title) |
||||||
|
block_obj['data']['title'] = title |
||||||
|
text = Faker('sentence', nb_words=50).generate({}) |
||||||
|
self.driver.execute_script("arguments[0].click();", text_el) |
||||||
|
self.driver.execute_script("arguments[0].innerHtml = arguments[1];", text_el, text) |
||||||
|
self.driver.execute_script("arguments[0].dispatchEvent(new Event('change'));", text_el) |
||||||
|
# text_el.send_keys(text) |
||||||
|
block_obj['data']['text'] = '<p>%s</p>' % text |
||||||
|
self.check_auto_saving() |
||||||
|
|
||||||
|
def check_block_image(self, inside_el=None): |
||||||
|
print('Check block image') |
||||||
|
time.sleep(1) |
||||||
|
block_obj = {'type': 'image', 'data': {}} |
||||||
|
block_el = self.wait_elem_name('block-image', inside_el) |
||||||
|
title_el = self.wait_elem_name('block-image-title', block_el) |
||||||
|
image_el = self.wait_elem_name('block-image-image', block_el) |
||||||
|
self.content_data.append(block_obj) |
||||||
|
|
||||||
|
title = Faker('sentence', nb_words=6).generate({}) |
||||||
|
title_el.send_keys(title) |
||||||
|
block_obj['data']['title'] = title |
||||||
|
# TODO: check image upload |
||||||
|
self.check_auto_saving() |
||||||
|
|
||||||
|
def check_block_image_text(self, inside_el=None): |
||||||
|
print('Check block image-text') |
||||||
|
time.sleep(1) |
||||||
|
block_obj = {'type': 'image-text', 'data': {}} |
||||||
|
block_el = self.wait_elem_name('block-image-text', inside_el) |
||||||
|
title_el = self.wait_elem_name('block-image-text-title', block_el) |
||||||
|
text_el = self.wait_elem_name('block-image-text-text-wrap', block_el).find_element( |
||||||
|
By.XPATH, './/div[contains(@class, "redactor-layer")][@contenteditable]') |
||||||
|
image_el = self.wait_elem_name('block-image-text-image', block_el) |
||||||
|
self.content_data.append(block_obj) |
||||||
|
|
||||||
|
title = Faker('sentence', nb_words=6).generate({}) |
||||||
|
title_el.send_keys(title) |
||||||
|
block_obj['data']['title'] = title |
||||||
|
text = Faker('sentence', nb_words=50).generate({}) |
||||||
|
self.driver.execute_script("arguments[0].click();", text_el) |
||||||
|
self.driver.execute_script("arguments[0].innerHtml = arguments[1];", text_el, text) |
||||||
|
self.driver.execute_script("arguments[0].dispatchEvent(new Event('change'));", text_el) |
||||||
|
# text_el.send_keys(text) |
||||||
|
block_obj['data']['text'] = '<p>%s</p>' % text |
||||||
|
# TODO: check image upload |
||||||
|
self.check_auto_saving() |
||||||
|
|
||||||
|
def check_block_images(self, inside_el=None): |
||||||
|
print('Check block images') |
||||||
|
|
||||||
|
def check_block_video(self, inside_el=None): |
||||||
|
print('Check block images') |
||||||
Loading…
Reference in new issue