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.
tui-rsync/features/steps/creating_source_steps.py

59 lines
1.7 KiB

from behave import given, when, then
from peewee import IntegrityError
from tui_rsync.models.models import create_tables
from tui_rsync.models.models import Source
import json
@given('the label "{label}"')
def given_source_label(context, label):
create_tables()
context.label = label
@given('the path "{source_path}"')
def given_source_path(context, source_path):
context.source_path = source_path
@given('the destinations {destinations_json}')
def given_source_destinations(context, destinations_json):
context.destinations = json.loads(destinations_json)
@given('the arguments "{arguments}"')
def given_source_arguments(context, arguments):
context.args = arguments
if arguments == "<empty>":
context.args = ""
@when('I add the source')
def add_source(context):
try:
context.source = Source.create_save(
context.label,
context.source_path,
context.destinations,
context.args,
)
context.source = Source.get_source(context.label)
except IntegrityError:
context.exception_raised = True
else:
context.exception_raised = False
def compare_destinations(actual:list, expected: list[str]) -> bool:
actual_path_set = {destionation.path for destionation in actual}
return actual_path_set == set(expected)
@then('the source should be added successfully')
def path_has_added(context):
assert context.exception_raised == False
assert context.source.label == context.label
assert context.source.source.path == context.source_path
assert compare_destinations(
context.source.get_destinations(),
context.destinations
)
assert context.source.args.command == context.args