You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
5.5 KiB
144 lines
5.5 KiB
import time
|
|
|
|
from factory.faker import Faker
|
|
from selenium.common.exceptions import TimeoutException
|
|
from selenium.webdriver.common.by import By
|
|
from django.utils.html import strip_tags
|
|
|
|
|
|
class TestContentMixin:
|
|
content_data = []
|
|
|
|
def check_saving(self):
|
|
if not self.autosave:
|
|
return
|
|
raise NotImplementedError()
|
|
|
|
def check_content_saving(self, obj):
|
|
print('Check content saving',)
|
|
self.assertEqual(obj.content.all().count(), len(self.content_data))
|
|
for i, item in enumerate(obj.content.all().order_by('position', '-created_at',)):
|
|
item_data = self.content_data[i].get('data')
|
|
for key, value in item_data.items():
|
|
if key == 'txt':
|
|
self.assertEqual(strip_tags(getattr(item, key)), value)
|
|
else:
|
|
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(0.5)
|
|
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)
|
|
|
|
open_el.click()
|
|
time.sleep(0.5)
|
|
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)
|
|
|
|
open_el.click()
|
|
time.sleep(0.5)
|
|
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)
|
|
|
|
open_el.click()
|
|
time.sleep(0.5)
|
|
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)
|
|
|
|
open_el.click()
|
|
time.sleep(0.5)
|
|
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).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({})
|
|
text_el.click()
|
|
text_el.send_keys(text)
|
|
block_obj['data']['txt'] = text
|
|
self.check_saving()
|
|
|
|
def check_block_image(self, inside_el=None):
|
|
return
|
|
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_saving()
|
|
|
|
def check_block_image_text(self, inside_el=None):
|
|
return
|
|
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({})
|
|
text_el.click()
|
|
text_el.send_keys(text)
|
|
block_obj['data']['txt'] = text
|
|
# TODO: check image upload
|
|
self.check_saving()
|
|
|
|
def check_block_images(self, inside_el=None):
|
|
print('Check block images')
|
|
time.sleep(1)
|
|
block_obj = {'type': 'images', 'data': {}}
|
|
self.content_data.append(block_obj)
|
|
# block_el = self.wait_elem_name('block-images', inside_el)
|
|
# title_el = self.wait_elem_name('block-images-title', block_el)
|
|
# title = Faker('sentence', nb_words=6).generate({})
|
|
# title_el.send_keys(title)
|
|
# block_obj['data']['title'] = title
|
|
|
|
self.check_saving()
|
|
|
|
def check_block_video(self, inside_el=None):
|
|
return
|
|
print('Check block images')
|
|
|