in playwright_tests/flows/explore_articles_flows/article_flows/add_kb_article_flow.py [0:0]
def _submit_simple_kb_article(self,
article_title=None,
article_slug=None,
article_category=None,
article_keyword=None,
allow_discussion=True,
allow_translations=True,
selected_product=True,
selected_topics=True,
search_summary=None,
article_content=None,
article_content_image='',
submit_article=True,
is_template=False,
expiry_date=None,
restricted_to_groups: list[str] = None,
single_group="",
approve_first_revision=False,
ready_for_localization=False
) -> dict[str, Any]:
self.utilities.navigate_to_link(KBArticlePageMessages.CREATE_NEW_KB_ARTICLE_STAGE_URL)
kb_article_test_data = self.utilities.kb_article_test_data
if restricted_to_groups is not None:
for group in restricted_to_groups:
self.submit_kb_article_page.add_and_select_restrict_visibility_group(group)
if single_group != "":
self.submit_kb_article_page.add_and_select_restrict_visibility_group(single_group)
if article_title is None:
if is_template:
kb_article_title = (kb_article_test_data["kb_template_title"] + self.utilities.
generate_random_number(0, 5000))
else:
kb_article_title = (kb_article_test_data["kb_article_title"] + self.utilities.
generate_random_number(0, 5000))
else:
kb_article_title = article_title
if kb_article_title != "":
self.submit_kb_article_page.add_text_to_article_form_title_field(
kb_article_title
)
if (article_slug is not None) and (article_slug != ""):
kb_article_slug = article_slug
self.submit_kb_article_page.add_text_to_article_slug_field(kb_article_slug)
if article_category is None:
if is_template:
article_category = kb_article_test_data["kb_template_category"]
self.submit_kb_article_page.select_category_option_by_text(
article_category
)
else:
article_category = kb_article_test_data["category_options"]
self.submit_kb_article_page.select_category_option_by_text(article_category)
else:
self.submit_kb_article_page.select_category_option_by_text(article_category)
if not allow_translations:
self.submit_kb_article_page.check_allow_translations_checkbox()
product = kb_article_test_data["relevant_to_product"]
if selected_product is True:
self.submit_kb_article_page.click_on_a_particular_product(product)
article_topic = [
kb_article_test_data["selected_parent_topic"],
kb_article_test_data["selected_child_topic"]
]
# Adding Article topic
if selected_topics is True:
self.submit_kb_article_page.click_on_a_particular_parent_topic_checkbox(
article_topic[0]
)
self.submit_kb_article_page.click_on_a_particular_child_topic_checkbox(
article_topic[0],
article_topic[1],
)
# Interacting with Allow Discussion checkbox
if (allow_discussion is True) and (
self.submit_kb_article_page
.is_allow_discussion_on_article_checkbox_checked() is False):
self.submit_kb_article_page.check_allow_discussion_on_article_checkbox()
elif (allow_discussion is False) and (
self.submit_kb_article_page
.is_allow_discussion_on_article_checkbox_checked() is True):
self.submit_kb_article_page.check_allow_discussion_on_article_checkbox()
self.submit_kb_article_page.add_text_to_related_documents_field(
kb_article_test_data["related_documents"])
keyword = None
if article_keyword is None:
self.submit_kb_article_page.add_text_to_keywords_field(
kb_article_test_data["keywords"])
keyword = kb_article_test_data["keywords"]
else:
self.submit_kb_article_page.add_text_to_keywords_field(article_keyword)
keyword = article_keyword
summary = None
if search_summary is None:
self.submit_kb_article_page.add_text_to_search_result_summary_field(
kb_article_test_data["search_result_summary"]
)
summary = kb_article_test_data["search_result_summary"]
else:
self.submit_kb_article_page.add_text_to_search_result_summary_field(
search_summary
)
summary = search_summary
if not self.submit_kb_article_page.is_content_textarea_displayed():
self.submit_kb_article_page.click_on_toggle_syntax_highlight_option()
if article_content is None:
self.submit_kb_article_page.add_text_to_content_textarea(
kb_article_test_data["article_content"])
else:
self.submit_kb_article_page.add_text_to_content_textarea(article_content)
if article_content_image != '':
self.submit_kb_article_page.click_on_insert_media_button()
self.add_media_flow.add_media_to_kb_article(
file_type="Image",
file_name=article_content_image
)
if expiry_date is not None:
self.submit_kb_article_page.add_text_to_expiry_date_field(expiry_date)
# We need to evaluate in order to fetch the slug field value
slug = self.page.evaluate(
'document.getElementById("id_slug").value'
)
first_revision_id = None
if submit_article is True:
# If title and slug are empty we are not reaching the description field.
if ((article_title != '') and (article_slug != '') and (
search_summary != "") and (article_content != "")):
self.submit_kb_article_page.click_on_submit_for_review_button()
self.submit_kb_article_page.add_text_to_changes_description_field(
kb_article_test_data["changes_description"]
)
self.submit_kb_article_page.click_on_changes_submit_button()
try:
first_revision_id = self.kb_article_show_history_page.get_last_revision_id()
except IndexError:
print("Chances are that the form was not submitted successfully")
else:
self.submit_kb_article_page.click_on_submit_for_review_button()
article_url = self.submit_kb_article_page.get_article_page_url()
if approve_first_revision:
self.kb_article_page.click_on_show_history_option()
if ready_for_localization:
self.approve_kb_revision(revision_id=first_revision_id, ready_for_l10n=True)
else:
self.approve_kb_revision(revision_id=first_revision_id)
return {"article_title": kb_article_title,
"article_content": kb_article_test_data["article_content"],
"article_content_html": kb_article_test_data['article_content_html_rendered'],
"article_slug": slug,
"article_child_topic": kb_article_test_data["selected_child_topic"],
"article_category": article_category,
"article_product": product,
"article_topic": article_topic,
"article_review_description": kb_article_test_data["changes_description"],
"keyword": keyword,
"search_results_summary": summary,
"expiry_date": kb_article_test_data["expiry_date"],
"article_url": article_url,
"first_revision_id": first_revision_id
}