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