code
unknown
python
3 years ago
3.3 kB
9
Indexable
import time
import os
from rich.prompt import IntPrompt, Confirm
from rich.console import Console
from typing import List
from rich.progress import track
from ui_automation.scripts.generate_tests.utils.theme import custom_theme
from ui_automation.scripts.generate_tests.utils.types import PromptInputs, FilePathAction
console = Console(theme=custom_theme)
def check_if_file_already_exist(test_name):
file_path = os.path.join('src', 'automation', test_name)
if os.path.exists(path=file_path):
return True
return False
def ask_test_type():
tests_types = ['UI Test']
x = [f'{n}' for n in range(1, len(tests_types))]
console.print("🧪 What is your test type?", style='question')
console.print("\n".join([f'({index}) {item}' for index, item in enumerate(tests_types, start=1)]))
input_message = "Your choice"
user_input = IntPrompt.ask(input_message, choices=[f'{n}' for n in range(1, len(tests_types) + 1)])
return user_input
def ask_test_name():
console.print("🧪 What is your test name? separate by underscore", style='question')
input_message = 'Your test name: '
while True:
user_input = console.input(input_message)
if not user_input:
console.print(":face_with_thermometer: [prompt.invalid]Test name is required")
elif check_if_file_already_exist(user_input):
console.print(":face_with_thermometer: [prompt.invalid]Test already exist, please choose other name")
else:
break
return user_input
def ask_abstract_class_name(test_name: str):
abstract_class_name = ''.join(x.title() for x in test_name.split('_'))
console.print(
f'🧪 Your abstract class name is [bold #00FFD1]{abstract_class_name}[/], enter a new name or press enter to '
f'keep the name', style='question')
user_input = console.input()
if user_input != '':
abstract_class_name = user_input
return abstract_class_name
def ask_approve_files_creation(files_list: List):
console.print("\n".join([f'[green bold]{x.type.value}[/] [magenta]{x.path}[magenta]' for x in files_list]))
input_message = "Create test files?:"
user_input = Confirm.ask(input_message, default=True)
return user_input
def ask_is_test_flow():
console.print("🧪 Is your test is part of flow?", style='question')
user_input = Confirm.ask(default=False)
return user_input
def ask_is_contains_test_data():
console.print("🧪 Is your test contains test data?", style='question')
user_input = Confirm.ask(default=False)
return user_input
def prompt_message_inputs():
console.rule("🧪🧪 Test Generator 🧪🧪", style='#E3FDFD')
test_type = ask_test_type()
test_name = ask_test_name()
abstract_class_name = ask_abstract_class_name(test_name)
is_contains_test_data = ask_is_contains_test_data()
prompt_inputs = PromptInputs(test_type,test_name,abstract_class_name,is_contains_test_data)
return prompt_inputs
def show_processing_files_message():
for i in track(range(3), description="Creating files..."):
time.sleep(1) # Simulate work being done
def show_file_action_message(file: FilePathAction):
console.print(f'✅ {file.type.value} file: [magenta]{file.path}[/]', style='print_file')
Editor is loading...