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

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')